@eric-emg/symphiq-components 1.2.35 → 1.2.37

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.
@@ -5,7 +5,7 @@ import { Injectable, signal, input, ChangeDetectionStrategy, Component, output,
5
5
  import { BehaviorSubject } from 'rxjs';
6
6
  import * as i1 from '@angular/common';
7
7
  import { NgClass, CommonModule } from '@angular/common';
8
- import * as i5 from '@angular/forms';
8
+ import * as i6 from '@angular/forms';
9
9
  import { FormsModule } from '@angular/forms';
10
10
  import { DomSanitizer } from '@angular/platform-browser';
11
11
  import { trigger, transition, style, animate } from '@angular/animations';
@@ -163,23 +163,45 @@ class TooltipService {
163
163
  content: null,
164
164
  position: 'top',
165
165
  targetRect: null,
166
- visible: false
166
+ visible: false,
167
+ scrollContainer: null,
168
+ checkHideCallback: undefined
167
169
  });
168
170
  this.tooltipState$ = this.tooltipState.asObservable();
171
+ this.scrollContainer = null;
172
+ this.isTooltipHovered = false;
169
173
  }
170
- show(type, content, targetRect, position = 'top', mousePosition) {
174
+ setScrollContainer(container) {
175
+ this.scrollContainer = container;
176
+ }
177
+ setTooltipHovered(hovered) {
178
+ this.isTooltipHovered = hovered;
179
+ }
180
+ isHoveredOverTooltip() {
181
+ return this.isTooltipHovered;
182
+ }
183
+ triggerHideCheck() {
184
+ const callback = this.tooltipState.value.checkHideCallback;
185
+ if (callback) {
186
+ callback();
187
+ }
188
+ }
189
+ show(type, content, targetRect, position = 'top', mousePosition, checkHideCallback) {
171
190
  // Auto-adjust position if too close to screen edges
172
191
  let adjustedPosition = position;
173
192
  // Use different thresholds based on tooltip type
174
193
  // Insight tooltips can be quite tall, so need more space
175
194
  const HORIZONTAL_THRESHOLD = 200;
176
195
  const VERTICAL_THRESHOLD = type === 'insight' ? 350 : 200;
196
+ // Get viewport dimensions - use scroll container if available, otherwise window
197
+ const viewportWidth = this.scrollContainer?.clientWidth || window.innerWidth;
198
+ const viewportHeight = this.scrollContainer?.clientHeight || window.innerHeight;
177
199
  // Check left edge
178
200
  if (position === 'left' && targetRect.left < HORIZONTAL_THRESHOLD) {
179
201
  adjustedPosition = 'right';
180
202
  }
181
203
  // Check right edge
182
- if (position === 'right' && (window.innerWidth - targetRect.right) < HORIZONTAL_THRESHOLD) {
204
+ if (position === 'right' && (viewportWidth - targetRect.right) < HORIZONTAL_THRESHOLD) {
183
205
  adjustedPosition = 'left';
184
206
  }
185
207
  // Check top edge
@@ -187,12 +209,12 @@ class TooltipService {
187
209
  adjustedPosition = 'bottom';
188
210
  }
189
211
  // Check bottom edge - prioritize flipping to top if not enough space
190
- if (position === 'bottom' && (window.innerHeight - targetRect.bottom) < VERTICAL_THRESHOLD) {
212
+ if (position === 'bottom' && (viewportHeight - targetRect.bottom) < VERTICAL_THRESHOLD) {
191
213
  adjustedPosition = 'top';
192
214
  }
193
215
  // Smart auto-detection for 'top' position tooltips near bottom
194
216
  if (position === 'top') {
195
- const spaceBelow = window.innerHeight - targetRect.bottom;
217
+ const spaceBelow = viewportHeight - targetRect.bottom;
196
218
  const spaceAbove = targetRect.top;
197
219
  // If more space above and not enough space below, keep it on top
198
220
  // If more space below, switch to bottom
@@ -203,15 +225,27 @@ class TooltipService {
203
225
  adjustedPosition = 'bottom';
204
226
  }
205
227
  }
206
- this.tooltipState.next({ type, content, position: adjustedPosition, targetRect, mousePosition, visible: true });
228
+ this.tooltipState.next({
229
+ type,
230
+ content,
231
+ position: adjustedPosition,
232
+ targetRect,
233
+ mousePosition,
234
+ visible: true,
235
+ scrollContainer: this.scrollContainer,
236
+ checkHideCallback
237
+ });
207
238
  }
208
239
  hide() {
240
+ this.isTooltipHovered = false;
209
241
  this.tooltipState.next({
210
242
  type: null,
211
243
  content: null,
212
244
  position: 'top',
213
245
  targetRect: null,
214
- visible: false
246
+ visible: false,
247
+ scrollContainer: this.scrollContainer,
248
+ checkHideCallback: undefined
215
249
  });
216
250
  }
217
251
  updatePosition(targetRect) {
@@ -1456,6 +1490,11 @@ class TooltipDirective {
1456
1490
  this.isHovered.set(false);
1457
1491
  this.scheduleHide();
1458
1492
  }
1493
+ onMouseEnterAgain() {
1494
+ // If user returns to element while tooltip is still visible, cancel hide
1495
+ this.clearHideTimeout();
1496
+ this.isHovered.set(true);
1497
+ }
1459
1498
  onFocus() {
1460
1499
  this.clearHideTimeout();
1461
1500
  this.isHovered.set(true);
@@ -1475,14 +1514,17 @@ class TooltipDirective {
1475
1514
  const position = this.tooltipPosition();
1476
1515
  if (content && this.isHovered()) {
1477
1516
  const mousePos = position === 'auto' ? { x: this.mouseX, y: this.mouseY } : undefined;
1478
- this.tooltipService.show(type, content, rect, position, mousePos);
1517
+ // Pass a callback that the tooltip can use to trigger hide checks
1518
+ const checkHideCallback = () => this.scheduleHide();
1519
+ this.tooltipService.show(type, content, rect, position, mousePos, checkHideCallback);
1479
1520
  }
1480
1521
  }, this.tooltipDelay());
1481
1522
  }
1482
1523
  scheduleHide() {
1483
1524
  this.clearHideTimeout();
1484
1525
  this.hideTimeout = setTimeout(() => {
1485
- if (!this.isHovered()) {
1526
+ // Only hide if neither the element nor the tooltip is hovered
1527
+ if (!this.isHovered() && !this.tooltipService.isHoveredOverTooltip()) {
1486
1528
  this.tooltipService.hide();
1487
1529
  }
1488
1530
  }, 100);
@@ -1506,7 +1548,7 @@ class TooltipDirective {
1506
1548
  }
1507
1549
  static { this.ɵfac = function TooltipDirective_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || TooltipDirective)(); }; }
1508
1550
  static { this.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: TooltipDirective, selectors: [["", "libSymphiqTooltip", ""]], hostBindings: function TooltipDirective_HostBindings(rf, ctx) { if (rf & 1) {
1509
- i0.ɵɵlistener("mouseenter", function TooltipDirective_mouseenter_HostBindingHandler($event) { return ctx.onMouseEnter($event); })("mousemove", function TooltipDirective_mousemove_HostBindingHandler($event) { return ctx.onMouseMove($event); })("mouseleave", function TooltipDirective_mouseleave_HostBindingHandler() { return ctx.onMouseLeave(); })("focus", function TooltipDirective_focus_HostBindingHandler() { return ctx.onFocus(); })("blur", function TooltipDirective_blur_HostBindingHandler() { return ctx.onBlur(); });
1551
+ i0.ɵɵlistener("mouseenter", function TooltipDirective_mouseenter_HostBindingHandler() { return ctx.onMouseEnterAgain(); })("mousemove", function TooltipDirective_mousemove_HostBindingHandler($event) { return ctx.onMouseMove($event); })("mouseleave", function TooltipDirective_mouseleave_HostBindingHandler() { return ctx.onMouseLeave(); })("focus", function TooltipDirective_focus_HostBindingHandler() { return ctx.onFocus(); })("blur", function TooltipDirective_blur_HostBindingHandler() { return ctx.onBlur(); });
1510
1552
  } }, inputs: { symphiqTooltip: [1, "libSymphiqTooltip", "symphiqTooltip"], tooltipType: [1, "tooltipType"], tooltipPosition: [1, "tooltipPosition"], tooltipDelay: [1, "tooltipDelay"] } }); }
1511
1553
  }
1512
1554
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TooltipDirective, [{
@@ -1524,6 +1566,9 @@ class TooltipDirective {
1524
1566
  }], onMouseLeave: [{
1525
1567
  type: HostListener,
1526
1568
  args: ['mouseleave']
1569
+ }], onMouseEnterAgain: [{
1570
+ type: HostListener,
1571
+ args: ['mouseenter']
1527
1572
  }], onFocus: [{
1528
1573
  type: HostListener,
1529
1574
  args: ['focus']
@@ -10778,110 +10823,110 @@ const _c0$6 = () => [];
10778
10823
  function TooltipContainerComponent_Conditional_0_Case_3_Conditional_0_Template(rf, ctx) { if (rf & 1) {
10779
10824
  i0.ɵɵelement(0, "symphiq-metric-value-tooltip", 6);
10780
10825
  } if (rf & 2) {
10781
- const ctx_r0 = i0.ɵɵnextContext(3);
10782
- i0.ɵɵproperty("content", ctx_r0.metricContent())("isLightMode", ctx_r0.isLightMode());
10826
+ const ctx_r1 = i0.ɵɵnextContext(3);
10827
+ i0.ɵɵproperty("content", ctx_r1.metricContent())("isLightMode", ctx_r1.isLightMode());
10783
10828
  } }
10784
10829
  function TooltipContainerComponent_Conditional_0_Case_3_Template(rf, ctx) { if (rf & 1) {
10785
10830
  i0.ɵɵconditionalCreate(0, TooltipContainerComponent_Conditional_0_Case_3_Conditional_0_Template, 1, 2, "symphiq-metric-value-tooltip", 6);
10786
10831
  } if (rf & 2) {
10787
- const ctx_r0 = i0.ɵɵnextContext(2);
10788
- i0.ɵɵconditional(ctx_r0.metricContent() ? 0 : -1);
10832
+ const ctx_r1 = i0.ɵɵnextContext(2);
10833
+ i0.ɵɵconditional(ctx_r1.metricContent() ? 0 : -1);
10789
10834
  } }
10790
10835
  function TooltipContainerComponent_Conditional_0_Case_4_Conditional_0_Template(rf, ctx) { if (rf & 1) {
10791
10836
  i0.ɵɵelement(0, "symphiq-status-badge-tooltip", 6);
10792
10837
  } if (rf & 2) {
10793
- const ctx_r0 = i0.ɵɵnextContext(3);
10794
- i0.ɵɵproperty("content", ctx_r0.statusContent())("isLightMode", ctx_r0.isLightMode());
10838
+ const ctx_r1 = i0.ɵɵnextContext(3);
10839
+ i0.ɵɵproperty("content", ctx_r1.statusContent())("isLightMode", ctx_r1.isLightMode());
10795
10840
  } }
10796
10841
  function TooltipContainerComponent_Conditional_0_Case_4_Template(rf, ctx) { if (rf & 1) {
10797
10842
  i0.ɵɵconditionalCreate(0, TooltipContainerComponent_Conditional_0_Case_4_Conditional_0_Template, 1, 2, "symphiq-status-badge-tooltip", 6);
10798
10843
  } if (rf & 2) {
10799
- const ctx_r0 = i0.ɵɵnextContext(2);
10800
- i0.ɵɵconditional(ctx_r0.statusContent() ? 0 : -1);
10844
+ const ctx_r1 = i0.ɵɵnextContext(2);
10845
+ i0.ɵɵconditional(ctx_r1.statusContent() ? 0 : -1);
10801
10846
  } }
10802
10847
  function TooltipContainerComponent_Conditional_0_Case_5_Conditional_0_Template(rf, ctx) { if (rf & 1) {
10803
10848
  i0.ɵɵelement(0, "symphiq-trend-indicator-tooltip", 6);
10804
10849
  } if (rf & 2) {
10805
- const ctx_r0 = i0.ɵɵnextContext(3);
10806
- i0.ɵɵproperty("content", ctx_r0.trendContent())("isLightMode", ctx_r0.isLightMode());
10850
+ const ctx_r1 = i0.ɵɵnextContext(3);
10851
+ i0.ɵɵproperty("content", ctx_r1.trendContent())("isLightMode", ctx_r1.isLightMode());
10807
10852
  } }
10808
10853
  function TooltipContainerComponent_Conditional_0_Case_5_Template(rf, ctx) { if (rf & 1) {
10809
10854
  i0.ɵɵconditionalCreate(0, TooltipContainerComponent_Conditional_0_Case_5_Conditional_0_Template, 1, 2, "symphiq-trend-indicator-tooltip", 6);
10810
10855
  } if (rf & 2) {
10811
- const ctx_r0 = i0.ɵɵnextContext(2);
10812
- i0.ɵɵconditional(ctx_r0.trendContent() ? 0 : -1);
10856
+ const ctx_r1 = i0.ɵɵnextContext(2);
10857
+ i0.ɵɵconditional(ctx_r1.trendContent() ? 0 : -1);
10813
10858
  } }
10814
10859
  function TooltipContainerComponent_Conditional_0_Case_6_Conditional_0_Template(rf, ctx) { if (rf & 1) {
10815
10860
  i0.ɵɵelement(0, "symphiq-priority-badge-tooltip", 6);
10816
10861
  } if (rf & 2) {
10817
- const ctx_r0 = i0.ɵɵnextContext(3);
10818
- i0.ɵɵproperty("content", ctx_r0.priorityContent())("isLightMode", ctx_r0.isLightMode());
10862
+ const ctx_r1 = i0.ɵɵnextContext(3);
10863
+ i0.ɵɵproperty("content", ctx_r1.priorityContent())("isLightMode", ctx_r1.isLightMode());
10819
10864
  } }
10820
10865
  function TooltipContainerComponent_Conditional_0_Case_6_Template(rf, ctx) { if (rf & 1) {
10821
10866
  i0.ɵɵconditionalCreate(0, TooltipContainerComponent_Conditional_0_Case_6_Conditional_0_Template, 1, 2, "symphiq-priority-badge-tooltip", 6);
10822
10867
  } if (rf & 2) {
10823
- const ctx_r0 = i0.ɵɵnextContext(2);
10824
- i0.ɵɵconditional(ctx_r0.priorityContent() ? 0 : -1);
10868
+ const ctx_r1 = i0.ɵɵnextContext(2);
10869
+ i0.ɵɵconditional(ctx_r1.priorityContent() ? 0 : -1);
10825
10870
  } }
10826
10871
  function TooltipContainerComponent_Conditional_0_Case_7_Conditional_0_Template(rf, ctx) { if (rf & 1) {
10827
10872
  i0.ɵɵelement(0, "symphiq-badge-tooltip", 6);
10828
10873
  } if (rf & 2) {
10829
- const ctx_r0 = i0.ɵɵnextContext(3);
10830
- i0.ɵɵproperty("content", ctx_r0.badgeContent())("isLightMode", ctx_r0.isLightMode());
10874
+ const ctx_r1 = i0.ɵɵnextContext(3);
10875
+ i0.ɵɵproperty("content", ctx_r1.badgeContent())("isLightMode", ctx_r1.isLightMode());
10831
10876
  } }
10832
10877
  function TooltipContainerComponent_Conditional_0_Case_7_Template(rf, ctx) { if (rf & 1) {
10833
10878
  i0.ɵɵconditionalCreate(0, TooltipContainerComponent_Conditional_0_Case_7_Conditional_0_Template, 1, 2, "symphiq-badge-tooltip", 6);
10834
10879
  } if (rf & 2) {
10835
- const ctx_r0 = i0.ɵɵnextContext(2);
10836
- i0.ɵɵconditional(ctx_r0.badgeContent() ? 0 : -1);
10880
+ const ctx_r1 = i0.ɵɵnextContext(2);
10881
+ i0.ɵɵconditional(ctx_r1.badgeContent() ? 0 : -1);
10837
10882
  } }
10838
10883
  function TooltipContainerComponent_Conditional_0_Case_8_Conditional_0_Template(rf, ctx) { if (rf & 1) {
10839
10884
  i0.ɵɵelement(0, "symphiq-breakdown-row-tooltip", 6);
10840
10885
  } if (rf & 2) {
10841
- const ctx_r0 = i0.ɵɵnextContext(3);
10842
- i0.ɵɵproperty("content", ctx_r0.breakdownContent())("isLightMode", ctx_r0.isLightMode());
10886
+ const ctx_r1 = i0.ɵɵnextContext(3);
10887
+ i0.ɵɵproperty("content", ctx_r1.breakdownContent())("isLightMode", ctx_r1.isLightMode());
10843
10888
  } }
10844
10889
  function TooltipContainerComponent_Conditional_0_Case_8_Template(rf, ctx) { if (rf & 1) {
10845
10890
  i0.ɵɵconditionalCreate(0, TooltipContainerComponent_Conditional_0_Case_8_Conditional_0_Template, 1, 2, "symphiq-breakdown-row-tooltip", 6);
10846
10891
  } if (rf & 2) {
10847
- const ctx_r0 = i0.ɵɵnextContext(2);
10848
- i0.ɵɵconditional(ctx_r0.breakdownContent() ? 0 : -1);
10892
+ const ctx_r1 = i0.ɵɵnextContext(2);
10893
+ i0.ɵɵconditional(ctx_r1.breakdownContent() ? 0 : -1);
10849
10894
  } }
10850
10895
  function TooltipContainerComponent_Conditional_0_Case_9_Conditional_0_Template(rf, ctx) { if (rf & 1) {
10851
10896
  i0.ɵɵelement(0, "symphiq-competitive-benchmark-tooltip", 6);
10852
10897
  } if (rf & 2) {
10853
- const ctx_r0 = i0.ɵɵnextContext(3);
10854
- i0.ɵɵproperty("content", ctx_r0.competitiveContent())("isLightMode", ctx_r0.isLightMode());
10898
+ const ctx_r1 = i0.ɵɵnextContext(3);
10899
+ i0.ɵɵproperty("content", ctx_r1.competitiveContent())("isLightMode", ctx_r1.isLightMode());
10855
10900
  } }
10856
10901
  function TooltipContainerComponent_Conditional_0_Case_9_Template(rf, ctx) { if (rf & 1) {
10857
10902
  i0.ɵɵconditionalCreate(0, TooltipContainerComponent_Conditional_0_Case_9_Conditional_0_Template, 1, 2, "symphiq-competitive-benchmark-tooltip", 6);
10858
10903
  } if (rf & 2) {
10859
- const ctx_r0 = i0.ɵɵnextContext(2);
10860
- i0.ɵɵconditional(ctx_r0.competitiveContent() ? 0 : -1);
10904
+ const ctx_r1 = i0.ɵɵnextContext(2);
10905
+ i0.ɵɵconditional(ctx_r1.competitiveContent() ? 0 : -1);
10861
10906
  } }
10862
10907
  function TooltipContainerComponent_Conditional_0_Case_10_Conditional_0_Template(rf, ctx) { if (rf & 1) {
10863
10908
  i0.ɵɵelement(0, "symphiq-insights-list-tooltip", 6);
10864
10909
  } if (rf & 2) {
10865
- const ctx_r0 = i0.ɵɵnextContext(3);
10866
- i0.ɵɵproperty("content", ctx_r0.insightsListContent())("isLightMode", ctx_r0.isLightMode());
10910
+ const ctx_r1 = i0.ɵɵnextContext(3);
10911
+ i0.ɵɵproperty("content", ctx_r1.insightsListContent())("isLightMode", ctx_r1.isLightMode());
10867
10912
  } }
10868
10913
  function TooltipContainerComponent_Conditional_0_Case_10_Template(rf, ctx) { if (rf & 1) {
10869
10914
  i0.ɵɵconditionalCreate(0, TooltipContainerComponent_Conditional_0_Case_10_Conditional_0_Template, 1, 2, "symphiq-insights-list-tooltip", 6);
10870
10915
  } if (rf & 2) {
10871
- const ctx_r0 = i0.ɵɵnextContext(2);
10872
- i0.ɵɵconditional(ctx_r0.insightsListContent() ? 0 : -1);
10916
+ const ctx_r1 = i0.ɵɵnextContext(2);
10917
+ i0.ɵɵconditional(ctx_r1.insightsListContent() ? 0 : -1);
10873
10918
  } }
10874
10919
  function TooltipContainerComponent_Conditional_0_Case_11_Conditional_0_Template(rf, ctx) { if (rf & 1) {
10875
10920
  i0.ɵɵelement(0, "symphiq-narrative-tooltip", 6);
10876
10921
  } if (rf & 2) {
10877
- const ctx_r0 = i0.ɵɵnextContext(3);
10878
- i0.ɵɵproperty("content", ctx_r0.narrativeContent())("isLightMode", ctx_r0.isLightMode());
10922
+ const ctx_r1 = i0.ɵɵnextContext(3);
10923
+ i0.ɵɵproperty("content", ctx_r1.narrativeContent())("isLightMode", ctx_r1.isLightMode());
10879
10924
  } }
10880
10925
  function TooltipContainerComponent_Conditional_0_Case_11_Template(rf, ctx) { if (rf & 1) {
10881
10926
  i0.ɵɵconditionalCreate(0, TooltipContainerComponent_Conditional_0_Case_11_Conditional_0_Template, 1, 2, "symphiq-narrative-tooltip", 6);
10882
10927
  } if (rf & 2) {
10883
- const ctx_r0 = i0.ɵɵnextContext(2);
10884
- i0.ɵɵconditional(ctx_r0.narrativeContent() ? 0 : -1);
10928
+ const ctx_r1 = i0.ɵɵnextContext(2);
10929
+ i0.ɵɵconditional(ctx_r1.narrativeContent() ? 0 : -1);
10885
10930
  } }
10886
10931
  function TooltipContainerComponent_Conditional_0_Case_12_Conditional_1_For_1_Template(rf, ctx) { if (rf & 1) {
10887
10932
  i0.ɵɵelementStart(0, "div", 7)(1, "div", 8);
@@ -10891,18 +10936,18 @@ function TooltipContainerComponent_Conditional_0_Case_12_Conditional_1_For_1_Tem
10891
10936
  i0.ɵɵtext(4);
10892
10937
  i0.ɵɵelementEnd()();
10893
10938
  } if (rf & 2) {
10894
- const section_r2 = ctx.$implicit;
10939
+ const section_r3 = ctx.$implicit;
10895
10940
  i0.ɵɵadvance(2);
10896
- i0.ɵɵtextInterpolate(section_r2.title);
10941
+ i0.ɵɵtextInterpolate(section_r3.title);
10897
10942
  i0.ɵɵadvance(2);
10898
- i0.ɵɵtextInterpolate(section_r2.content);
10943
+ i0.ɵɵtextInterpolate(section_r3.content);
10899
10944
  } }
10900
10945
  function TooltipContainerComponent_Conditional_0_Case_12_Conditional_1_Template(rf, ctx) { if (rf & 1) {
10901
10946
  i0.ɵɵrepeaterCreate(0, TooltipContainerComponent_Conditional_0_Case_12_Conditional_1_For_1_Template, 5, 2, "div", 7, i0.ɵɵrepeaterTrackByIndex);
10902
10947
  } if (rf & 2) {
10903
10948
  i0.ɵɵnextContext(2);
10904
- const content_r3 = i0.ɵɵreadContextLet(2);
10905
- i0.ɵɵrepeater(content_r3["sections"] || i0.ɵɵpureFunction0(0, _c0$6));
10949
+ const content_r4 = i0.ɵɵreadContextLet(2);
10950
+ i0.ɵɵrepeater(content_r4["sections"] || i0.ɵɵpureFunction0(0, _c0$6));
10906
10951
  } }
10907
10952
  function TooltipContainerComponent_Conditional_0_Case_12_Template(rf, ctx) { if (rf & 1) {
10908
10953
  i0.ɵɵelementStart(0, "div", 3);
@@ -10910,25 +10955,25 @@ function TooltipContainerComponent_Conditional_0_Case_12_Template(rf, ctx) { if
10910
10955
  i0.ɵɵelementEnd();
10911
10956
  } if (rf & 2) {
10912
10957
  i0.ɵɵnextContext();
10913
- const content_r3 = i0.ɵɵreadContextLet(2);
10914
- const ctx_r0 = i0.ɵɵnextContext();
10915
- i0.ɵɵproperty("ngClass", ctx_r0.textClass());
10958
+ const content_r4 = i0.ɵɵreadContextLet(2);
10959
+ const ctx_r1 = i0.ɵɵnextContext();
10960
+ i0.ɵɵproperty("ngClass", ctx_r1.textClass());
10916
10961
  i0.ɵɵadvance();
10917
- i0.ɵɵconditional(content_r3 && typeof content_r3 === "object" && "sections" in content_r3 ? 1 : -1);
10962
+ i0.ɵɵconditional(content_r4 && typeof content_r4 === "object" && "sections" in content_r4 ? 1 : -1);
10918
10963
  } }
10919
10964
  function TooltipContainerComponent_Conditional_0_Case_13_Conditional_1_Template(rf, ctx) { if (rf & 1) {
10920
10965
  i0.ɵɵtext(0);
10921
10966
  } if (rf & 2) {
10922
10967
  i0.ɵɵnextContext(2);
10923
- const content_r3 = i0.ɵɵreadContextLet(2);
10924
- i0.ɵɵtextInterpolate1(" ", content_r3["text"], " ");
10968
+ const content_r4 = i0.ɵɵreadContextLet(2);
10969
+ i0.ɵɵtextInterpolate1(" ", content_r4["text"], " ");
10925
10970
  } }
10926
10971
  function TooltipContainerComponent_Conditional_0_Case_13_Conditional_2_Template(rf, ctx) { if (rf & 1) {
10927
10972
  i0.ɵɵtext(0);
10928
10973
  } if (rf & 2) {
10929
10974
  i0.ɵɵnextContext(2);
10930
- const content_r3 = i0.ɵɵreadContextLet(2);
10931
- i0.ɵɵtextInterpolate1(" ", content_r3, " ");
10975
+ const content_r4 = i0.ɵɵreadContextLet(2);
10976
+ i0.ɵɵtextInterpolate1(" ", content_r4, " ");
10932
10977
  } }
10933
10978
  function TooltipContainerComponent_Conditional_0_Case_13_Template(rf, ctx) { if (rf & 1) {
10934
10979
  i0.ɵɵelementStart(0, "div", 4);
@@ -10936,11 +10981,11 @@ function TooltipContainerComponent_Conditional_0_Case_13_Template(rf, ctx) { if
10936
10981
  i0.ɵɵelementEnd();
10937
10982
  } if (rf & 2) {
10938
10983
  i0.ɵɵnextContext();
10939
- const content_r3 = i0.ɵɵreadContextLet(2);
10940
- const ctx_r0 = i0.ɵɵnextContext();
10941
- i0.ɵɵproperty("ngClass", ctx_r0.textClass());
10984
+ const content_r4 = i0.ɵɵreadContextLet(2);
10985
+ const ctx_r1 = i0.ɵɵnextContext();
10986
+ i0.ɵɵproperty("ngClass", ctx_r1.textClass());
10942
10987
  i0.ɵɵadvance();
10943
- i0.ɵɵconditional(content_r3 && typeof content_r3 === "object" && "text" in content_r3 ? 1 : 2);
10988
+ i0.ɵɵconditional(content_r4 && typeof content_r4 === "object" && "text" in content_r4 ? 1 : 2);
10944
10989
  } }
10945
10990
  function TooltipContainerComponent_Conditional_0_Case_14_Template(rf, ctx) { if (rf & 1) {
10946
10991
  i0.ɵɵelementStart(0, "div", 5);
@@ -10948,28 +10993,30 @@ function TooltipContainerComponent_Conditional_0_Case_14_Template(rf, ctx) { if
10948
10993
  i0.ɵɵelementEnd();
10949
10994
  } if (rf & 2) {
10950
10995
  i0.ɵɵnextContext();
10951
- const content_r3 = i0.ɵɵreadContextLet(2);
10952
- const ctx_r0 = i0.ɵɵnextContext();
10953
- i0.ɵɵproperty("ngClass", ctx_r0.textClass());
10996
+ const content_r4 = i0.ɵɵreadContextLet(2);
10997
+ const ctx_r1 = i0.ɵɵnextContext();
10998
+ i0.ɵɵproperty("ngClass", ctx_r1.textClass());
10954
10999
  i0.ɵɵadvance();
10955
- i0.ɵɵtextInterpolate1(" ", content_r3, " ");
11000
+ i0.ɵɵtextInterpolate1(" ", content_r4, " ");
10956
11001
  } }
10957
11002
  function TooltipContainerComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
11003
+ const _r1 = i0.ɵɵgetCurrentView();
10958
11004
  i0.ɵɵelementStart(0, "div", 1)(1, "div", 2);
11005
+ i0.ɵɵlistener("mouseenter", function TooltipContainerComponent_Conditional_0_Template_div_mouseenter_1_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onTooltipMouseEnter()); })("mouseleave", function TooltipContainerComponent_Conditional_0_Template_div_mouseleave_1_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onTooltipMouseLeave()); });
10959
11006
  i0.ɵɵdeclareLet(2);
10960
11007
  i0.ɵɵconditionalCreate(3, TooltipContainerComponent_Conditional_0_Case_3_Template, 1, 1)(4, TooltipContainerComponent_Conditional_0_Case_4_Template, 1, 1)(5, TooltipContainerComponent_Conditional_0_Case_5_Template, 1, 1)(6, TooltipContainerComponent_Conditional_0_Case_6_Template, 1, 1)(7, TooltipContainerComponent_Conditional_0_Case_7_Template, 1, 1)(8, TooltipContainerComponent_Conditional_0_Case_8_Template, 1, 1)(9, TooltipContainerComponent_Conditional_0_Case_9_Template, 1, 1)(10, TooltipContainerComponent_Conditional_0_Case_10_Template, 1, 1)(11, TooltipContainerComponent_Conditional_0_Case_11_Template, 1, 1)(12, TooltipContainerComponent_Conditional_0_Case_12_Template, 2, 2, "div", 3)(13, TooltipContainerComponent_Conditional_0_Case_13_Template, 3, 2, "div", 4)(14, TooltipContainerComponent_Conditional_0_Case_14_Template, 2, 2, "div", 5);
10961
11008
  i0.ɵɵelementEnd()();
10962
11009
  } if (rf & 2) {
10963
11010
  let tmp_7_0;
10964
- const ctx_r0 = i0.ɵɵnextContext();
10965
- i0.ɵɵstyleProp("left", ctx_r0.tooltipLeft(), "px")("top", ctx_r0.tooltipTop(), "px");
10966
- i0.ɵɵproperty("ngClass", ctx_r0.containerClass())("@fadeInScale", undefined);
11011
+ const ctx_r1 = i0.ɵɵnextContext();
11012
+ i0.ɵɵstyleProp("left", ctx_r1.tooltipLeft(), "px")("top", ctx_r1.tooltipTop(), "px");
11013
+ i0.ɵɵproperty("ngClass", ctx_r1.containerClass())("@fadeInScale", undefined);
10967
11014
  i0.ɵɵadvance();
10968
- i0.ɵɵproperty("ngClass", ctx_r0.contentClass());
11015
+ i0.ɵɵproperty("ngClass", ctx_r1.contentClass());
10969
11016
  i0.ɵɵadvance();
10970
- i0.ɵɵstoreLet(ctx_r0.tooltipContent());
11017
+ i0.ɵɵstoreLet(ctx_r1.tooltipContent());
10971
11018
  i0.ɵɵadvance();
10972
- i0.ɵɵconditional((tmp_7_0 = ctx_r0.tooltipType()) === "metric" ? 3 : tmp_7_0 === "status" ? 4 : tmp_7_0 === "trend" ? 5 : tmp_7_0 === "priority" ? 6 : tmp_7_0 === "badge" ? 7 : tmp_7_0 === "breakdown" ? 8 : tmp_7_0 === "competitive" ? 9 : tmp_7_0 === "insightsList" ? 10 : tmp_7_0 === "narrative" ? 11 : tmp_7_0 === "insight" ? 12 : tmp_7_0 === "text" ? 13 : 14);
11019
+ i0.ɵɵconditional((tmp_7_0 = ctx_r1.tooltipType()) === "metric" ? 3 : tmp_7_0 === "status" ? 4 : tmp_7_0 === "trend" ? 5 : tmp_7_0 === "priority" ? 6 : tmp_7_0 === "badge" ? 7 : tmp_7_0 === "breakdown" ? 8 : tmp_7_0 === "competitive" ? 9 : tmp_7_0 === "insightsList" ? 10 : tmp_7_0 === "narrative" ? 11 : tmp_7_0 === "insight" ? 12 : tmp_7_0 === "text" ? 13 : 14);
10973
11020
  } }
10974
11021
  class TooltipContainerComponent {
10975
11022
  constructor() {
@@ -10983,7 +11030,8 @@ class TooltipContainerComponent {
10983
11030
  position: 'top',
10984
11031
  targetRect: null,
10985
11032
  mousePosition: undefined,
10986
- visible: false
11033
+ visible: false,
11034
+ scrollContainer: null
10987
11035
  }, ...(ngDevMode ? [{ debugName: "tooltipStateSignal" }] : []));
10988
11036
  this.isVisible = computed(() => this.tooltipStateSignal().visible, ...(ngDevMode ? [{ debugName: "isVisible" }] : []));
10989
11037
  this.tooltipType = computed(() => this.tooltipStateSignal().type, ...(ngDevMode ? [{ debugName: "tooltipType" }] : []));
@@ -10991,6 +11039,7 @@ class TooltipContainerComponent {
10991
11039
  this.tooltipPosition = computed(() => this.tooltipStateSignal().position, ...(ngDevMode ? [{ debugName: "tooltipPosition" }] : []));
10992
11040
  this.targetRect = computed(() => this.tooltipStateSignal().targetRect, ...(ngDevMode ? [{ debugName: "targetRect" }] : []));
10993
11041
  this.mousePosition = computed(() => this.tooltipStateSignal().mousePosition, ...(ngDevMode ? [{ debugName: "mousePosition" }] : []));
11042
+ this.scrollContainer = computed(() => this.tooltipStateSignal().scrollContainer, ...(ngDevMode ? [{ debugName: "scrollContainer" }] : []));
10994
11043
  // Type-safe content accessors for each tooltip type
10995
11044
  this.metricContent = computed(() => {
10996
11045
  const content = this.tooltipContent();
@@ -11036,6 +11085,8 @@ class TooltipContainerComponent {
11036
11085
  return true;
11037
11086
  const position = this.tooltipPosition();
11038
11087
  const tooltipWidth = 384;
11088
+ const container = this.scrollContainer();
11089
+ const viewportWidth = container?.clientWidth || window.innerWidth;
11039
11090
  // For 'auto' positioning, always center horizontally
11040
11091
  if (position === 'auto') {
11041
11092
  return true;
@@ -11044,7 +11095,7 @@ class TooltipContainerComponent {
11044
11095
  const centerPosition = rect.left + rect.width / 2;
11045
11096
  const halfWidth = tooltipWidth / 2;
11046
11097
  const wouldGoOffLeft = centerPosition - halfWidth < 10;
11047
- const wouldGoOffRight = centerPosition + halfWidth > window.innerWidth - 10;
11098
+ const wouldGoOffRight = centerPosition + halfWidth > viewportWidth - 10;
11048
11099
  return !wouldGoOffLeft && !wouldGoOffRight;
11049
11100
  }
11050
11101
  return false;
@@ -11066,7 +11117,8 @@ class TooltipContainerComponent {
11066
11117
  this.tooltipStateSignal.set({
11067
11118
  ...state,
11068
11119
  mousePosition: state.mousePosition || undefined,
11069
- content: state.content ?? undefined
11120
+ content: state.content ?? undefined,
11121
+ scrollContainer: state.scrollContainer || null
11070
11122
  });
11071
11123
  });
11072
11124
  effect(() => {
@@ -11078,6 +11130,14 @@ class TooltipContainerComponent {
11078
11130
  }
11079
11131
  });
11080
11132
  }
11133
+ onTooltipMouseEnter() {
11134
+ this.tooltipService.setTooltipHovered(true);
11135
+ }
11136
+ onTooltipMouseLeave() {
11137
+ this.tooltipService.setTooltipHovered(false);
11138
+ // Trigger the hide check callback from the directive
11139
+ this.tooltipService.triggerHideCheck();
11140
+ }
11081
11141
  calculateLeft() {
11082
11142
  const rect = this.targetRect();
11083
11143
  if (!rect)
@@ -11085,6 +11145,8 @@ class TooltipContainerComponent {
11085
11145
  const position = this.tooltipPosition();
11086
11146
  const mousePos = this.mousePosition();
11087
11147
  const tooltipWidth = 384;
11148
+ const container = this.scrollContainer();
11149
+ const viewportWidth = container?.clientWidth || window.innerWidth;
11088
11150
  // Handle 'auto' positioning with mouse coordinates
11089
11151
  if (position === 'auto' && mousePos) {
11090
11152
  const halfWidth = tooltipWidth / 2;
@@ -11093,8 +11155,8 @@ class TooltipContainerComponent {
11093
11155
  if (leftPos - halfWidth < 10) {
11094
11156
  leftPos = halfWidth + 10;
11095
11157
  }
11096
- else if (leftPos + halfWidth > window.innerWidth - 10) {
11097
- leftPos = window.innerWidth - halfWidth - 10;
11158
+ else if (leftPos + halfWidth > viewportWidth - 10) {
11159
+ leftPos = viewportWidth - halfWidth - 10;
11098
11160
  }
11099
11161
  return leftPos;
11100
11162
  }
@@ -11105,14 +11167,14 @@ class TooltipContainerComponent {
11105
11167
  const halfWidth = tooltipWidth / 2;
11106
11168
  // Check if centered tooltip would go off screen
11107
11169
  const wouldGoOffLeft = centerPosition - halfWidth < 10;
11108
- const wouldGoOffRight = centerPosition + halfWidth > window.innerWidth - 10;
11170
+ const wouldGoOffRight = centerPosition + halfWidth > viewportWidth - 10;
11109
11171
  if (wouldGoOffLeft) {
11110
11172
  // Align to left edge with padding
11111
11173
  return 10;
11112
11174
  }
11113
11175
  else if (wouldGoOffRight) {
11114
11176
  // Align to right edge with padding
11115
- return window.innerWidth - tooltipWidth - 10;
11177
+ return viewportWidth - tooltipWidth - 10;
11116
11178
  }
11117
11179
  else {
11118
11180
  // Center normally (transform will be applied)
@@ -11130,7 +11192,7 @@ class TooltipContainerComponent {
11130
11192
  case 'right': {
11131
11193
  const rightPosition = rect.right + 8;
11132
11194
  // If tooltip would go off right edge, position it to the left instead
11133
- if (rightPosition + tooltipWidth > window.innerWidth - 10) {
11195
+ if (rightPosition + tooltipWidth > viewportWidth - 10) {
11134
11196
  return rect.left - tooltipWidth - 8;
11135
11197
  }
11136
11198
  return rightPosition;
@@ -11146,6 +11208,8 @@ class TooltipContainerComponent {
11146
11208
  const position = this.tooltipPosition();
11147
11209
  const mousePos = this.mousePosition();
11148
11210
  const type = this.tooltipType();
11211
+ const container = this.scrollContainer();
11212
+ const viewportHeight = container?.clientHeight || window.innerHeight;
11149
11213
  // Estimate tooltip height based on type
11150
11214
  let estimatedHeight = 100;
11151
11215
  if (type === 'insight') {
@@ -11159,7 +11223,7 @@ class TooltipContainerComponent {
11159
11223
  const offset = 20; // Offset from mouse cursor
11160
11224
  let topPos = mousePos.y + offset;
11161
11225
  // If tooltip would go off bottom of screen, position above cursor
11162
- if (topPos + estimatedHeight > window.innerHeight - 10) {
11226
+ if (topPos + estimatedHeight > viewportHeight - 10) {
11163
11227
  topPos = mousePos.y - estimatedHeight - offset;
11164
11228
  }
11165
11229
  // Ensure it doesn't go off top
@@ -11180,7 +11244,7 @@ class TooltipContainerComponent {
11180
11244
  case 'bottom': {
11181
11245
  const bottomPosition = rect.bottom + 8;
11182
11246
  // If tooltip would go off bottom of screen, position it above instead
11183
- if (bottomPosition + estimatedHeight > window.innerHeight - 10) {
11247
+ if (bottomPosition + estimatedHeight > viewportHeight - 10) {
11184
11248
  return rect.top - estimatedHeight - 8;
11185
11249
  }
11186
11250
  return bottomPosition;
@@ -11189,7 +11253,7 @@ class TooltipContainerComponent {
11189
11253
  case 'right': {
11190
11254
  const centerPosition = rect.top + rect.height / 2 - estimatedHeight / 2;
11191
11255
  // Keep within viewport
11192
- const maxTop = window.innerHeight - estimatedHeight - 10;
11256
+ const maxTop = viewportHeight - estimatedHeight - 10;
11193
11257
  return Math.max(10, Math.min(centerPosition, maxTop));
11194
11258
  }
11195
11259
  default:
@@ -11197,7 +11261,7 @@ class TooltipContainerComponent {
11197
11261
  }
11198
11262
  }
11199
11263
  static { this.ɵfac = function TooltipContainerComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || TooltipContainerComponent)(); }; }
11200
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TooltipContainerComponent, selectors: [["symphiq-tooltip-container"]], decls: 1, vars: 1, consts: [[1, "fixed", "z-[100]", "pointer-events-none", 3, "left", "top", "ngClass"], [1, "fixed", "z-[100]", "pointer-events-none", 3, "ngClass"], [1, "rounded-lg", "shadow-2xl", "border", "backdrop-blur-xl", "px-4", "py-3", "max-w-sm", 3, "ngClass"], [1, "text-sm", "space-y-3", 3, "ngClass"], [1, "text-sm", "whitespace-pre-line", "leading-relaxed", 3, "ngClass"], [1, "text-sm", "whitespace-pre-line", 3, "ngClass"], [3, "content", "isLightMode"], [1, "space-y-2"], [1, "font-semibold"], [1, "whitespace-pre-line", "leading-relaxed"]], template: function TooltipContainerComponent_Template(rf, ctx) { if (rf & 1) {
11264
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TooltipContainerComponent, selectors: [["symphiq-tooltip-container"]], decls: 1, vars: 1, consts: [[1, "fixed", "z-[100]", "pointer-events-none", 3, "left", "top", "ngClass"], [1, "fixed", "z-[100]", "pointer-events-none", 3, "ngClass"], [1, "rounded-lg", "shadow-2xl", "border", "backdrop-blur-xl", "px-4", "py-3", "max-w-sm", "pointer-events-auto", 3, "mouseenter", "mouseleave", "ngClass"], [1, "text-sm", "space-y-3", 3, "ngClass"], [1, "text-sm", "whitespace-pre-line", "leading-relaxed", 3, "ngClass"], [1, "text-sm", "whitespace-pre-line", 3, "ngClass"], [3, "content", "isLightMode"], [1, "space-y-2"], [1, "font-semibold"], [1, "whitespace-pre-line", "leading-relaxed"]], template: function TooltipContainerComponent_Template(rf, ctx) { if (rf & 1) {
11201
11265
  i0.ɵɵconditionalCreate(0, TooltipContainerComponent_Conditional_0_Template, 15, 9, "div", 0);
11202
11266
  } if (rf & 2) {
11203
11267
  i0.ɵɵconditional(ctx.isVisible() ? 0 : -1);
@@ -11258,7 +11322,11 @@ class TooltipContainerComponent {
11258
11322
  [ngClass]="containerClass()"
11259
11323
  class="fixed z-[100] pointer-events-none"
11260
11324
  @fadeInScale>
11261
- <div [ngClass]="contentClass()" class="rounded-lg shadow-2xl border backdrop-blur-xl px-4 py-3 max-w-sm">
11325
+ <div
11326
+ [ngClass]="contentClass()"
11327
+ class="rounded-lg shadow-2xl border backdrop-blur-xl px-4 py-3 max-w-sm pointer-events-auto"
11328
+ (mouseenter)="onTooltipMouseEnter()"
11329
+ (mouseleave)="onTooltipMouseLeave()">
11262
11330
  @let content = tooltipContent();
11263
11331
  @switch (tooltipType()) {
11264
11332
  @case ('metric') {
@@ -11357,7 +11425,7 @@ class TooltipContainerComponent {
11357
11425
  `
11358
11426
  }]
11359
11427
  }], () => [], null); })();
11360
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TooltipContainerComponent, { className: "TooltipContainerComponent", filePath: "lib/components/funnel-analysis-dashboard/tooltip/tooltip-container.component.ts", lineNumber: 169 }); })();
11428
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TooltipContainerComponent, { className: "TooltipContainerComponent", filePath: "lib/components/funnel-analysis-dashboard/tooltip/tooltip-container.component.ts", lineNumber: 173 }); })();
11361
11429
 
11362
11430
  function MobileFABComponent_Conditional_1_Conditional_5_Template(rf, ctx) { if (rf & 1) {
11363
11431
  i0.ɵɵnamespaceSVG();
@@ -19172,7 +19240,7 @@ class SearchBarComponent {
19172
19240
  i0.ɵɵconditionalCreate(0, SearchBarComponent_Conditional_0_Template, 17, 10, "div", 1);
19173
19241
  } if (rf & 2) {
19174
19242
  i0.ɵɵconditional(ctx.searchService.isSearchOpen() ? 0 : -1);
19175
- } }, dependencies: [CommonModule, i1.NgClass, FormsModule, i5.DefaultValueAccessor, i5.NgControlStatus, i5.NgModel], styles: ["[_nghost-%COMP%]{display:contents}"], changeDetection: 0 }); }
19243
+ } }, dependencies: [CommonModule, i1.NgClass, FormsModule, i6.DefaultValueAccessor, i6.NgControlStatus, i6.NgModel], styles: ["[_nghost-%COMP%]{display:contents}"], changeDetection: 0 }); }
19176
19244
  }
19177
19245
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SearchBarComponent, [{
19178
19246
  type: Component,
@@ -20191,30 +20259,35 @@ class CompetitiveIntelligenceViewComponent {
20191
20259
  const _c0$4 = ["dashboardContainer"];
20192
20260
  const _c1 = () => ({});
20193
20261
  const _c2 = () => [1, 2, 3, 4, 5, 6];
20194
- const _c3 = () => [1, 2, 3, 4];
20262
+ const _c3 = () => [1, 2, 3];
20263
+ const _c4 = () => [1, 2, 3, 4];
20264
+ const _c5 = () => [1, 2];
20195
20265
  const _forTrack0$1 = ($index, $item) => $item.value;
20196
- function SymphiqFunnelAnalysisDashboardComponent_Conditional_29_Template(rf, ctx) { if (rf & 1) {
20266
+ function SymphiqFunnelAnalysisDashboardComponent_Conditional_19_Template(rf, ctx) { if (rf & 1) {
20267
+ i0.ɵɵelement(0, "div", 16);
20268
+ } }
20269
+ function SymphiqFunnelAnalysisDashboardComponent_Conditional_31_Template(rf, ctx) { if (rf & 1) {
20197
20270
  i0.ɵɵnamespaceSVG();
20198
- i0.ɵɵelementStart(0, "svg", 19);
20199
- i0.ɵɵelement(1, "path", 52);
20271
+ i0.ɵɵelementStart(0, "svg", 21);
20272
+ i0.ɵɵelement(1, "path", 53);
20200
20273
  i0.ɵɵelementEnd();
20201
20274
  i0.ɵɵnamespaceHTML();
20202
20275
  i0.ɵɵelementStart(2, "span");
20203
20276
  i0.ɵɵtext(3, "Compact");
20204
20277
  i0.ɵɵelementEnd();
20205
20278
  } }
20206
- function SymphiqFunnelAnalysisDashboardComponent_Conditional_30_Template(rf, ctx) { if (rf & 1) {
20279
+ function SymphiqFunnelAnalysisDashboardComponent_Conditional_32_Template(rf, ctx) { if (rf & 1) {
20207
20280
  i0.ɵɵnamespaceSVG();
20208
- i0.ɵɵelementStart(0, "svg", 19);
20209
- i0.ɵɵelement(1, "path", 53);
20281
+ i0.ɵɵelementStart(0, "svg", 21);
20282
+ i0.ɵɵelement(1, "path", 54);
20210
20283
  i0.ɵɵelementEnd();
20211
20284
  i0.ɵɵnamespaceHTML();
20212
20285
  i0.ɵɵelementStart(2, "span");
20213
20286
  i0.ɵɵtext(3, "Expanded");
20214
20287
  i0.ɵɵelementEnd();
20215
20288
  } }
20216
- function SymphiqFunnelAnalysisDashboardComponent_For_37_Template(rf, ctx) { if (rf & 1) {
20217
- i0.ɵɵelementStart(0, "option", 27);
20289
+ function SymphiqFunnelAnalysisDashboardComponent_For_39_Template(rf, ctx) { if (rf & 1) {
20290
+ i0.ɵɵelementStart(0, "option", 29);
20218
20291
  i0.ɵɵtext(1);
20219
20292
  i0.ɵɵelementEnd();
20220
20293
  } if (rf & 2) {
@@ -20223,14 +20296,14 @@ function SymphiqFunnelAnalysisDashboardComponent_For_37_Template(rf, ctx) { if (
20223
20296
  i0.ɵɵadvance();
20224
20297
  i0.ɵɵtextInterpolate(section_r2.label);
20225
20298
  } }
20226
- function SymphiqFunnelAnalysisDashboardComponent_Conditional_55_Template(rf, ctx) { if (rf & 1) {
20227
- i0.ɵɵelementStart(0, "div", 36)(1, "span", 54);
20299
+ function SymphiqFunnelAnalysisDashboardComponent_Conditional_57_Template(rf, ctx) { if (rf & 1) {
20300
+ i0.ɵɵelementStart(0, "div", 38)(1, "span", 55);
20228
20301
  i0.ɵɵtext(2, "Revenue:");
20229
20302
  i0.ɵɵelementEnd();
20230
- i0.ɵɵelementStart(3, "span", 55);
20303
+ i0.ɵɵelementStart(3, "span", 56);
20231
20304
  i0.ɵɵtext(4);
20232
20305
  i0.ɵɵelementEnd();
20233
- i0.ɵɵelementStart(5, "span", 56);
20306
+ i0.ɵɵelementStart(5, "span", 57);
20234
20307
  i0.ɵɵtext(6);
20235
20308
  i0.ɵɵelementEnd()();
20236
20309
  } if (rf & 2) {
@@ -20247,20 +20320,20 @@ function SymphiqFunnelAnalysisDashboardComponent_Conditional_55_Template(rf, ctx
20247
20320
  i0.ɵɵadvance();
20248
20321
  i0.ɵɵtextInterpolate2(" ", ctx_r2.revenueTrend() >= 0 ? "+" : "", "", ctx_r2.revenueTrend().toFixed(1), "% ");
20249
20322
  } }
20250
- function SymphiqFunnelAnalysisDashboardComponent_Conditional_61_Template(rf, ctx) { if (rf & 1) {
20323
+ function SymphiqFunnelAnalysisDashboardComponent_Conditional_63_Template(rf, ctx) { if (rf & 1) {
20251
20324
  i0.ɵɵnamespaceSVG();
20252
- i0.ɵɵelementStart(0, "svg", 39);
20253
- i0.ɵɵelement(1, "path", 52);
20325
+ i0.ɵɵelementStart(0, "svg", 40);
20326
+ i0.ɵɵelement(1, "path", 53);
20254
20327
  i0.ɵɵelementEnd();
20255
20328
  } }
20256
- function SymphiqFunnelAnalysisDashboardComponent_Conditional_62_Template(rf, ctx) { if (rf & 1) {
20329
+ function SymphiqFunnelAnalysisDashboardComponent_Conditional_64_Template(rf, ctx) { if (rf & 1) {
20257
20330
  i0.ɵɵnamespaceSVG();
20258
- i0.ɵɵelementStart(0, "svg", 39);
20259
- i0.ɵɵelement(1, "path", 53);
20331
+ i0.ɵɵelementStart(0, "svg", 40);
20332
+ i0.ɵɵelement(1, "path", 54);
20260
20333
  i0.ɵɵelementEnd();
20261
20334
  } }
20262
- function SymphiqFunnelAnalysisDashboardComponent_For_66_Template(rf, ctx) { if (rf & 1) {
20263
- i0.ɵɵelementStart(0, "option", 27);
20335
+ function SymphiqFunnelAnalysisDashboardComponent_For_68_Template(rf, ctx) { if (rf & 1) {
20336
+ i0.ɵɵelementStart(0, "option", 29);
20264
20337
  i0.ɵɵtext(1);
20265
20338
  i0.ɵɵelementEnd();
20266
20339
  } if (rf & 2) {
@@ -20269,28 +20342,28 @@ function SymphiqFunnelAnalysisDashboardComponent_For_66_Template(rf, ctx) { if (
20269
20342
  i0.ɵɵadvance();
20270
20343
  i0.ɵɵtextInterpolate(section_r4.label);
20271
20344
  } }
20272
- function SymphiqFunnelAnalysisDashboardComponent_Conditional_67_Template(rf, ctx) { if (rf & 1) {
20345
+ function SymphiqFunnelAnalysisDashboardComponent_Conditional_69_Template(rf, ctx) { if (rf & 1) {
20273
20346
  const _r5 = i0.ɵɵgetCurrentView();
20274
- i0.ɵɵelementStart(0, "div", 42)(1, "div", 32)(2, "div", 33)(3, "div", 57);
20347
+ i0.ɵɵelementStart(0, "div", 43)(1, "div", 34)(2, "div", 35)(3, "div", 58);
20275
20348
  i0.ɵɵnamespaceSVG();
20276
- i0.ɵɵelementStart(4, "svg", 58);
20277
- i0.ɵɵelement(5, "path", 20);
20349
+ i0.ɵɵelementStart(4, "svg", 59);
20350
+ i0.ɵɵelement(5, "path", 22);
20278
20351
  i0.ɵɵelementEnd();
20279
20352
  i0.ɵɵnamespaceHTML();
20280
- i0.ɵɵelementStart(6, "div", 59)(7, "span", 60);
20353
+ i0.ɵɵelementStart(6, "div", 60)(7, "span", 61);
20281
20354
  i0.ɵɵtext(8, "Showing:");
20282
20355
  i0.ɵɵelementEnd();
20283
- i0.ɵɵelementStart(9, "span", 61);
20356
+ i0.ɵɵelementStart(9, "span", 62);
20284
20357
  i0.ɵɵtext(10);
20285
20358
  i0.ɵɵelementEnd();
20286
- i0.ɵɵelementStart(11, "span", 62);
20359
+ i0.ɵɵelementStart(11, "span", 63);
20287
20360
  i0.ɵɵtext(12);
20288
20361
  i0.ɵɵelementEnd()()();
20289
- i0.ɵɵelementStart(13, "button", 63);
20290
- i0.ɵɵlistener("click", function SymphiqFunnelAnalysisDashboardComponent_Conditional_67_Template_button_click_13_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r2 = i0.ɵɵnextContext(); ctx_r2.clearSearchResult(); return i0.ɵɵresetView($event.stopPropagation()); });
20362
+ i0.ɵɵelementStart(13, "button", 64);
20363
+ i0.ɵɵlistener("click", function SymphiqFunnelAnalysisDashboardComponent_Conditional_69_Template_button_click_13_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r2 = i0.ɵɵnextContext(); ctx_r2.clearSearchResult(); return i0.ɵɵresetView($event.stopPropagation()); });
20291
20364
  i0.ɵɵnamespaceSVG();
20292
- i0.ɵɵelementStart(14, "svg", 39);
20293
- i0.ɵɵelement(15, "path", 64);
20365
+ i0.ɵɵelementStart(14, "svg", 40);
20366
+ i0.ɵɵelement(15, "path", 65);
20294
20367
  i0.ɵɵelementEnd()()()()();
20295
20368
  } if (rf & 2) {
20296
20369
  const ctx_r2 = i0.ɵɵnextContext();
@@ -20310,133 +20383,126 @@ function SymphiqFunnelAnalysisDashboardComponent_Conditional_67_Template(rf, ctx
20310
20383
  i0.ɵɵadvance();
20311
20384
  i0.ɵɵproperty("ngClass", ctx_r2.isLightMode() ? "text-blue-600 hover:text-blue-800 hover:bg-blue-100" : "text-blue-400 hover:text-blue-200 hover:bg-blue-800/50");
20312
20385
  } }
20313
- function SymphiqFunnelAnalysisDashboardComponent_Conditional_69_Template(rf, ctx) { if (rf & 1) {
20386
+ function SymphiqFunnelAnalysisDashboardComponent_Conditional_71_Template(rf, ctx) { if (rf & 1) {
20314
20387
  const _r6 = i0.ɵɵgetCurrentView();
20315
- i0.ɵɵelementStart(0, "button", 65);
20316
- i0.ɵɵlistener("click", function SymphiqFunnelAnalysisDashboardComponent_Conditional_69_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r6); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.scrollToTop()); });
20388
+ i0.ɵɵelementStart(0, "button", 66);
20389
+ i0.ɵɵlistener("click", function SymphiqFunnelAnalysisDashboardComponent_Conditional_71_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r6); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.scrollToTop()); });
20317
20390
  i0.ɵɵelementEnd();
20318
20391
  } if (rf & 2) {
20319
20392
  const ctx_r2 = i0.ɵɵnextContext();
20320
20393
  i0.ɵɵproperty("title", "Scroll to Top")("ngClass", ctx_r2.isLightMode() ? "bg-slate-300 hover:bg-blue-500" : "bg-slate-600 hover:bg-blue-400");
20321
20394
  } }
20322
- function SymphiqFunnelAnalysisDashboardComponent_Conditional_70_Template(rf, ctx) { if (rf & 1) {
20395
+ function SymphiqFunnelAnalysisDashboardComponent_Conditional_72_Template(rf, ctx) { if (rf & 1) {
20323
20396
  const _r7 = i0.ɵɵgetCurrentView();
20324
- i0.ɵɵelementStart(0, "button", 65);
20325
- i0.ɵɵlistener("click", function SymphiqFunnelAnalysisDashboardComponent_Conditional_70_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r7); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.scrollToSection("insights-section")); });
20397
+ i0.ɵɵelementStart(0, "button", 66);
20398
+ i0.ɵɵlistener("click", function SymphiqFunnelAnalysisDashboardComponent_Conditional_72_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r7); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.scrollToSection("insights-section")); });
20326
20399
  i0.ɵɵelementEnd();
20327
20400
  } if (rf & 2) {
20328
20401
  const ctx_r2 = i0.ɵɵnextContext();
20329
20402
  i0.ɵɵproperty("title", "Key Insights")("ngClass", ctx_r2.isLightMode() ? "bg-slate-300 hover:bg-blue-500" : "bg-slate-600 hover:bg-blue-400");
20330
20403
  } }
20331
- function SymphiqFunnelAnalysisDashboardComponent_Conditional_71_Template(rf, ctx) { if (rf & 1) {
20404
+ function SymphiqFunnelAnalysisDashboardComponent_Conditional_73_Template(rf, ctx) { if (rf & 1) {
20332
20405
  const _r8 = i0.ɵɵgetCurrentView();
20333
- i0.ɵɵelementStart(0, "button", 65);
20334
- i0.ɵɵlistener("click", function SymphiqFunnelAnalysisDashboardComponent_Conditional_71_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r8); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.scrollToSection("metrics-section")); });
20406
+ i0.ɵɵelementStart(0, "button", 66);
20407
+ i0.ɵɵlistener("click", function SymphiqFunnelAnalysisDashboardComponent_Conditional_73_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r8); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.scrollToSection("metrics-section")); });
20335
20408
  i0.ɵɵelementEnd();
20336
20409
  } if (rf & 2) {
20337
20410
  const ctx_r2 = i0.ɵɵnextContext();
20338
20411
  i0.ɵɵproperty("title", "Performance Metrics")("ngClass", ctx_r2.isLightMode() ? "bg-slate-300 hover:bg-blue-500" : "bg-slate-600 hover:bg-blue-400");
20339
20412
  } }
20340
- function SymphiqFunnelAnalysisDashboardComponent_Conditional_72_Template(rf, ctx) { if (rf & 1) {
20413
+ function SymphiqFunnelAnalysisDashboardComponent_Conditional_74_Template(rf, ctx) { if (rf & 1) {
20341
20414
  const _r9 = i0.ɵɵgetCurrentView();
20342
- i0.ɵɵelementStart(0, "button", 65);
20343
- i0.ɵɵlistener("click", function SymphiqFunnelAnalysisDashboardComponent_Conditional_72_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r9); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.scrollToSection("breakdowns-section")); });
20415
+ i0.ɵɵelementStart(0, "button", 66);
20416
+ i0.ɵɵlistener("click", function SymphiqFunnelAnalysisDashboardComponent_Conditional_74_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r9); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.scrollToSection("breakdowns-section")); });
20344
20417
  i0.ɵɵelementEnd();
20345
20418
  } if (rf & 2) {
20346
20419
  const ctx_r2 = i0.ɵɵnextContext();
20347
20420
  i0.ɵɵproperty("title", "Performance Breakdowns")("ngClass", ctx_r2.isLightMode() ? "bg-slate-300 hover:bg-blue-500" : "bg-slate-600 hover:bg-blue-400");
20348
20421
  } }
20349
- function SymphiqFunnelAnalysisDashboardComponent_Conditional_73_Template(rf, ctx) { if (rf & 1) {
20422
+ function SymphiqFunnelAnalysisDashboardComponent_Conditional_75_Template(rf, ctx) { if (rf & 1) {
20350
20423
  const _r10 = i0.ɵɵgetCurrentView();
20351
- i0.ɵɵelementStart(0, "button", 65);
20352
- i0.ɵɵlistener("click", function SymphiqFunnelAnalysisDashboardComponent_Conditional_73_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r10); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.scrollToSection("competitive-section")); });
20424
+ i0.ɵɵelementStart(0, "button", 66);
20425
+ i0.ɵɵlistener("click", function SymphiqFunnelAnalysisDashboardComponent_Conditional_75_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r10); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.scrollToSection("competitive-section")); });
20353
20426
  i0.ɵɵelementEnd();
20354
20427
  } if (rf & 2) {
20355
20428
  const ctx_r2 = i0.ɵɵnextContext();
20356
20429
  i0.ɵɵproperty("title", "Competitive Intelligence")("ngClass", ctx_r2.isLightMode() ? "bg-slate-300 hover:bg-indigo-500" : "bg-slate-600 hover:bg-indigo-400");
20357
20430
  } }
20358
- function SymphiqFunnelAnalysisDashboardComponent_Conditional_76_Template(rf, ctx) { if (rf & 1) {
20359
- i0.ɵɵelementStart(0, "div", 47);
20360
- i0.ɵɵelement(1, "symphiq-funnel-analysis-overall-assessment", 66);
20361
- i0.ɵɵelementEnd();
20362
- } if (rf & 2) {
20363
- const ctx_r2 = i0.ɵɵnextContext();
20364
- i0.ɵɵadvance();
20365
- i0.ɵɵproperty("assessment", ctx_r2.performanceOverview().overallAssessment || i0.ɵɵpureFunction0(8, _c1))("revenueMetric", ctx_r2.revenueMetric())("charts", ctx_r2.chartsForItem("OVERALL_ASSESSMENT"))("metrics", ctx_r2.allMetrics())("isLightMode", ctx_r2.isLightMode())("isLoading", ctx_r2.isOverallAssessmentLoading())("isCompactMode", ctx_r2.viewModeService.isCompact())("isChartsLoading", ctx_r2.areChartsLoading());
20366
- } }
20367
- function SymphiqFunnelAnalysisDashboardComponent_Conditional_77_Conditional_0_Template(rf, ctx) { if (rf & 1) {
20368
- i0.ɵɵelementStart(0, "div", 67)(1, "div", 78);
20369
- i0.ɵɵelement(2, "div", 79);
20431
+ function SymphiqFunnelAnalysisDashboardComponent_Conditional_78_Conditional_1_Template(rf, ctx) { if (rf & 1) {
20432
+ i0.ɵɵelementStart(0, "div", 67)(1, "div", 69)(2, "div", 14);
20433
+ i0.ɵɵelement(3, "symphiq-skeleton-loader", 70);
20434
+ i0.ɵɵelementStart(4, "div", 71);
20435
+ i0.ɵɵelement(5, "symphiq-skeleton-loader", 70)(6, "symphiq-skeleton-loader", 70);
20436
+ i0.ɵɵelementEnd()();
20437
+ i0.ɵɵelementStart(7, "div", 72);
20438
+ i0.ɵɵelement(8, "symphiq-skeleton-loader", 70)(9, "symphiq-skeleton-loader", 70)(10, "symphiq-skeleton-loader", 70);
20370
20439
  i0.ɵɵelementEnd();
20371
- i0.ɵɵelementStart(3, "div", 80)(4, "div", 81);
20372
- i0.ɵɵnamespaceSVG();
20373
- i0.ɵɵelementStart(5, "svg", 82);
20374
- i0.ɵɵelement(6, "path", 83);
20375
- i0.ɵɵelementEnd()()()();
20440
+ i0.ɵɵelementStart(11, "div", 73);
20441
+ i0.ɵɵelement(12, "symphiq-skeleton-loader", 70)(13, "symphiq-skeleton-loader", 70);
20442
+ i0.ɵɵelementEnd()()();
20376
20443
  } if (rf & 2) {
20377
20444
  const ctx_r2 = i0.ɵɵnextContext(2);
20445
+ i0.ɵɵproperty("ngClass", ctx_r2.isLightMode() ? "bg-white border-slate-200" : "bg-slate-800 border-slate-700");
20446
+ i0.ɵɵadvance(3);
20447
+ i0.ɵɵproperty("width", "48px")("height", "48px")("isLightMode", ctx_r2.isLightMode());
20378
20448
  i0.ɵɵadvance(2);
20379
- i0.ɵɵproperty("ngClass", ctx_r2.isLightMode() ? "from-transparent via-blue-500/30 to-transparent" : "from-transparent via-blue-400/20 to-transparent");
20449
+ i0.ɵɵproperty("width", "40%")("height", "32px")("isLightMode", ctx_r2.isLightMode());
20450
+ i0.ɵɵadvance();
20451
+ i0.ɵɵproperty("width", "60%")("height", "20px")("isLightMode", ctx_r2.isLightMode());
20380
20452
  i0.ɵɵadvance(2);
20381
- i0.ɵɵproperty("ngClass", ctx_r2.isLightMode() ? "bg-gradient-to-br from-blue-50 to-indigo-50 border border-blue-200/50 shadow-lg shadow-blue-500/10" : "bg-gradient-to-br from-slate-900 to-slate-800 border border-blue-500/20 shadow-lg shadow-blue-500/5");
20453
+ i0.ɵɵproperty("width", "100%")("height", "18px")("isLightMode", ctx_r2.isLightMode());
20382
20454
  i0.ɵɵadvance();
20383
- i0.ɵɵproperty("ngClass", ctx_r2.isLightMode() ? "text-blue-500" : "text-blue-400");
20384
- } }
20385
- function SymphiqFunnelAnalysisDashboardComponent_Conditional_77_Conditional_14_For_2_Template(rf, ctx) { if (rf & 1) {
20386
- i0.ɵɵelementStart(0, "div", 85);
20387
- i0.ɵɵelement(1, "symphiq-funnel-analysis-insight-card", 86);
20388
- i0.ɵɵelementEnd();
20389
- } if (rf & 2) {
20390
- const insight_r11 = ctx.$implicit;
20391
- const $index_r12 = ctx.$index;
20392
- const ctx_r2 = i0.ɵɵnextContext(3);
20393
- i0.ɵɵclassMap(ctx_r2.getInsightCardClass(insight_r11));
20394
- i0.ɵɵstyleProp("animation-delay", 0.3 + $index_r12 * 0.1 + "s");
20395
- i0.ɵɵproperty("libSymphiqSearchHighlight", ctx_r2.searchService.highlightedResultId())("highlightId", "insight-" + $index_r12);
20455
+ i0.ɵɵproperty("width", "95%")("height", "18px")("isLightMode", ctx_r2.isLightMode());
20396
20456
  i0.ɵɵadvance();
20397
- i0.ɵɵproperty("insight", insight_r11)("allMetrics", ctx_r2.allMetrics())("charts", ctx_r2.chartsForInsight(insight_r11))("allCharts", ctx_r2.allCharts())("isLightMode", ctx_r2.isLightMode())("viewMode", ctx_r2.viewMode())("isCompactMode", false);
20457
+ i0.ɵɵproperty("width", "90%")("height", "18px")("isLightMode", ctx_r2.isLightMode());
20458
+ i0.ɵɵadvance(2);
20459
+ i0.ɵɵproperty("width", "100%")("height", "200px")("isLightMode", ctx_r2.isLightMode());
20460
+ i0.ɵɵadvance();
20461
+ i0.ɵɵproperty("width", "100%")("height", "200px")("isLightMode", ctx_r2.isLightMode());
20398
20462
  } }
20399
- function SymphiqFunnelAnalysisDashboardComponent_Conditional_77_Conditional_14_Template(rf, ctx) { if (rf & 1) {
20400
- i0.ɵɵelementStart(0, "div", 76);
20401
- i0.ɵɵrepeaterCreate(1, SymphiqFunnelAnalysisDashboardComponent_Conditional_77_Conditional_14_For_2_Template, 2, 13, "div", 84, i0.ɵɵrepeaterTrackByIndex);
20402
- i0.ɵɵelementEnd();
20463
+ function SymphiqFunnelAnalysisDashboardComponent_Conditional_78_Conditional_2_Template(rf, ctx) { if (rf & 1) {
20464
+ i0.ɵɵelement(0, "symphiq-funnel-analysis-overall-assessment", 68);
20403
20465
  } if (rf & 2) {
20404
20466
  const ctx_r2 = i0.ɵɵnextContext(2);
20405
- i0.ɵɵadvance();
20406
- i0.ɵɵrepeater(ctx_r2.insights());
20467
+ i0.ɵɵproperty("assessment", ctx_r2.performanceOverview().overallAssessment || i0.ɵɵpureFunction0(8, _c1))("revenueMetric", ctx_r2.revenueMetric())("charts", ctx_r2.chartsForItem("OVERALL_ASSESSMENT"))("metrics", ctx_r2.allMetrics())("isLightMode", ctx_r2.isLightMode())("isLoading", ctx_r2.isOverallAssessmentLoading())("isCompactMode", ctx_r2.viewModeService.isCompact())("isChartsLoading", ctx_r2.areChartsLoading());
20407
20468
  } }
20408
- function SymphiqFunnelAnalysisDashboardComponent_Conditional_77_Conditional_15_For_2_Template(rf, ctx) { if (rf & 1) {
20409
- i0.ɵɵelementStart(0, "div", 85);
20410
- i0.ɵɵelement(1, "symphiq-funnel-analysis-insight-card", 86);
20469
+ function SymphiqFunnelAnalysisDashboardComponent_Conditional_78_Template(rf, ctx) { if (rf & 1) {
20470
+ i0.ɵɵelementStart(0, "div", 48);
20471
+ i0.ɵɵconditionalCreate(1, SymphiqFunnelAnalysisDashboardComponent_Conditional_78_Conditional_1_Template, 14, 25, "div", 67)(2, SymphiqFunnelAnalysisDashboardComponent_Conditional_78_Conditional_2_Template, 1, 9, "symphiq-funnel-analysis-overall-assessment", 68);
20411
20472
  i0.ɵɵelementEnd();
20412
20473
  } if (rf & 2) {
20413
- const insight_r13 = ctx.$implicit;
20414
- const $index_r14 = ctx.$index;
20415
- const ctx_r2 = i0.ɵɵnextContext(3);
20416
- i0.ɵɵstyleProp("animation-delay", 0.3 + $index_r14 * 0.1 + "s");
20417
- i0.ɵɵproperty("libSymphiqSearchHighlight", ctx_r2.searchService.highlightedResultId())("highlightId", "insight-" + $index_r14);
20474
+ const ctx_r2 = i0.ɵɵnextContext();
20418
20475
  i0.ɵɵadvance();
20419
- i0.ɵɵproperty("insight", insight_r13)("allMetrics", ctx_r2.allMetrics())("charts", ctx_r2.chartsForInsight(insight_r13))("allCharts", ctx_r2.allCharts())("isLightMode", ctx_r2.isLightMode())("viewMode", ctx_r2.viewMode())("isCompactMode", true);
20476
+ i0.ɵɵconditional(ctx_r2.isDataLoading() ? 1 : 2);
20420
20477
  } }
20421
- function SymphiqFunnelAnalysisDashboardComponent_Conditional_77_Conditional_15_Template(rf, ctx) { if (rf & 1) {
20422
- i0.ɵɵelementStart(0, "div", 77);
20423
- i0.ɵɵrepeaterCreate(1, SymphiqFunnelAnalysisDashboardComponent_Conditional_77_Conditional_15_For_2_Template, 2, 11, "div", 87, i0.ɵɵrepeaterTrackByIndex);
20478
+ function SymphiqFunnelAnalysisDashboardComponent_Conditional_79_Conditional_0_Template(rf, ctx) { if (rf & 1) {
20479
+ i0.ɵɵelementStart(0, "div", 74)(1, "div", 85);
20480
+ i0.ɵɵelement(2, "div", 86);
20424
20481
  i0.ɵɵelementEnd();
20482
+ i0.ɵɵelementStart(3, "div", 87)(4, "div", 88);
20483
+ i0.ɵɵnamespaceSVG();
20484
+ i0.ɵɵelementStart(5, "svg", 89);
20485
+ i0.ɵɵelement(6, "path", 90);
20486
+ i0.ɵɵelementEnd()()()();
20425
20487
  } if (rf & 2) {
20426
20488
  const ctx_r2 = i0.ɵɵnextContext(2);
20489
+ i0.ɵɵadvance(2);
20490
+ i0.ɵɵproperty("ngClass", ctx_r2.isLightMode() ? "from-transparent via-blue-500/30 to-transparent" : "from-transparent via-blue-400/20 to-transparent");
20491
+ i0.ɵɵadvance(2);
20492
+ i0.ɵɵproperty("ngClass", ctx_r2.isLightMode() ? "bg-gradient-to-br from-blue-50 to-indigo-50 border border-blue-200/50 shadow-lg shadow-blue-500/10" : "bg-gradient-to-br from-slate-900 to-slate-800 border border-blue-500/20 shadow-lg shadow-blue-500/5");
20427
20493
  i0.ɵɵadvance();
20428
- i0.ɵɵrepeater(ctx_r2.insights());
20494
+ i0.ɵɵproperty("ngClass", ctx_r2.isLightMode() ? "text-blue-500" : "text-blue-400");
20429
20495
  } }
20430
- function SymphiqFunnelAnalysisDashboardComponent_Conditional_77_Conditional_16_For_2_Template(rf, ctx) { if (rf & 1) {
20431
- i0.ɵɵelementStart(0, "div", 88)(1, "div", 89)(2, "div", 90);
20432
- i0.ɵɵelement(3, "symphiq-skeleton-loader", 91)(4, "symphiq-skeleton-loader", 91);
20496
+ function SymphiqFunnelAnalysisDashboardComponent_Conditional_79_Conditional_14_For_2_Template(rf, ctx) { if (rf & 1) {
20497
+ i0.ɵɵelementStart(0, "div", 91)(1, "div", 92)(2, "div", 93);
20498
+ i0.ɵɵelement(3, "symphiq-skeleton-loader", 70)(4, "symphiq-skeleton-loader", 70);
20433
20499
  i0.ɵɵelementEnd();
20434
- i0.ɵɵelement(5, "symphiq-skeleton-loader", 91)(6, "symphiq-skeleton-loader", 91)(7, "symphiq-skeleton-loader", 91);
20435
- i0.ɵɵelementStart(8, "div", 92);
20436
- i0.ɵɵelement(9, "symphiq-skeleton-loader", 91)(10, "symphiq-skeleton-loader", 91);
20500
+ i0.ɵɵelement(5, "symphiq-skeleton-loader", 70)(6, "symphiq-skeleton-loader", 70)(7, "symphiq-skeleton-loader", 70);
20501
+ i0.ɵɵelementStart(8, "div", 94);
20502
+ i0.ɵɵelement(9, "symphiq-skeleton-loader", 70)(10, "symphiq-skeleton-loader", 70);
20437
20503
  i0.ɵɵelementEnd();
20438
- i0.ɵɵelementStart(11, "div", 93);
20439
- i0.ɵɵelement(12, "symphiq-skeleton-loader", 91)(13, "symphiq-skeleton-loader", 91);
20504
+ i0.ɵɵelementStart(11, "div", 95);
20505
+ i0.ɵɵelement(12, "symphiq-skeleton-loader", 70)(13, "symphiq-skeleton-loader", 70);
20440
20506
  i0.ɵɵelementEnd()()();
20441
20507
  } if (rf & 2) {
20442
20508
  const ctx_r2 = i0.ɵɵnextContext(3);
@@ -20460,31 +20526,76 @@ function SymphiqFunnelAnalysisDashboardComponent_Conditional_77_Conditional_16_F
20460
20526
  i0.ɵɵadvance();
20461
20527
  i0.ɵɵproperty("width", "80px")("height", "28px")("isLightMode", ctx_r2.isLightMode());
20462
20528
  } }
20463
- function SymphiqFunnelAnalysisDashboardComponent_Conditional_77_Conditional_16_Template(rf, ctx) { if (rf & 1) {
20464
- i0.ɵɵelementStart(0, "div", 76);
20465
- i0.ɵɵrepeaterCreate(1, SymphiqFunnelAnalysisDashboardComponent_Conditional_77_Conditional_16_For_2_Template, 14, 28, "div", 88, i0.ɵɵrepeaterTrackByIdentity);
20529
+ function SymphiqFunnelAnalysisDashboardComponent_Conditional_79_Conditional_14_Template(rf, ctx) { if (rf & 1) {
20530
+ i0.ɵɵelementStart(0, "div", 83);
20531
+ i0.ɵɵrepeaterCreate(1, SymphiqFunnelAnalysisDashboardComponent_Conditional_79_Conditional_14_For_2_Template, 14, 28, "div", 91, i0.ɵɵrepeaterTrackByIdentity);
20466
20532
  i0.ɵɵelementEnd();
20467
20533
  } if (rf & 2) {
20468
20534
  i0.ɵɵadvance();
20469
20535
  i0.ɵɵrepeater(i0.ɵɵpureFunction0(0, _c2));
20470
20536
  } }
20471
- function SymphiqFunnelAnalysisDashboardComponent_Conditional_77_Template(rf, ctx) { if (rf & 1) {
20472
- i0.ɵɵconditionalCreate(0, SymphiqFunnelAnalysisDashboardComponent_Conditional_77_Conditional_0_Template, 7, 3, "div", 67);
20473
- i0.ɵɵelementStart(1, "section", 68);
20474
- i0.ɵɵelement(2, "div", 69);
20475
- i0.ɵɵelementStart(3, "div", 70)(4, "div", 71)(5, "div", 37)(6, "div", 72)(7, "div", 37);
20537
+ function SymphiqFunnelAnalysisDashboardComponent_Conditional_79_Conditional_15_For_2_Template(rf, ctx) { if (rf & 1) {
20538
+ i0.ɵɵelementStart(0, "div", 97);
20539
+ i0.ɵɵelement(1, "symphiq-funnel-analysis-insight-card", 98);
20540
+ i0.ɵɵelementEnd();
20541
+ } if (rf & 2) {
20542
+ const insight_r11 = ctx.$implicit;
20543
+ const $index_r12 = ctx.$index;
20544
+ const ctx_r2 = i0.ɵɵnextContext(3);
20545
+ i0.ɵɵclassMap(ctx_r2.getInsightCardClass(insight_r11));
20546
+ i0.ɵɵstyleProp("animation-delay", 0.3 + $index_r12 * 0.1 + "s");
20547
+ i0.ɵɵproperty("libSymphiqSearchHighlight", ctx_r2.searchService.highlightedResultId())("highlightId", "insight-" + $index_r12);
20548
+ i0.ɵɵadvance();
20549
+ i0.ɵɵproperty("insight", insight_r11)("allMetrics", ctx_r2.allMetrics())("charts", ctx_r2.chartsForInsight(insight_r11))("allCharts", ctx_r2.allCharts())("isLightMode", ctx_r2.isLightMode())("viewMode", ctx_r2.viewMode())("isCompactMode", false);
20550
+ } }
20551
+ function SymphiqFunnelAnalysisDashboardComponent_Conditional_79_Conditional_15_Template(rf, ctx) { if (rf & 1) {
20552
+ i0.ɵɵelementStart(0, "div", 83);
20553
+ i0.ɵɵrepeaterCreate(1, SymphiqFunnelAnalysisDashboardComponent_Conditional_79_Conditional_15_For_2_Template, 2, 13, "div", 96, i0.ɵɵrepeaterTrackByIndex);
20554
+ i0.ɵɵelementEnd();
20555
+ } if (rf & 2) {
20556
+ const ctx_r2 = i0.ɵɵnextContext(2);
20557
+ i0.ɵɵadvance();
20558
+ i0.ɵɵrepeater(ctx_r2.insights());
20559
+ } }
20560
+ function SymphiqFunnelAnalysisDashboardComponent_Conditional_79_Conditional_16_For_2_Template(rf, ctx) { if (rf & 1) {
20561
+ i0.ɵɵelementStart(0, "div", 97);
20562
+ i0.ɵɵelement(1, "symphiq-funnel-analysis-insight-card", 98);
20563
+ i0.ɵɵelementEnd();
20564
+ } if (rf & 2) {
20565
+ const insight_r13 = ctx.$implicit;
20566
+ const $index_r14 = ctx.$index;
20567
+ const ctx_r2 = i0.ɵɵnextContext(3);
20568
+ i0.ɵɵstyleProp("animation-delay", 0.3 + $index_r14 * 0.1 + "s");
20569
+ i0.ɵɵproperty("libSymphiqSearchHighlight", ctx_r2.searchService.highlightedResultId())("highlightId", "insight-" + $index_r14);
20570
+ i0.ɵɵadvance();
20571
+ i0.ɵɵproperty("insight", insight_r13)("allMetrics", ctx_r2.allMetrics())("charts", ctx_r2.chartsForInsight(insight_r13))("allCharts", ctx_r2.allCharts())("isLightMode", ctx_r2.isLightMode())("viewMode", ctx_r2.viewMode())("isCompactMode", true);
20572
+ } }
20573
+ function SymphiqFunnelAnalysisDashboardComponent_Conditional_79_Conditional_16_Template(rf, ctx) { if (rf & 1) {
20574
+ i0.ɵɵelementStart(0, "div", 84);
20575
+ i0.ɵɵrepeaterCreate(1, SymphiqFunnelAnalysisDashboardComponent_Conditional_79_Conditional_16_For_2_Template, 2, 11, "div", 99, i0.ɵɵrepeaterTrackByIndex);
20576
+ i0.ɵɵelementEnd();
20577
+ } if (rf & 2) {
20578
+ const ctx_r2 = i0.ɵɵnextContext(2);
20579
+ i0.ɵɵadvance();
20580
+ i0.ɵɵrepeater(ctx_r2.insights());
20581
+ } }
20582
+ function SymphiqFunnelAnalysisDashboardComponent_Conditional_79_Template(rf, ctx) { if (rf & 1) {
20583
+ i0.ɵɵconditionalCreate(0, SymphiqFunnelAnalysisDashboardComponent_Conditional_79_Conditional_0_Template, 7, 3, "div", 74);
20584
+ i0.ɵɵelementStart(1, "section", 75);
20585
+ i0.ɵɵelement(2, "div", 76);
20586
+ i0.ɵɵelementStart(3, "div", 77)(4, "div", 78)(5, "div", 14)(6, "div", 79)(7, "div", 14);
20476
20587
  i0.ɵɵnamespaceSVG();
20477
- i0.ɵɵelementStart(8, "svg", 73);
20478
- i0.ɵɵelement(9, "path", 74);
20588
+ i0.ɵɵelementStart(8, "svg", 80);
20589
+ i0.ɵɵelement(9, "path", 81);
20479
20590
  i0.ɵɵelementEnd();
20480
20591
  i0.ɵɵnamespaceHTML();
20481
- i0.ɵɵelementStart(10, "h2", 75);
20592
+ i0.ɵɵelementStart(10, "h2", 82);
20482
20593
  i0.ɵɵtext(11, "Key Insights");
20483
20594
  i0.ɵɵelementEnd()()()();
20484
- i0.ɵɵelementStart(12, "span", 30);
20595
+ i0.ɵɵelementStart(12, "span", 32);
20485
20596
  i0.ɵɵtext(13);
20486
20597
  i0.ɵɵelementEnd()();
20487
- i0.ɵɵconditionalCreate(14, SymphiqFunnelAnalysisDashboardComponent_Conditional_77_Conditional_14_Template, 3, 0, "div", 76)(15, SymphiqFunnelAnalysisDashboardComponent_Conditional_77_Conditional_15_Template, 3, 0, "div", 77)(16, SymphiqFunnelAnalysisDashboardComponent_Conditional_77_Conditional_16_Template, 3, 1, "div", 76);
20598
+ i0.ɵɵconditionalCreate(14, SymphiqFunnelAnalysisDashboardComponent_Conditional_79_Conditional_14_Template, 3, 1, "div", 83)(15, SymphiqFunnelAnalysisDashboardComponent_Conditional_79_Conditional_15_Template, 3, 0, "div", 83)(16, SymphiqFunnelAnalysisDashboardComponent_Conditional_79_Conditional_16_Template, 3, 0, "div", 84);
20488
20599
  i0.ɵɵelementEnd()();
20489
20600
  } if (rf & 2) {
20490
20601
  const ctx_r2 = i0.ɵɵnextContext();
@@ -20502,16 +20613,16 @@ function SymphiqFunnelAnalysisDashboardComponent_Conditional_77_Template(rf, ctx
20502
20613
  i0.ɵɵadvance();
20503
20614
  i0.ɵɵtextInterpolate1("", ctx_r2.insights().length, " insights");
20504
20615
  i0.ɵɵadvance();
20505
- i0.ɵɵconditional(ctx_r2.viewModeService.isExpanded() ? 14 : !ctx_r2.viewModeService.isExpanded() ? 15 : 16);
20616
+ i0.ɵɵconditional(ctx_r2.isDataLoading() || ctx_r2.viewModeService.isExpanded() && ctx_r2.viewModeService.getIsTransitioning() ? 14 : ctx_r2.viewModeService.isExpanded() ? 15 : 16);
20506
20617
  } }
20507
- function SymphiqFunnelAnalysisDashboardComponent_Conditional_78_Conditional_0_Template(rf, ctx) { if (rf & 1) {
20508
- i0.ɵɵelementStart(0, "div", 94)(1, "div", 78);
20509
- i0.ɵɵelement(2, "div", 79);
20618
+ function SymphiqFunnelAnalysisDashboardComponent_Conditional_80_Conditional_0_Template(rf, ctx) { if (rf & 1) {
20619
+ i0.ɵɵelementStart(0, "div", 100)(1, "div", 85);
20620
+ i0.ɵɵelement(2, "div", 86);
20510
20621
  i0.ɵɵelementEnd();
20511
- i0.ɵɵelementStart(3, "div", 80)(4, "div", 81);
20622
+ i0.ɵɵelementStart(3, "div", 87)(4, "div", 88);
20512
20623
  i0.ɵɵnamespaceSVG();
20513
- i0.ɵɵelementStart(5, "svg", 82);
20514
- i0.ɵɵelement(6, "path", 110);
20624
+ i0.ɵɵelementStart(5, "svg", 89);
20625
+ i0.ɵɵelement(6, "path", 116);
20515
20626
  i0.ɵɵelementEnd()()()();
20516
20627
  } if (rf & 2) {
20517
20628
  const ctx_r2 = i0.ɵɵnextContext(2);
@@ -20522,13 +20633,13 @@ function SymphiqFunnelAnalysisDashboardComponent_Conditional_78_Conditional_0_Te
20522
20633
  i0.ɵɵadvance();
20523
20634
  i0.ɵɵproperty("ngClass", ctx_r2.isLightMode() ? "text-emerald-500" : "text-emerald-400");
20524
20635
  } }
20525
- function SymphiqFunnelAnalysisDashboardComponent_Conditional_78_Conditional_14_Template(rf, ctx) { if (rf & 1) {
20526
- i0.ɵɵelementStart(0, "div", 101);
20527
- i0.ɵɵelement(1, "div", 111);
20636
+ function SymphiqFunnelAnalysisDashboardComponent_Conditional_80_Conditional_14_Template(rf, ctx) { if (rf & 1) {
20637
+ i0.ɵɵelementStart(0, "div", 107);
20638
+ i0.ɵɵelement(1, "div", 117);
20528
20639
  i0.ɵɵelementEnd();
20529
20640
  } }
20530
- function SymphiqFunnelAnalysisDashboardComponent_Conditional_78_For_17_Conditional_0_Template(rf, ctx) { if (rf & 1) {
20531
- i0.ɵɵelementStart(0, "option", 112);
20641
+ function SymphiqFunnelAnalysisDashboardComponent_Conditional_80_For_17_Conditional_0_Template(rf, ctx) { if (rf & 1) {
20642
+ i0.ɵɵelementStart(0, "option", 118);
20532
20643
  i0.ɵɵtext(1);
20533
20644
  i0.ɵɵelementEnd();
20534
20645
  } if (rf & 2) {
@@ -20537,8 +20648,8 @@ function SymphiqFunnelAnalysisDashboardComponent_Conditional_78_For_17_Condition
20537
20648
  i0.ɵɵadvance();
20538
20649
  i0.ɵɵtextInterpolate(cat_r16.label);
20539
20650
  } }
20540
- function SymphiqFunnelAnalysisDashboardComponent_Conditional_78_For_17_Conditional_1_Template(rf, ctx) { if (rf & 1) {
20541
- i0.ɵɵelementStart(0, "option", 27);
20651
+ function SymphiqFunnelAnalysisDashboardComponent_Conditional_80_For_17_Conditional_1_Template(rf, ctx) { if (rf & 1) {
20652
+ i0.ɵɵelementStart(0, "option", 29);
20542
20653
  i0.ɵɵtext(1);
20543
20654
  i0.ɵɵelementEnd();
20544
20655
  } if (rf & 2) {
@@ -20547,24 +20658,24 @@ function SymphiqFunnelAnalysisDashboardComponent_Conditional_78_For_17_Condition
20547
20658
  i0.ɵɵadvance();
20548
20659
  i0.ɵɵtextInterpolate(cat_r16.label);
20549
20660
  } }
20550
- function SymphiqFunnelAnalysisDashboardComponent_Conditional_78_For_17_Template(rf, ctx) { if (rf & 1) {
20551
- i0.ɵɵconditionalCreate(0, SymphiqFunnelAnalysisDashboardComponent_Conditional_78_For_17_Conditional_0_Template, 2, 2, "option", 112)(1, SymphiqFunnelAnalysisDashboardComponent_Conditional_78_For_17_Conditional_1_Template, 2, 2, "option", 27);
20661
+ function SymphiqFunnelAnalysisDashboardComponent_Conditional_80_For_17_Template(rf, ctx) { if (rf & 1) {
20662
+ i0.ɵɵconditionalCreate(0, SymphiqFunnelAnalysisDashboardComponent_Conditional_80_For_17_Conditional_0_Template, 2, 2, "option", 118)(1, SymphiqFunnelAnalysisDashboardComponent_Conditional_80_For_17_Conditional_1_Template, 2, 2, "option", 29);
20552
20663
  } if (rf & 2) {
20553
20664
  const cat_r16 = ctx.$implicit;
20554
20665
  i0.ɵɵconditional(cat_r16.divider ? 0 : 1);
20555
20666
  } }
20556
- function SymphiqFunnelAnalysisDashboardComponent_Conditional_78_Conditional_20_Template(rf, ctx) { if (rf & 1) {
20667
+ function SymphiqFunnelAnalysisDashboardComponent_Conditional_80_Conditional_20_Template(rf, ctx) { if (rf & 1) {
20557
20668
  i0.ɵɵnamespaceSVG();
20558
- i0.ɵɵelement(0, "path", 104);
20669
+ i0.ɵɵelement(0, "path", 110);
20559
20670
  } }
20560
- function SymphiqFunnelAnalysisDashboardComponent_Conditional_78_Conditional_21_Template(rf, ctx) { if (rf & 1) {
20671
+ function SymphiqFunnelAnalysisDashboardComponent_Conditional_80_Conditional_21_Template(rf, ctx) { if (rf & 1) {
20561
20672
  i0.ɵɵnamespaceSVG();
20562
- i0.ɵɵelement(0, "path", 105);
20673
+ i0.ɵɵelement(0, "path", 111);
20563
20674
  } }
20564
- function SymphiqFunnelAnalysisDashboardComponent_Conditional_78_For_27_Conditional_0_Template(rf, ctx) { if (rf & 1) {
20675
+ function SymphiqFunnelAnalysisDashboardComponent_Conditional_80_For_27_Conditional_0_Template(rf, ctx) { if (rf & 1) {
20565
20676
  const _r17 = i0.ɵɵgetCurrentView();
20566
- i0.ɵɵelementStart(0, "button", 114);
20567
- i0.ɵɵlistener("click", function SymphiqFunnelAnalysisDashboardComponent_Conditional_78_For_27_Conditional_0_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r17); const cat_r18 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.changeCategoryFilter(cat_r18.value)); });
20677
+ i0.ɵɵelementStart(0, "button", 120);
20678
+ i0.ɵɵlistener("click", function SymphiqFunnelAnalysisDashboardComponent_Conditional_80_For_27_Conditional_0_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r17); const cat_r18 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.changeCategoryFilter(cat_r18.value)); });
20568
20679
  i0.ɵɵtext(1);
20569
20680
  i0.ɵɵelementEnd();
20570
20681
  } if (rf & 2) {
@@ -20575,71 +20686,110 @@ function SymphiqFunnelAnalysisDashboardComponent_Conditional_78_For_27_Condition
20575
20686
  i0.ɵɵadvance();
20576
20687
  i0.ɵɵtextInterpolate1(" ", cat_r18.label, " ");
20577
20688
  } }
20578
- function SymphiqFunnelAnalysisDashboardComponent_Conditional_78_For_27_Template(rf, ctx) { if (rf & 1) {
20579
- i0.ɵɵconditionalCreate(0, SymphiqFunnelAnalysisDashboardComponent_Conditional_78_For_27_Conditional_0_Template, 2, 4, "button", 113);
20689
+ function SymphiqFunnelAnalysisDashboardComponent_Conditional_80_For_27_Template(rf, ctx) { if (rf & 1) {
20690
+ i0.ɵɵconditionalCreate(0, SymphiqFunnelAnalysisDashboardComponent_Conditional_80_For_27_Conditional_0_Template, 2, 4, "button", 119);
20580
20691
  } if (rf & 2) {
20581
20692
  const cat_r18 = ctx.$implicit;
20582
20693
  i0.ɵɵconditional(!cat_r18.divider ? 0 : -1);
20583
20694
  } }
20584
- function SymphiqFunnelAnalysisDashboardComponent_Conditional_78_For_30_Conditional_2_Conditional_0_For_2_Template(rf, ctx) { if (rf & 1) {
20585
- i0.ɵɵelementStart(0, "div", 120);
20586
- i0.ɵɵelement(1, "symphiq-funnel-analysis-metric-card", 121);
20695
+ function SymphiqFunnelAnalysisDashboardComponent_Conditional_80_Conditional_28_For_2_For_10_Template(rf, ctx) { if (rf & 1) {
20696
+ i0.ɵɵelement(0, "symphiq-skeleton-loader", 70);
20697
+ } if (rf & 2) {
20698
+ const ctx_r2 = i0.ɵɵnextContext(4);
20699
+ i0.ɵɵproperty("width", "100%")("height", "120px")("isLightMode", ctx_r2.isLightMode());
20700
+ } }
20701
+ function SymphiqFunnelAnalysisDashboardComponent_Conditional_80_Conditional_28_For_2_Template(rf, ctx) { if (rf & 1) {
20702
+ i0.ɵɵelementStart(0, "div", 121)(1, "div", 122)(2, "div", 14);
20703
+ i0.ɵɵelement(3, "symphiq-skeleton-loader", 70);
20704
+ i0.ɵɵelementStart(4, "div", 72);
20705
+ i0.ɵɵelement(5, "symphiq-skeleton-loader", 70)(6, "symphiq-skeleton-loader", 70);
20706
+ i0.ɵɵelementEnd()();
20707
+ i0.ɵɵelement(7, "symphiq-skeleton-loader", 70);
20708
+ i0.ɵɵelementEnd();
20709
+ i0.ɵɵelementStart(8, "div", 123);
20710
+ i0.ɵɵrepeaterCreate(9, SymphiqFunnelAnalysisDashboardComponent_Conditional_80_Conditional_28_For_2_For_10_Template, 1, 3, "symphiq-skeleton-loader", 70, i0.ɵɵrepeaterTrackByIdentity);
20711
+ i0.ɵɵelementEnd()();
20712
+ } if (rf & 2) {
20713
+ const ctx_r2 = i0.ɵɵnextContext(3);
20714
+ i0.ɵɵproperty("ngClass", ctx_r2.isLightMode() ? "bg-white border-slate-200" : "bg-slate-800 border-slate-700");
20715
+ i0.ɵɵadvance(3);
20716
+ i0.ɵɵproperty("width", "40px")("height", "40px")("isLightMode", ctx_r2.isLightMode());
20717
+ i0.ɵɵadvance(2);
20718
+ i0.ɵɵproperty("width", "150px")("height", "24px")("isLightMode", ctx_r2.isLightMode());
20719
+ i0.ɵɵadvance();
20720
+ i0.ɵɵproperty("width", "100px")("height", "16px")("isLightMode", ctx_r2.isLightMode());
20721
+ i0.ɵɵadvance();
20722
+ i0.ɵɵproperty("width", "80px")("height", "36px")("isLightMode", ctx_r2.isLightMode());
20723
+ i0.ɵɵadvance(2);
20724
+ i0.ɵɵrepeater(i0.ɵɵpureFunction0(13, _c4));
20725
+ } }
20726
+ function SymphiqFunnelAnalysisDashboardComponent_Conditional_80_Conditional_28_Template(rf, ctx) { if (rf & 1) {
20727
+ i0.ɵɵelementStart(0, "div", 114);
20728
+ i0.ɵɵrepeaterCreate(1, SymphiqFunnelAnalysisDashboardComponent_Conditional_80_Conditional_28_For_2_Template, 11, 14, "div", 121, i0.ɵɵrepeaterTrackByIdentity);
20729
+ i0.ɵɵelementEnd();
20730
+ } if (rf & 2) {
20731
+ i0.ɵɵadvance();
20732
+ i0.ɵɵrepeater(i0.ɵɵpureFunction0(0, _c3));
20733
+ } }
20734
+ function SymphiqFunnelAnalysisDashboardComponent_Conditional_80_Conditional_29_For_2_Conditional_2_Conditional_0_For_2_Template(rf, ctx) { if (rf & 1) {
20735
+ i0.ɵɵelementStart(0, "div", 130);
20736
+ i0.ɵɵelement(1, "symphiq-funnel-analysis-metric-card", 131);
20587
20737
  i0.ɵɵelementEnd();
20588
20738
  } if (rf & 2) {
20589
20739
  const metric_r19 = ctx.$implicit;
20590
- const ɵ$index_386_r20 = ctx.$index;
20591
- const ɵ$index_377_r21 = i0.ɵɵnextContext(3).$index;
20592
- const ctx_r2 = i0.ɵɵnextContext(2);
20593
- i0.ɵɵclassMap(ctx_r2.getBentoCardClass(metric_r19, ɵ$index_386_r20));
20594
- i0.ɵɵstyleProp("animation-delay", 0.6 + ɵ$index_377_r21 * 0.15 + ɵ$index_386_r20 * 0.08 + "s");
20740
+ const ɵ$index_447_r20 = ctx.$index;
20741
+ const ɵ$index_438_r21 = i0.ɵɵnextContext(3).$index;
20742
+ const ctx_r2 = i0.ɵɵnextContext(3);
20743
+ i0.ɵɵclassMap(ctx_r2.getBentoCardClass(metric_r19, ɵ$index_447_r20));
20744
+ i0.ɵɵstyleProp("animation-delay", 0.6 + ɵ$index_438_r21 * 0.15 + ɵ$index_447_r20 * 0.08 + "s");
20595
20745
  i0.ɵɵadvance();
20596
20746
  i0.ɵɵproperty("metric", metric_r19)("insights", ctx_r2.insights())("charts", ctx_r2.chartsForMetric(metric_r19))("allCharts", ctx_r2.allCharts())("analysis", ctx_r2.funnelAnalysis())("isLightMode", ctx_r2.isLightMode())("viewMode", ctx_r2.viewMode())("isCompactMode", false);
20597
20747
  } }
20598
- function SymphiqFunnelAnalysisDashboardComponent_Conditional_78_For_30_Conditional_2_Conditional_0_Template(rf, ctx) { if (rf & 1) {
20599
- i0.ɵɵelementStart(0, "div", 117);
20600
- i0.ɵɵrepeaterCreate(1, SymphiqFunnelAnalysisDashboardComponent_Conditional_78_For_30_Conditional_2_Conditional_0_For_2_Template, 2, 12, "div", 119, i0.ɵɵrepeaterTrackByIndex);
20748
+ function SymphiqFunnelAnalysisDashboardComponent_Conditional_80_Conditional_29_For_2_Conditional_2_Conditional_0_Template(rf, ctx) { if (rf & 1) {
20749
+ i0.ɵɵelementStart(0, "div", 127);
20750
+ i0.ɵɵrepeaterCreate(1, SymphiqFunnelAnalysisDashboardComponent_Conditional_80_Conditional_29_For_2_Conditional_2_Conditional_0_For_2_Template, 2, 12, "div", 129, i0.ɵɵrepeaterTrackByIndex);
20601
20751
  i0.ɵɵelementEnd();
20602
20752
  } if (rf & 2) {
20603
20753
  const funnelGroup_r22 = i0.ɵɵnextContext(2).$implicit;
20604
20754
  i0.ɵɵadvance();
20605
20755
  i0.ɵɵrepeater(funnelGroup_r22.relatedMetrics);
20606
20756
  } }
20607
- function SymphiqFunnelAnalysisDashboardComponent_Conditional_78_For_30_Conditional_2_Conditional_1_For_2_Template(rf, ctx) { if (rf & 1) {
20608
- i0.ɵɵelementStart(0, "div", 120);
20609
- i0.ɵɵelement(1, "symphiq-funnel-analysis-metric-card", 116);
20757
+ function SymphiqFunnelAnalysisDashboardComponent_Conditional_80_Conditional_29_For_2_Conditional_2_Conditional_1_For_2_Template(rf, ctx) { if (rf & 1) {
20758
+ i0.ɵɵelementStart(0, "div", 130);
20759
+ i0.ɵɵelement(1, "symphiq-funnel-analysis-metric-card", 126);
20610
20760
  i0.ɵɵelementEnd();
20611
20761
  } if (rf & 2) {
20612
20762
  const metric_r23 = ctx.$implicit;
20613
- const ɵ$index_394_r24 = ctx.$index;
20614
- const ɵ$index_377_r21 = i0.ɵɵnextContext(3).$index;
20615
- const ctx_r2 = i0.ɵɵnextContext(2);
20616
- i0.ɵɵstyleProp("animation-delay", 0.6 + ɵ$index_377_r21 * 0.15 + ɵ$index_394_r24 * 0.08 + "s");
20763
+ const ɵ$index_455_r24 = ctx.$index;
20764
+ const ɵ$index_438_r21 = i0.ɵɵnextContext(3).$index;
20765
+ const ctx_r2 = i0.ɵɵnextContext(3);
20766
+ i0.ɵɵstyleProp("animation-delay", 0.6 + ɵ$index_438_r21 * 0.15 + ɵ$index_455_r24 * 0.08 + "s");
20617
20767
  i0.ɵɵadvance();
20618
20768
  i0.ɵɵproperty("metric", metric_r23)("insights", ctx_r2.insights())("charts", ctx_r2.chartsForMetric(metric_r23))("allCharts", ctx_r2.allCharts())("analysis", ctx_r2.funnelAnalysis())("isLightMode", ctx_r2.isLightMode())("viewMode", ctx_r2.viewMode())("isCompactMode", true);
20619
20769
  } }
20620
- function SymphiqFunnelAnalysisDashboardComponent_Conditional_78_For_30_Conditional_2_Conditional_1_Template(rf, ctx) { if (rf & 1) {
20621
- i0.ɵɵelementStart(0, "div", 118);
20622
- i0.ɵɵrepeaterCreate(1, SymphiqFunnelAnalysisDashboardComponent_Conditional_78_For_30_Conditional_2_Conditional_1_For_2_Template, 2, 10, "div", 122, i0.ɵɵrepeaterTrackByIndex);
20770
+ function SymphiqFunnelAnalysisDashboardComponent_Conditional_80_Conditional_29_For_2_Conditional_2_Conditional_1_Template(rf, ctx) { if (rf & 1) {
20771
+ i0.ɵɵelementStart(0, "div", 128);
20772
+ i0.ɵɵrepeaterCreate(1, SymphiqFunnelAnalysisDashboardComponent_Conditional_80_Conditional_29_For_2_Conditional_2_Conditional_1_For_2_Template, 2, 10, "div", 132, i0.ɵɵrepeaterTrackByIndex);
20623
20773
  i0.ɵɵelementEnd();
20624
20774
  } if (rf & 2) {
20625
20775
  const funnelGroup_r22 = i0.ɵɵnextContext(2).$implicit;
20626
20776
  i0.ɵɵadvance();
20627
20777
  i0.ɵɵrepeater(funnelGroup_r22.relatedMetrics);
20628
20778
  } }
20629
- function SymphiqFunnelAnalysisDashboardComponent_Conditional_78_For_30_Conditional_2_Conditional_2_For_2_Template(rf, ctx) { if (rf & 1) {
20630
- i0.ɵɵelementStart(0, "div", 123)(1, "div", 89)(2, "div", 98);
20631
- i0.ɵɵelement(3, "symphiq-skeleton-loader", 91)(4, "symphiq-skeleton-loader", 91);
20779
+ function SymphiqFunnelAnalysisDashboardComponent_Conditional_80_Conditional_29_For_2_Conditional_2_Conditional_2_For_2_Template(rf, ctx) { if (rf & 1) {
20780
+ i0.ɵɵelementStart(0, "div", 133)(1, "div", 92)(2, "div", 104);
20781
+ i0.ɵɵelement(3, "symphiq-skeleton-loader", 70)(4, "symphiq-skeleton-loader", 70);
20632
20782
  i0.ɵɵelementEnd();
20633
- i0.ɵɵelement(5, "symphiq-skeleton-loader", 91);
20634
- i0.ɵɵelementStart(6, "div", 124);
20635
- i0.ɵɵelement(7, "symphiq-skeleton-loader", 91)(8, "symphiq-skeleton-loader", 91);
20783
+ i0.ɵɵelement(5, "symphiq-skeleton-loader", 70);
20784
+ i0.ɵɵelementStart(6, "div", 134);
20785
+ i0.ɵɵelement(7, "symphiq-skeleton-loader", 70)(8, "symphiq-skeleton-loader", 70);
20636
20786
  i0.ɵɵelementEnd();
20637
- i0.ɵɵelement(9, "symphiq-skeleton-loader", 91)(10, "symphiq-skeleton-loader", 91);
20638
- i0.ɵɵelementStart(11, "div", 125);
20639
- i0.ɵɵelement(12, "symphiq-skeleton-loader", 91);
20787
+ i0.ɵɵelement(9, "symphiq-skeleton-loader", 70)(10, "symphiq-skeleton-loader", 70);
20788
+ i0.ɵɵelementStart(11, "div", 135);
20789
+ i0.ɵɵelement(12, "symphiq-skeleton-loader", 70);
20640
20790
  i0.ɵɵelementEnd()()();
20641
20791
  } if (rf & 2) {
20642
- const ctx_r2 = i0.ɵɵnextContext(5);
20792
+ const ctx_r2 = i0.ɵɵnextContext(6);
20643
20793
  i0.ɵɵproperty("ngClass", ctx_r2.isLightMode() ? "bg-white border-slate-200" : "bg-slate-800 border-slate-700");
20644
20794
  i0.ɵɵadvance(3);
20645
20795
  i0.ɵɵproperty("width", "60%")("height", "22px")("isLightMode", ctx_r2.isLightMode());
@@ -20658,51 +20808,51 @@ function SymphiqFunnelAnalysisDashboardComponent_Conditional_78_For_30_Condition
20658
20808
  i0.ɵɵadvance(2);
20659
20809
  i0.ɵɵproperty("width", "100%")("height", "120px")("isLightMode", ctx_r2.isLightMode());
20660
20810
  } }
20661
- function SymphiqFunnelAnalysisDashboardComponent_Conditional_78_For_30_Conditional_2_Conditional_2_Template(rf, ctx) { if (rf & 1) {
20662
- i0.ɵɵelementStart(0, "div", 117);
20663
- i0.ɵɵrepeaterCreate(1, SymphiqFunnelAnalysisDashboardComponent_Conditional_78_For_30_Conditional_2_Conditional_2_For_2_Template, 13, 25, "div", 123, i0.ɵɵrepeaterTrackByIdentity);
20811
+ function SymphiqFunnelAnalysisDashboardComponent_Conditional_80_Conditional_29_For_2_Conditional_2_Conditional_2_Template(rf, ctx) { if (rf & 1) {
20812
+ i0.ɵɵelementStart(0, "div", 127);
20813
+ i0.ɵɵrepeaterCreate(1, SymphiqFunnelAnalysisDashboardComponent_Conditional_80_Conditional_29_For_2_Conditional_2_Conditional_2_For_2_Template, 13, 25, "div", 133, i0.ɵɵrepeaterTrackByIdentity);
20664
20814
  i0.ɵɵelementEnd();
20665
20815
  } if (rf & 2) {
20666
20816
  i0.ɵɵadvance();
20667
- i0.ɵɵrepeater(i0.ɵɵpureFunction0(0, _c3));
20817
+ i0.ɵɵrepeater(i0.ɵɵpureFunction0(0, _c4));
20668
20818
  } }
20669
- function SymphiqFunnelAnalysisDashboardComponent_Conditional_78_For_30_Conditional_2_Template(rf, ctx) { if (rf & 1) {
20670
- i0.ɵɵconditionalCreate(0, SymphiqFunnelAnalysisDashboardComponent_Conditional_78_For_30_Conditional_2_Conditional_0_Template, 3, 0, "div", 117)(1, SymphiqFunnelAnalysisDashboardComponent_Conditional_78_For_30_Conditional_2_Conditional_1_Template, 3, 0, "div", 118)(2, SymphiqFunnelAnalysisDashboardComponent_Conditional_78_For_30_Conditional_2_Conditional_2_Template, 3, 1, "div", 117);
20819
+ function SymphiqFunnelAnalysisDashboardComponent_Conditional_80_Conditional_29_For_2_Conditional_2_Template(rf, ctx) { if (rf & 1) {
20820
+ i0.ɵɵconditionalCreate(0, SymphiqFunnelAnalysisDashboardComponent_Conditional_80_Conditional_29_For_2_Conditional_2_Conditional_0_Template, 3, 0, "div", 127)(1, SymphiqFunnelAnalysisDashboardComponent_Conditional_80_Conditional_29_For_2_Conditional_2_Conditional_1_Template, 3, 0, "div", 128)(2, SymphiqFunnelAnalysisDashboardComponent_Conditional_80_Conditional_29_For_2_Conditional_2_Conditional_2_Template, 3, 1, "div", 127);
20671
20821
  } if (rf & 2) {
20672
- const ctx_r2 = i0.ɵɵnextContext(3);
20822
+ const ctx_r2 = i0.ɵɵnextContext(4);
20673
20823
  i0.ɵɵconditional(ctx_r2.viewModeService.isExpanded() ? 0 : !ctx_r2.viewModeService.isExpanded() ? 1 : 2);
20674
20824
  } }
20675
- function SymphiqFunnelAnalysisDashboardComponent_Conditional_78_For_30_Template(rf, ctx) { if (rf & 1) {
20676
- i0.ɵɵelementStart(0, "div", 115);
20677
- i0.ɵɵelement(1, "symphiq-funnel-analysis-metric-card", 116);
20825
+ function SymphiqFunnelAnalysisDashboardComponent_Conditional_80_Conditional_29_For_2_Template(rf, ctx) { if (rf & 1) {
20826
+ i0.ɵɵelementStart(0, "div", 125);
20827
+ i0.ɵɵelement(1, "symphiq-funnel-analysis-metric-card", 126);
20678
20828
  i0.ɵɵelementEnd();
20679
- i0.ɵɵconditionalCreate(2, SymphiqFunnelAnalysisDashboardComponent_Conditional_78_For_30_Conditional_2_Template, 3, 1);
20829
+ i0.ɵɵconditionalCreate(2, SymphiqFunnelAnalysisDashboardComponent_Conditional_80_Conditional_29_For_2_Conditional_2_Template, 3, 1);
20680
20830
  } if (rf & 2) {
20681
20831
  const funnelGroup_r22 = ctx.$implicit;
20682
- const ɵ$index_377_r21 = ctx.$index;
20683
- const ctx_r2 = i0.ɵɵnextContext(2);
20684
- i0.ɵɵstyleProp("animation-delay", 0.5 + ɵ$index_377_r21 * 0.15 + "s");
20685
- i0.ɵɵproperty("libSymphiqSearchHighlight", ctx_r2.searchService.highlightedResultId())("highlightId", "metric-" + ɵ$index_377_r21);
20832
+ const ɵ$index_438_r21 = ctx.$index;
20833
+ const ctx_r2 = i0.ɵɵnextContext(3);
20834
+ i0.ɵɵstyleProp("animation-delay", 0.5 + ɵ$index_438_r21 * 0.15 + "s");
20835
+ i0.ɵɵproperty("libSymphiqSearchHighlight", ctx_r2.searchService.highlightedResultId())("highlightId", "metric-" + ɵ$index_438_r21);
20686
20836
  i0.ɵɵadvance();
20687
20837
  i0.ɵɵproperty("metric", funnelGroup_r22.funnelMetric)("insights", ctx_r2.insights())("charts", ctx_r2.chartsForMetric(funnelGroup_r22.funnelMetric))("allCharts", ctx_r2.allCharts())("analysis", ctx_r2.funnelAnalysis())("isLightMode", ctx_r2.isLightMode())("viewMode", ctx_r2.viewMode())("isCompactMode", ctx_r2.viewModeService.isCompact());
20688
20838
  i0.ɵɵadvance();
20689
20839
  i0.ɵɵconditional(funnelGroup_r22.relatedMetrics.length > 0 ? 2 : -1);
20690
20840
  } }
20691
- function SymphiqFunnelAnalysisDashboardComponent_Conditional_78_ForEmpty_31_Template(rf, ctx) { if (rf & 1) {
20692
- i0.ɵɵelementStart(0, "div", 109);
20841
+ function SymphiqFunnelAnalysisDashboardComponent_Conditional_80_Conditional_29_ForEmpty_3_Template(rf, ctx) { if (rf & 1) {
20842
+ i0.ɵɵelementStart(0, "div", 124);
20693
20843
  i0.ɵɵnamespaceSVG();
20694
- i0.ɵɵelementStart(1, "svg", 126);
20695
- i0.ɵɵelement(2, "path", 99);
20844
+ i0.ɵɵelementStart(1, "svg", 136);
20845
+ i0.ɵɵelement(2, "path", 105);
20696
20846
  i0.ɵɵelementEnd();
20697
20847
  i0.ɵɵnamespaceHTML();
20698
- i0.ɵɵelementStart(3, "h3", 127);
20848
+ i0.ɵɵelementStart(3, "h3", 137);
20699
20849
  i0.ɵɵtext(4, "No Metrics Found");
20700
20850
  i0.ɵɵelementEnd();
20701
- i0.ɵɵelementStart(5, "p", 128);
20851
+ i0.ɵɵelementStart(5, "p", 138);
20702
20852
  i0.ɵɵtext(6, "No performance metrics match your current filter selection. Try adjusting your filters to see more results.");
20703
20853
  i0.ɵɵelementEnd()();
20704
20854
  } if (rf & 2) {
20705
- const ctx_r2 = i0.ɵɵnextContext(2);
20855
+ const ctx_r2 = i0.ɵɵnextContext(3);
20706
20856
  i0.ɵɵproperty("ngClass", ctx_r2.isLightMode() ? "bg-slate-50 border-slate-200" : "bg-slate-800/50 border-slate-700");
20707
20857
  i0.ɵɵadvance();
20708
20858
  i0.ɵɵproperty("ngClass", ctx_r2.isLightMode() ? "text-slate-300" : "text-slate-600");
@@ -20711,43 +20861,52 @@ function SymphiqFunnelAnalysisDashboardComponent_Conditional_78_ForEmpty_31_Temp
20711
20861
  i0.ɵɵadvance(2);
20712
20862
  i0.ɵɵproperty("ngClass", ctx_r2.isLightMode() ? "text-slate-600" : "text-slate-400");
20713
20863
  } }
20714
- function SymphiqFunnelAnalysisDashboardComponent_Conditional_78_Template(rf, ctx) { if (rf & 1) {
20864
+ function SymphiqFunnelAnalysisDashboardComponent_Conditional_80_Conditional_29_Template(rf, ctx) { if (rf & 1) {
20865
+ i0.ɵɵelementStart(0, "div", 114);
20866
+ i0.ɵɵrepeaterCreate(1, SymphiqFunnelAnalysisDashboardComponent_Conditional_80_Conditional_29_For_2_Template, 3, 13, null, null, i0.ɵɵrepeaterTrackByIndex, false, SymphiqFunnelAnalysisDashboardComponent_Conditional_80_Conditional_29_ForEmpty_3_Template, 7, 4, "div", 124);
20867
+ i0.ɵɵelementEnd();
20868
+ } if (rf & 2) {
20869
+ const ctx_r2 = i0.ɵɵnextContext(2);
20870
+ i0.ɵɵclassProp("animate-content-change", ctx_r2.isCategoryTransitioning())("transition-opacity-slow", ctx_r2.isCategoryTransitioning());
20871
+ i0.ɵɵadvance();
20872
+ i0.ɵɵrepeater(ctx_r2.groupedMetrics());
20873
+ } }
20874
+ function SymphiqFunnelAnalysisDashboardComponent_Conditional_80_Template(rf, ctx) { if (rf & 1) {
20715
20875
  const _r15 = i0.ɵɵgetCurrentView();
20716
- i0.ɵɵconditionalCreate(0, SymphiqFunnelAnalysisDashboardComponent_Conditional_78_Conditional_0_Template, 7, 3, "div", 94);
20717
- i0.ɵɵelementStart(1, "section", 95);
20718
- i0.ɵɵelement(2, "div", 96);
20719
- i0.ɵɵelementStart(3, "div", 70)(4, "div", 97)(5, "div", 98)(6, "div", 37)(7, "div", 72)(8, "div", 37);
20876
+ i0.ɵɵconditionalCreate(0, SymphiqFunnelAnalysisDashboardComponent_Conditional_80_Conditional_0_Template, 7, 3, "div", 100);
20877
+ i0.ɵɵelementStart(1, "section", 101);
20878
+ i0.ɵɵelement(2, "div", 102);
20879
+ i0.ɵɵelementStart(3, "div", 77)(4, "div", 103)(5, "div", 104)(6, "div", 14)(7, "div", 79)(8, "div", 14);
20720
20880
  i0.ɵɵnamespaceSVG();
20721
- i0.ɵɵelementStart(9, "svg", 73);
20722
- i0.ɵɵelement(10, "path", 99);
20881
+ i0.ɵɵelementStart(9, "svg", 80);
20882
+ i0.ɵɵelement(10, "path", 105);
20723
20883
  i0.ɵɵelementEnd();
20724
20884
  i0.ɵɵnamespaceHTML();
20725
- i0.ɵɵelementStart(11, "h2", 75);
20885
+ i0.ɵɵelementStart(11, "h2", 82);
20726
20886
  i0.ɵɵtext(12, "Performance Metrics");
20727
20887
  i0.ɵɵelementEnd()()()();
20728
- i0.ɵɵelementStart(13, "div", 100);
20729
- i0.ɵɵconditionalCreate(14, SymphiqFunnelAnalysisDashboardComponent_Conditional_78_Conditional_14_Template, 2, 0, "div", 101);
20730
- i0.ɵɵelementStart(15, "select", 102);
20731
- i0.ɵɵlistener("ngModelChange", function SymphiqFunnelAnalysisDashboardComponent_Conditional_78_Template_select_ngModelChange_15_listener($event) { i0.ɵɵrestoreView(_r15); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.changeCategoryFilter($event)); });
20732
- i0.ɵɵrepeaterCreate(16, SymphiqFunnelAnalysisDashboardComponent_Conditional_78_For_17_Template, 2, 1, null, null, _forTrack0$1);
20733
- i0.ɵɵelementEnd();
20734
- i0.ɵɵelementStart(18, "button", 103);
20735
- i0.ɵɵlistener("click", function SymphiqFunnelAnalysisDashboardComponent_Conditional_78_Template_button_click_18_listener() { i0.ɵɵrestoreView(_r15); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.toggleSortOrder()); });
20888
+ i0.ɵɵelementStart(13, "div", 106);
20889
+ i0.ɵɵconditionalCreate(14, SymphiqFunnelAnalysisDashboardComponent_Conditional_80_Conditional_14_Template, 2, 0, "div", 107);
20890
+ i0.ɵɵelementStart(15, "select", 108);
20891
+ i0.ɵɵlistener("ngModelChange", function SymphiqFunnelAnalysisDashboardComponent_Conditional_80_Template_select_ngModelChange_15_listener($event) { i0.ɵɵrestoreView(_r15); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.changeCategoryFilter($event)); });
20892
+ i0.ɵɵrepeaterCreate(16, SymphiqFunnelAnalysisDashboardComponent_Conditional_80_For_17_Template, 2, 1, null, null, _forTrack0$1);
20893
+ i0.ɵɵelementEnd();
20894
+ i0.ɵɵelementStart(18, "button", 109);
20895
+ i0.ɵɵlistener("click", function SymphiqFunnelAnalysisDashboardComponent_Conditional_80_Template_button_click_18_listener() { i0.ɵɵrestoreView(_r15); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.toggleSortOrder()); });
20736
20896
  i0.ɵɵnamespaceSVG();
20737
- i0.ɵɵelementStart(19, "svg", 19);
20738
- i0.ɵɵconditionalCreate(20, SymphiqFunnelAnalysisDashboardComponent_Conditional_78_Conditional_20_Template, 1, 0, ":svg:path", 104);
20739
- i0.ɵɵconditionalCreate(21, SymphiqFunnelAnalysisDashboardComponent_Conditional_78_Conditional_21_Template, 1, 0, ":svg:path", 105);
20897
+ i0.ɵɵelementStart(19, "svg", 21);
20898
+ i0.ɵɵconditionalCreate(20, SymphiqFunnelAnalysisDashboardComponent_Conditional_80_Conditional_20_Template, 1, 0, ":svg:path", 110);
20899
+ i0.ɵɵconditionalCreate(21, SymphiqFunnelAnalysisDashboardComponent_Conditional_80_Conditional_21_Template, 1, 0, ":svg:path", 111);
20740
20900
  i0.ɵɵelementEnd();
20741
20901
  i0.ɵɵnamespaceHTML();
20742
20902
  i0.ɵɵelementStart(22, "span");
20743
20903
  i0.ɵɵtext(23, "Sort");
20744
20904
  i0.ɵɵelementEnd()()()();
20745
- i0.ɵɵelementStart(24, "div", 106)(25, "div", 107);
20746
- i0.ɵɵrepeaterCreate(26, SymphiqFunnelAnalysisDashboardComponent_Conditional_78_For_27_Template, 1, 1, null, null, _forTrack0$1);
20747
- i0.ɵɵelementEnd()()();
20748
- i0.ɵɵelementStart(28, "div", 108);
20749
- i0.ɵɵrepeaterCreate(29, SymphiqFunnelAnalysisDashboardComponent_Conditional_78_For_30_Template, 3, 13, null, null, i0.ɵɵrepeaterTrackByIndex, false, SymphiqFunnelAnalysisDashboardComponent_Conditional_78_ForEmpty_31_Template, 7, 4, "div", 109);
20905
+ i0.ɵɵelementStart(24, "div", 112)(25, "div", 113);
20906
+ i0.ɵɵrepeaterCreate(26, SymphiqFunnelAnalysisDashboardComponent_Conditional_80_For_27_Template, 1, 1, null, null, _forTrack0$1);
20750
20907
  i0.ɵɵelementEnd()()();
20908
+ i0.ɵɵconditionalCreate(28, SymphiqFunnelAnalysisDashboardComponent_Conditional_80_Conditional_28_Template, 3, 1, "div", 114)(29, SymphiqFunnelAnalysisDashboardComponent_Conditional_80_Conditional_29_Template, 4, 5, "div", 115);
20909
+ i0.ɵɵelementEnd()();
20751
20910
  } if (rf & 2) {
20752
20911
  const ctx_r2 = i0.ɵɵnextContext();
20753
20912
  i0.ɵɵconditional(ctx_r2.selectedSectionFilter() === "ALL" ? 0 : -1);
@@ -20777,18 +20936,16 @@ function SymphiqFunnelAnalysisDashboardComponent_Conditional_78_Template(rf, ctx
20777
20936
  i0.ɵɵadvance(5);
20778
20937
  i0.ɵɵrepeater(ctx_r2.categories);
20779
20938
  i0.ɵɵadvance(2);
20780
- i0.ɵɵclassProp("animate-content-change", ctx_r2.isCategoryTransitioning())("transition-opacity-slow", ctx_r2.isCategoryTransitioning());
20781
- i0.ɵɵadvance();
20782
- i0.ɵɵrepeater(ctx_r2.groupedMetrics());
20939
+ i0.ɵɵconditional(ctx_r2.isDataLoading() ? 28 : 29);
20783
20940
  } }
20784
- function SymphiqFunnelAnalysisDashboardComponent_Conditional_79_Conditional_0_Template(rf, ctx) { if (rf & 1) {
20785
- i0.ɵɵelementStart(0, "div", 129)(1, "div", 78);
20786
- i0.ɵɵelement(2, "div", 79);
20941
+ function SymphiqFunnelAnalysisDashboardComponent_Conditional_81_Conditional_0_Template(rf, ctx) { if (rf & 1) {
20942
+ i0.ɵɵelementStart(0, "div", 139)(1, "div", 85);
20943
+ i0.ɵɵelement(2, "div", 86);
20787
20944
  i0.ɵɵelementEnd();
20788
- i0.ɵɵelementStart(3, "div", 80)(4, "div", 81);
20945
+ i0.ɵɵelementStart(3, "div", 87)(4, "div", 88);
20789
20946
  i0.ɵɵnamespaceSVG();
20790
- i0.ɵɵelementStart(5, "svg", 82);
20791
- i0.ɵɵelement(6, "path", 99);
20947
+ i0.ɵɵelementStart(5, "svg", 89);
20948
+ i0.ɵɵelement(6, "path", 105);
20792
20949
  i0.ɵɵelementEnd()()()();
20793
20950
  } if (rf & 2) {
20794
20951
  const ctx_r2 = i0.ɵɵnextContext(2);
@@ -20799,13 +20956,13 @@ function SymphiqFunnelAnalysisDashboardComponent_Conditional_79_Conditional_0_Te
20799
20956
  i0.ɵɵadvance();
20800
20957
  i0.ɵɵproperty("ngClass", ctx_r2.isLightMode() ? "text-purple-500" : "text-purple-400");
20801
20958
  } }
20802
- function SymphiqFunnelAnalysisDashboardComponent_Conditional_79_Conditional_12_Template(rf, ctx) { if (rf & 1) {
20803
- i0.ɵɵelementStart(0, "div", 101);
20804
- i0.ɵɵelement(1, "div", 137);
20959
+ function SymphiqFunnelAnalysisDashboardComponent_Conditional_81_Conditional_12_Template(rf, ctx) { if (rf & 1) {
20960
+ i0.ɵɵelementStart(0, "div", 107);
20961
+ i0.ɵɵelement(1, "div", 147);
20805
20962
  i0.ɵɵelementEnd();
20806
20963
  } }
20807
- function SymphiqFunnelAnalysisDashboardComponent_Conditional_79_For_15_Conditional_0_Template(rf, ctx) { if (rf & 1) {
20808
- i0.ɵɵelementStart(0, "option", 112);
20964
+ function SymphiqFunnelAnalysisDashboardComponent_Conditional_81_For_15_Conditional_0_Template(rf, ctx) { if (rf & 1) {
20965
+ i0.ɵɵelementStart(0, "option", 118);
20809
20966
  i0.ɵɵtext(1);
20810
20967
  i0.ɵɵelementEnd();
20811
20968
  } if (rf & 2) {
@@ -20814,8 +20971,8 @@ function SymphiqFunnelAnalysisDashboardComponent_Conditional_79_For_15_Condition
20814
20971
  i0.ɵɵadvance();
20815
20972
  i0.ɵɵtextInterpolate(filter_r26.label);
20816
20973
  } }
20817
- function SymphiqFunnelAnalysisDashboardComponent_Conditional_79_For_15_Conditional_1_Template(rf, ctx) { if (rf & 1) {
20818
- i0.ɵɵelementStart(0, "option", 27);
20974
+ function SymphiqFunnelAnalysisDashboardComponent_Conditional_81_For_15_Conditional_1_Template(rf, ctx) { if (rf & 1) {
20975
+ i0.ɵɵelementStart(0, "option", 29);
20819
20976
  i0.ɵɵtext(1);
20820
20977
  i0.ɵɵelementEnd();
20821
20978
  } if (rf & 2) {
@@ -20824,40 +20981,77 @@ function SymphiqFunnelAnalysisDashboardComponent_Conditional_79_For_15_Condition
20824
20981
  i0.ɵɵadvance();
20825
20982
  i0.ɵɵtextInterpolate(filter_r26.label);
20826
20983
  } }
20827
- function SymphiqFunnelAnalysisDashboardComponent_Conditional_79_For_15_Template(rf, ctx) { if (rf & 1) {
20828
- i0.ɵɵconditionalCreate(0, SymphiqFunnelAnalysisDashboardComponent_Conditional_79_For_15_Conditional_0_Template, 2, 2, "option", 112)(1, SymphiqFunnelAnalysisDashboardComponent_Conditional_79_For_15_Conditional_1_Template, 2, 2, "option", 27);
20984
+ function SymphiqFunnelAnalysisDashboardComponent_Conditional_81_For_15_Template(rf, ctx) { if (rf & 1) {
20985
+ i0.ɵɵconditionalCreate(0, SymphiqFunnelAnalysisDashboardComponent_Conditional_81_For_15_Conditional_0_Template, 2, 2, "option", 118)(1, SymphiqFunnelAnalysisDashboardComponent_Conditional_81_For_15_Conditional_1_Template, 2, 2, "option", 29);
20829
20986
  } if (rf & 2) {
20830
20987
  const filter_r26 = ctx.$implicit;
20831
20988
  i0.ɵɵconditional(filter_r26.divider ? 0 : 1);
20832
20989
  } }
20833
- function SymphiqFunnelAnalysisDashboardComponent_Conditional_79_For_18_Template(rf, ctx) { if (rf & 1) {
20834
- i0.ɵɵelementStart(0, "div", 85);
20835
- i0.ɵɵelement(1, "symphiq-funnel-analysis-breakdown-section", 138);
20990
+ function SymphiqFunnelAnalysisDashboardComponent_Conditional_81_Conditional_16_For_2_For_6_Template(rf, ctx) { if (rf & 1) {
20991
+ i0.ɵɵelementStart(0, "div", 149);
20992
+ i0.ɵɵelement(1, "symphiq-skeleton-loader", 70)(2, "symphiq-skeleton-loader", 70);
20993
+ i0.ɵɵelementEnd();
20994
+ } if (rf & 2) {
20995
+ const ctx_r2 = i0.ɵɵnextContext(4);
20996
+ i0.ɵɵproperty("ngClass", ctx_r2.isLightMode() ? "bg-slate-50" : "bg-slate-700/50");
20997
+ i0.ɵɵadvance();
20998
+ i0.ɵɵproperty("width", "150px")("height", "18px")("isLightMode", ctx_r2.isLightMode());
20999
+ i0.ɵɵadvance();
21000
+ i0.ɵɵproperty("width", "80px")("height", "18px")("isLightMode", ctx_r2.isLightMode());
21001
+ } }
21002
+ function SymphiqFunnelAnalysisDashboardComponent_Conditional_81_Conditional_16_For_2_Template(rf, ctx) { if (rf & 1) {
21003
+ i0.ɵɵelementStart(0, "div", 121)(1, "div", 122);
21004
+ i0.ɵɵelement(2, "symphiq-skeleton-loader", 70)(3, "symphiq-skeleton-loader", 70);
21005
+ i0.ɵɵelementEnd();
21006
+ i0.ɵɵelementStart(4, "div", 148);
21007
+ i0.ɵɵrepeaterCreate(5, SymphiqFunnelAnalysisDashboardComponent_Conditional_81_Conditional_16_For_2_For_6_Template, 3, 7, "div", 149, i0.ɵɵrepeaterTrackByIdentity);
21008
+ i0.ɵɵelementEnd()();
21009
+ } if (rf & 2) {
21010
+ const ctx_r2 = i0.ɵɵnextContext(3);
21011
+ i0.ɵɵproperty("ngClass", ctx_r2.isLightMode() ? "bg-white border-slate-200" : "bg-slate-800 border-slate-700");
21012
+ i0.ɵɵadvance(2);
21013
+ i0.ɵɵproperty("width", "200px")("height", "28px")("isLightMode", ctx_r2.isLightMode());
21014
+ i0.ɵɵadvance();
21015
+ i0.ɵɵproperty("width", "100px")("height", "24px")("isLightMode", ctx_r2.isLightMode());
21016
+ i0.ɵɵadvance(2);
21017
+ i0.ɵɵrepeater(i0.ɵɵpureFunction0(7, _c4));
21018
+ } }
21019
+ function SymphiqFunnelAnalysisDashboardComponent_Conditional_81_Conditional_16_Template(rf, ctx) { if (rf & 1) {
21020
+ i0.ɵɵelementStart(0, "div", 69);
21021
+ i0.ɵɵrepeaterCreate(1, SymphiqFunnelAnalysisDashboardComponent_Conditional_81_Conditional_16_For_2_Template, 7, 8, "div", 121, i0.ɵɵrepeaterTrackByIdentity);
21022
+ i0.ɵɵelementEnd();
21023
+ } if (rf & 2) {
21024
+ i0.ɵɵadvance();
21025
+ i0.ɵɵrepeater(i0.ɵɵpureFunction0(0, _c5));
21026
+ } }
21027
+ function SymphiqFunnelAnalysisDashboardComponent_Conditional_81_Conditional_17_For_2_Template(rf, ctx) { if (rf & 1) {
21028
+ i0.ɵɵelementStart(0, "div", 97);
21029
+ i0.ɵɵelement(1, "symphiq-funnel-analysis-breakdown-section", 150);
20836
21030
  i0.ɵɵelementEnd();
20837
21031
  } if (rf & 2) {
20838
21032
  const breakdown_r27 = ctx.$implicit;
20839
21033
  const $index_r28 = ctx.$index;
20840
- const ctx_r2 = i0.ɵɵnextContext(2);
21034
+ const ctx_r2 = i0.ɵɵnextContext(3);
20841
21035
  i0.ɵɵstyleProp("animation-delay", 0.8 + $index_r28 * 0.1 + "s");
20842
21036
  i0.ɵɵproperty("libSymphiqSearchHighlight", ctx_r2.searchService.highlightedResultId())("highlightId", "breakdown-" + $index_r28);
20843
21037
  i0.ɵɵadvance();
20844
21038
  i0.ɵɵproperty("breakdown", breakdown_r27)("charts", ctx_r2.chartsForBreakdown(breakdown_r27))("isLightMode", ctx_r2.isLightMode())("isCompactMode", ctx_r2.viewModeService.isCompact());
20845
21039
  } }
20846
- function SymphiqFunnelAnalysisDashboardComponent_Conditional_79_ForEmpty_19_Template(rf, ctx) { if (rf & 1) {
20847
- i0.ɵɵelementStart(0, "div", 109);
21040
+ function SymphiqFunnelAnalysisDashboardComponent_Conditional_81_Conditional_17_ForEmpty_3_Template(rf, ctx) { if (rf & 1) {
21041
+ i0.ɵɵelementStart(0, "div", 124);
20848
21042
  i0.ɵɵnamespaceSVG();
20849
- i0.ɵɵelementStart(1, "svg", 126);
20850
- i0.ɵɵelement(2, "path", 139);
21043
+ i0.ɵɵelementStart(1, "svg", 136);
21044
+ i0.ɵɵelement(2, "path", 151);
20851
21045
  i0.ɵɵelementEnd();
20852
21046
  i0.ɵɵnamespaceHTML();
20853
- i0.ɵɵelementStart(3, "h3", 127);
21047
+ i0.ɵɵelementStart(3, "h3", 137);
20854
21048
  i0.ɵɵtext(4, "No Breakdowns Found");
20855
21049
  i0.ɵɵelementEnd();
20856
- i0.ɵɵelementStart(5, "p", 128);
21050
+ i0.ɵɵelementStart(5, "p", 138);
20857
21051
  i0.ɵɵtext(6, "No performance breakdowns match your current filter selection. Try adjusting your filters to see more results.");
20858
21052
  i0.ɵɵelementEnd()();
20859
21053
  } if (rf & 2) {
20860
- const ctx_r2 = i0.ɵɵnextContext(2);
21054
+ const ctx_r2 = i0.ɵɵnextContext(3);
20861
21055
  i0.ɵɵproperty("ngClass", ctx_r2.isLightMode() ? "bg-slate-50 border-slate-200" : "bg-slate-800/50 border-slate-700");
20862
21056
  i0.ɵɵadvance();
20863
21057
  i0.ɵɵproperty("ngClass", ctx_r2.isLightMode() ? "text-slate-300" : "text-slate-600");
@@ -20866,30 +21060,39 @@ function SymphiqFunnelAnalysisDashboardComponent_Conditional_79_ForEmpty_19_Temp
20866
21060
  i0.ɵɵadvance(2);
20867
21061
  i0.ɵɵproperty("ngClass", ctx_r2.isLightMode() ? "text-slate-600" : "text-slate-400");
20868
21062
  } }
20869
- function SymphiqFunnelAnalysisDashboardComponent_Conditional_79_Template(rf, ctx) { if (rf & 1) {
21063
+ function SymphiqFunnelAnalysisDashboardComponent_Conditional_81_Conditional_17_Template(rf, ctx) { if (rf & 1) {
21064
+ i0.ɵɵelementStart(0, "div", 69);
21065
+ i0.ɵɵrepeaterCreate(1, SymphiqFunnelAnalysisDashboardComponent_Conditional_81_Conditional_17_For_2_Template, 2, 8, "div", 99, i0.ɵɵrepeaterTrackByIndex, false, SymphiqFunnelAnalysisDashboardComponent_Conditional_81_Conditional_17_ForEmpty_3_Template, 7, 4, "div", 124);
21066
+ i0.ɵɵelementEnd();
21067
+ } if (rf & 2) {
21068
+ const ctx_r2 = i0.ɵɵnextContext(2);
21069
+ i0.ɵɵclassProp("animate-content-change", ctx_r2.isBreakdownTransitioning())("transition-opacity-slow", ctx_r2.isBreakdownTransitioning());
21070
+ i0.ɵɵadvance();
21071
+ i0.ɵɵrepeater(ctx_r2.breakdowns());
21072
+ } }
21073
+ function SymphiqFunnelAnalysisDashboardComponent_Conditional_81_Template(rf, ctx) { if (rf & 1) {
20870
21074
  const _r25 = i0.ɵɵgetCurrentView();
20871
- i0.ɵɵconditionalCreate(0, SymphiqFunnelAnalysisDashboardComponent_Conditional_79_Conditional_0_Template, 7, 3, "div", 129);
20872
- i0.ɵɵelementStart(1, "section", 130);
20873
- i0.ɵɵelement(2, "div", 131);
20874
- i0.ɵɵelementStart(3, "div", 70)(4, "div", 132)(5, "div", 72)(6, "div", 37);
21075
+ i0.ɵɵconditionalCreate(0, SymphiqFunnelAnalysisDashboardComponent_Conditional_81_Conditional_0_Template, 7, 3, "div", 139);
21076
+ i0.ɵɵelementStart(1, "section", 140);
21077
+ i0.ɵɵelement(2, "div", 141);
21078
+ i0.ɵɵelementStart(3, "div", 77)(4, "div", 142)(5, "div", 79)(6, "div", 14);
20875
21079
  i0.ɵɵnamespaceSVG();
20876
- i0.ɵɵelementStart(7, "svg", 73);
20877
- i0.ɵɵelement(8, "path", 133);
21080
+ i0.ɵɵelementStart(7, "svg", 80);
21081
+ i0.ɵɵelement(8, "path", 143);
20878
21082
  i0.ɵɵelementEnd();
20879
21083
  i0.ɵɵnamespaceHTML();
20880
- i0.ɵɵelementStart(9, "h2", 75);
21084
+ i0.ɵɵelementStart(9, "h2", 82);
20881
21085
  i0.ɵɵtext(10, "Performance Breakdowns");
20882
21086
  i0.ɵɵelementEnd()()();
20883
- i0.ɵɵelementStart(11, "div", 134);
20884
- i0.ɵɵlistener("click", function SymphiqFunnelAnalysisDashboardComponent_Conditional_79_Template_div_click_11_listener($event) { i0.ɵɵrestoreView(_r25); return i0.ɵɵresetView($event.stopPropagation()); })("mousedown", function SymphiqFunnelAnalysisDashboardComponent_Conditional_79_Template_div_mousedown_11_listener($event) { i0.ɵɵrestoreView(_r25); return i0.ɵɵresetView($event.stopPropagation()); })("pointerdown", function SymphiqFunnelAnalysisDashboardComponent_Conditional_79_Template_div_pointerdown_11_listener($event) { i0.ɵɵrestoreView(_r25); return i0.ɵɵresetView($event.stopPropagation()); });
20885
- i0.ɵɵconditionalCreate(12, SymphiqFunnelAnalysisDashboardComponent_Conditional_79_Conditional_12_Template, 2, 0, "div", 101);
20886
- i0.ɵɵelementStart(13, "select", 135);
20887
- i0.ɵɵlistener("ngModelChange", function SymphiqFunnelAnalysisDashboardComponent_Conditional_79_Template_select_ngModelChange_13_listener($event) { i0.ɵɵrestoreView(_r25); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.changeBreakdownFilter($event)); });
20888
- i0.ɵɵrepeaterCreate(14, SymphiqFunnelAnalysisDashboardComponent_Conditional_79_For_15_Template, 2, 1, null, null, _forTrack0$1);
20889
- i0.ɵɵelementEnd()()();
20890
- i0.ɵɵelementStart(16, "div", 136);
20891
- i0.ɵɵrepeaterCreate(17, SymphiqFunnelAnalysisDashboardComponent_Conditional_79_For_18_Template, 2, 8, "div", 87, i0.ɵɵrepeaterTrackByIndex, false, SymphiqFunnelAnalysisDashboardComponent_Conditional_79_ForEmpty_19_Template, 7, 4, "div", 109);
21087
+ i0.ɵɵelementStart(11, "div", 144);
21088
+ i0.ɵɵlistener("click", function SymphiqFunnelAnalysisDashboardComponent_Conditional_81_Template_div_click_11_listener($event) { i0.ɵɵrestoreView(_r25); return i0.ɵɵresetView($event.stopPropagation()); })("mousedown", function SymphiqFunnelAnalysisDashboardComponent_Conditional_81_Template_div_mousedown_11_listener($event) { i0.ɵɵrestoreView(_r25); return i0.ɵɵresetView($event.stopPropagation()); })("pointerdown", function SymphiqFunnelAnalysisDashboardComponent_Conditional_81_Template_div_pointerdown_11_listener($event) { i0.ɵɵrestoreView(_r25); return i0.ɵɵresetView($event.stopPropagation()); });
21089
+ i0.ɵɵconditionalCreate(12, SymphiqFunnelAnalysisDashboardComponent_Conditional_81_Conditional_12_Template, 2, 0, "div", 107);
21090
+ i0.ɵɵelementStart(13, "select", 145);
21091
+ i0.ɵɵlistener("ngModelChange", function SymphiqFunnelAnalysisDashboardComponent_Conditional_81_Template_select_ngModelChange_13_listener($event) { i0.ɵɵrestoreView(_r25); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.changeBreakdownFilter($event)); });
21092
+ i0.ɵɵrepeaterCreate(14, SymphiqFunnelAnalysisDashboardComponent_Conditional_81_For_15_Template, 2, 1, null, null, _forTrack0$1);
20892
21093
  i0.ɵɵelementEnd()()();
21094
+ i0.ɵɵconditionalCreate(16, SymphiqFunnelAnalysisDashboardComponent_Conditional_81_Conditional_16_Template, 3, 1, "div", 69)(17, SymphiqFunnelAnalysisDashboardComponent_Conditional_81_Conditional_17_Template, 4, 5, "div", 146);
21095
+ i0.ɵɵelementEnd()();
20893
21096
  } if (rf & 2) {
20894
21097
  const ctx_r2 = i0.ɵɵnextContext();
20895
21098
  i0.ɵɵconditional(ctx_r2.selectedSectionFilter() === "ALL" ? 0 : -1);
@@ -20909,18 +21112,16 @@ function SymphiqFunnelAnalysisDashboardComponent_Conditional_79_Template(rf, ctx
20909
21112
  i0.ɵɵadvance();
20910
21113
  i0.ɵɵrepeater(ctx_r2.breakdownFilters);
20911
21114
  i0.ɵɵadvance(2);
20912
- i0.ɵɵclassProp("animate-content-change", ctx_r2.isBreakdownTransitioning())("transition-opacity-slow", ctx_r2.isBreakdownTransitioning());
20913
- i0.ɵɵadvance();
20914
- i0.ɵɵrepeater(ctx_r2.breakdowns());
21115
+ i0.ɵɵconditional(ctx_r2.isDataLoading() ? 16 : 17);
20915
21116
  } }
20916
- function SymphiqFunnelAnalysisDashboardComponent_Conditional_80_Conditional_0_Template(rf, ctx) { if (rf & 1) {
20917
- i0.ɵɵelementStart(0, "div", 140)(1, "div", 78);
20918
- i0.ɵɵelement(2, "div", 79);
21117
+ function SymphiqFunnelAnalysisDashboardComponent_Conditional_82_Conditional_0_Template(rf, ctx) { if (rf & 1) {
21118
+ i0.ɵɵelementStart(0, "div", 152)(1, "div", 85);
21119
+ i0.ɵɵelement(2, "div", 86);
20919
21120
  i0.ɵɵelementEnd();
20920
- i0.ɵɵelementStart(3, "div", 80)(4, "div", 81);
21121
+ i0.ɵɵelementStart(3, "div", 87)(4, "div", 88);
20921
21122
  i0.ɵɵnamespaceSVG();
20922
- i0.ɵɵelementStart(5, "svg", 82);
20923
- i0.ɵɵelement(6, "path", 143);
21123
+ i0.ɵɵelementStart(5, "svg", 89);
21124
+ i0.ɵɵelement(6, "path", 155);
20924
21125
  i0.ɵɵelementEnd()()()();
20925
21126
  } if (rf & 2) {
20926
21127
  const ctx_r2 = i0.ɵɵnextContext(2);
@@ -20931,13 +21132,13 @@ function SymphiqFunnelAnalysisDashboardComponent_Conditional_80_Conditional_0_Te
20931
21132
  i0.ɵɵadvance();
20932
21133
  i0.ɵɵproperty("ngClass", ctx_r2.isLightMode() ? "text-indigo-500" : "text-indigo-400");
20933
21134
  } }
20934
- function SymphiqFunnelAnalysisDashboardComponent_Conditional_80_Conditional_13_Template(rf, ctx) { if (rf & 1) {
20935
- i0.ɵɵelementStart(0, "div", 101);
20936
- i0.ɵɵelement(1, "div", 146);
21135
+ function SymphiqFunnelAnalysisDashboardComponent_Conditional_82_Conditional_13_Template(rf, ctx) { if (rf & 1) {
21136
+ i0.ɵɵelementStart(0, "div", 107);
21137
+ i0.ɵɵelement(1, "div", 158);
20937
21138
  i0.ɵɵelementEnd();
20938
21139
  } }
20939
- function SymphiqFunnelAnalysisDashboardComponent_Conditional_80_For_16_Conditional_0_Template(rf, ctx) { if (rf & 1) {
20940
- i0.ɵɵelementStart(0, "option", 112);
21140
+ function SymphiqFunnelAnalysisDashboardComponent_Conditional_82_For_16_Conditional_0_Template(rf, ctx) { if (rf & 1) {
21141
+ i0.ɵɵelementStart(0, "option", 118);
20941
21142
  i0.ɵɵtext(1);
20942
21143
  i0.ɵɵelementEnd();
20943
21144
  } if (rf & 2) {
@@ -20946,8 +21147,8 @@ function SymphiqFunnelAnalysisDashboardComponent_Conditional_80_For_16_Condition
20946
21147
  i0.ɵɵadvance();
20947
21148
  i0.ɵɵtextInterpolate(filter_r30.label);
20948
21149
  } }
20949
- function SymphiqFunnelAnalysisDashboardComponent_Conditional_80_For_16_Conditional_1_Template(rf, ctx) { if (rf & 1) {
20950
- i0.ɵɵelementStart(0, "option", 27);
21150
+ function SymphiqFunnelAnalysisDashboardComponent_Conditional_82_For_16_Conditional_1_Template(rf, ctx) { if (rf & 1) {
21151
+ i0.ɵɵelementStart(0, "option", 29);
20951
21152
  i0.ɵɵtext(1);
20952
21153
  i0.ɵɵelementEnd();
20953
21154
  } if (rf & 2) {
@@ -20956,33 +21157,60 @@ function SymphiqFunnelAnalysisDashboardComponent_Conditional_80_For_16_Condition
20956
21157
  i0.ɵɵadvance();
20957
21158
  i0.ɵɵtextInterpolate(filter_r30.label);
20958
21159
  } }
20959
- function SymphiqFunnelAnalysisDashboardComponent_Conditional_80_For_16_Template(rf, ctx) { if (rf & 1) {
20960
- i0.ɵɵconditionalCreate(0, SymphiqFunnelAnalysisDashboardComponent_Conditional_80_For_16_Conditional_0_Template, 2, 2, "option", 112)(1, SymphiqFunnelAnalysisDashboardComponent_Conditional_80_For_16_Conditional_1_Template, 2, 2, "option", 27);
21160
+ function SymphiqFunnelAnalysisDashboardComponent_Conditional_82_For_16_Template(rf, ctx) { if (rf & 1) {
21161
+ i0.ɵɵconditionalCreate(0, SymphiqFunnelAnalysisDashboardComponent_Conditional_82_For_16_Conditional_0_Template, 2, 2, "option", 118)(1, SymphiqFunnelAnalysisDashboardComponent_Conditional_82_For_16_Conditional_1_Template, 2, 2, "option", 29);
20961
21162
  } if (rf & 2) {
20962
21163
  const filter_r30 = ctx.$implicit;
20963
21164
  i0.ɵɵconditional(filter_r30.divider ? 0 : 1);
20964
21165
  } }
20965
- function SymphiqFunnelAnalysisDashboardComponent_Conditional_80_Template(rf, ctx) { if (rf & 1) {
21166
+ function SymphiqFunnelAnalysisDashboardComponent_Conditional_82_Conditional_17_For_5_Template(rf, ctx) { if (rf & 1) {
21167
+ i0.ɵɵelement(0, "symphiq-skeleton-loader", 70);
21168
+ } if (rf & 2) {
21169
+ const ctx_r2 = i0.ɵɵnextContext(3);
21170
+ i0.ɵɵproperty("width", "100%")("height", "140px")("isLightMode", ctx_r2.isLightMode());
21171
+ } }
21172
+ function SymphiqFunnelAnalysisDashboardComponent_Conditional_82_Conditional_17_Template(rf, ctx) { if (rf & 1) {
21173
+ i0.ɵɵelementStart(0, "div", 69)(1, "div", 121);
21174
+ i0.ɵɵelement(2, "symphiq-skeleton-loader", 70);
21175
+ i0.ɵɵelementStart(3, "div", 159);
21176
+ i0.ɵɵrepeaterCreate(4, SymphiqFunnelAnalysisDashboardComponent_Conditional_82_Conditional_17_For_5_Template, 1, 3, "symphiq-skeleton-loader", 70, i0.ɵɵrepeaterTrackByIdentity);
21177
+ i0.ɵɵelementEnd()()();
21178
+ } if (rf & 2) {
21179
+ const ctx_r2 = i0.ɵɵnextContext(2);
21180
+ i0.ɵɵadvance();
21181
+ i0.ɵɵproperty("ngClass", ctx_r2.isLightMode() ? "bg-white border-slate-200" : "bg-slate-800 border-slate-700");
21182
+ i0.ɵɵadvance();
21183
+ i0.ɵɵproperty("width", "60%")("height", "24px")("isLightMode", ctx_r2.isLightMode());
21184
+ i0.ɵɵadvance(2);
21185
+ i0.ɵɵrepeater(i0.ɵɵpureFunction0(4, _c3));
21186
+ } }
21187
+ function SymphiqFunnelAnalysisDashboardComponent_Conditional_82_Conditional_18_Template(rf, ctx) { if (rf & 1) {
21188
+ i0.ɵɵelement(0, "symphiq-competitive-intelligence-view", 157);
21189
+ } if (rf & 2) {
21190
+ const ctx_r2 = i0.ɵɵnextContext(2);
21191
+ i0.ɵɵproperty("metrics", ctx_r2.competitiveMetrics())("allCharts", ctx_r2.allCharts())("isLightMode", ctx_r2.isLightMode())("isCompactMode", ctx_r2.viewModeService.isCompact());
21192
+ } }
21193
+ function SymphiqFunnelAnalysisDashboardComponent_Conditional_82_Template(rf, ctx) { if (rf & 1) {
20966
21194
  const _r29 = i0.ɵɵgetCurrentView();
20967
- i0.ɵɵconditionalCreate(0, SymphiqFunnelAnalysisDashboardComponent_Conditional_80_Conditional_0_Template, 7, 3, "div", 140);
20968
- i0.ɵɵelementStart(1, "section", 141);
20969
- i0.ɵɵelement(2, "div", 69);
20970
- i0.ɵɵelementStart(3, "div", 70)(4, "div", 142)(5, "div", 37)(6, "div", 72)(7, "div", 37);
21195
+ i0.ɵɵconditionalCreate(0, SymphiqFunnelAnalysisDashboardComponent_Conditional_82_Conditional_0_Template, 7, 3, "div", 152);
21196
+ i0.ɵɵelementStart(1, "section", 153);
21197
+ i0.ɵɵelement(2, "div", 76);
21198
+ i0.ɵɵelementStart(3, "div", 77)(4, "div", 154)(5, "div", 14)(6, "div", 79)(7, "div", 14);
20971
21199
  i0.ɵɵnamespaceSVG();
20972
- i0.ɵɵelementStart(8, "svg", 73);
20973
- i0.ɵɵelement(9, "path", 143);
21200
+ i0.ɵɵelementStart(8, "svg", 80);
21201
+ i0.ɵɵelement(9, "path", 155);
20974
21202
  i0.ɵɵelementEnd();
20975
21203
  i0.ɵɵnamespaceHTML();
20976
- i0.ɵɵelementStart(10, "h2", 75);
21204
+ i0.ɵɵelementStart(10, "h2", 82);
20977
21205
  i0.ɵɵtext(11, "Competitive Intelligence");
20978
21206
  i0.ɵɵelementEnd()()()();
20979
- i0.ɵɵelementStart(12, "div", 144);
20980
- i0.ɵɵconditionalCreate(13, SymphiqFunnelAnalysisDashboardComponent_Conditional_80_Conditional_13_Template, 2, 0, "div", 101);
20981
- i0.ɵɵelementStart(14, "select", 102);
20982
- i0.ɵɵlistener("ngModelChange", function SymphiqFunnelAnalysisDashboardComponent_Conditional_80_Template_select_ngModelChange_14_listener($event) { i0.ɵɵrestoreView(_r29); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.changeCompetitiveFilter($event)); });
20983
- i0.ɵɵrepeaterCreate(15, SymphiqFunnelAnalysisDashboardComponent_Conditional_80_For_16_Template, 2, 1, null, null, _forTrack0$1);
21207
+ i0.ɵɵelementStart(12, "div", 156);
21208
+ i0.ɵɵconditionalCreate(13, SymphiqFunnelAnalysisDashboardComponent_Conditional_82_Conditional_13_Template, 2, 0, "div", 107);
21209
+ i0.ɵɵelementStart(14, "select", 108);
21210
+ i0.ɵɵlistener("ngModelChange", function SymphiqFunnelAnalysisDashboardComponent_Conditional_82_Template_select_ngModelChange_14_listener($event) { i0.ɵɵrestoreView(_r29); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.changeCompetitiveFilter($event)); });
21211
+ i0.ɵɵrepeaterCreate(15, SymphiqFunnelAnalysisDashboardComponent_Conditional_82_For_16_Template, 2, 1, null, null, _forTrack0$1);
20984
21212
  i0.ɵɵelementEnd()()();
20985
- i0.ɵɵelement(17, "symphiq-competitive-intelligence-view", 145);
21213
+ i0.ɵɵconditionalCreate(17, SymphiqFunnelAnalysisDashboardComponent_Conditional_82_Conditional_17_Template, 6, 5, "div", 69)(18, SymphiqFunnelAnalysisDashboardComponent_Conditional_82_Conditional_18_Template, 1, 4, "symphiq-competitive-intelligence-view", 157);
20986
21214
  i0.ɵɵelementEnd()();
20987
21215
  } if (rf & 2) {
20988
21216
  const ctx_r2 = i0.ɵɵnextContext();
@@ -21004,19 +21232,21 @@ function SymphiqFunnelAnalysisDashboardComponent_Conditional_80_Template(rf, ctx
21004
21232
  i0.ɵɵadvance();
21005
21233
  i0.ɵɵrepeater(ctx_r2.competitiveFilters);
21006
21234
  i0.ɵɵadvance(2);
21007
- i0.ɵɵproperty("metrics", ctx_r2.competitiveMetrics())("allCharts", ctx_r2.allCharts())("isLightMode", ctx_r2.isLightMode())("isCompactMode", ctx_r2.viewModeService.isCompact());
21235
+ i0.ɵɵconditional(ctx_r2.isDataLoading() ? 17 : 18);
21008
21236
  } }
21009
21237
  class SymphiqFunnelAnalysisDashboardComponent {
21010
- constructor(funnelOrderService, viewModeService, searchService) {
21238
+ constructor(funnelOrderService, viewModeService, searchService, tooltipService) {
21011
21239
  this.funnelOrderService = funnelOrderService;
21012
21240
  this.viewModeService = viewModeService;
21013
21241
  this.searchService = searchService;
21242
+ this.tooltipService = tooltipService;
21014
21243
  // Input signals (Angular 20 signal-based inputs)
21015
21244
  this.requestedByUser = input(...(ngDevMode ? [undefined, { debugName: "requestedByUser" }] : []));
21016
21245
  this.viewMode = input(ViewModeEnum.LIGHT, ...(ngDevMode ? [{ debugName: "viewMode" }] : []));
21017
21246
  this.funnelAnalysis = input(FUNNEL_ANALYSIS, ...(ngDevMode ? [{ debugName: "funnelAnalysis" }] : []));
21018
21247
  this.embedded = input(false, ...(ngDevMode ? [{ debugName: "embedded" }] : []));
21019
21248
  this.scrollContainerId = input(...(ngDevMode ? [undefined, { debugName: "scrollContainerId" }] : []));
21249
+ this.isLoading = input(false, ...(ngDevMode ? [{ debugName: "isLoading" }] : []));
21020
21250
  // State signals
21021
21251
  this.selectedCategory = signal('ALL', ...(ngDevMode ? [{ debugName: "selectedCategory" }] : []));
21022
21252
  this.reverseSortOrder = signal(false, ...(ngDevMode ? [{ debugName: "reverseSortOrder" }] : []));
@@ -21035,11 +21265,20 @@ class SymphiqFunnelAnalysisDashboardComponent {
21035
21265
  this.areChartsLoading = computed(() => {
21036
21266
  return this.viewModeService.getIsTransitioning() && this.viewModeService.isExpanded();
21037
21267
  }, ...(ngDevMode ? [{ debugName: "areChartsLoading" }] : []));
21268
+ // Loading state management
21269
+ this.loadingStartTime = signal(null, ...(ngDevMode ? [{ debugName: "loadingStartTime" }] : []));
21270
+ this.minLoadingDisplayTime = 300; // milliseconds
21271
+ this.loadingTimeoutId = null;
21272
+ this.isShowingLoader = signal(false, ...(ngDevMode ? [{ debugName: "isShowingLoader" }] : []));
21273
+ // Computed loading states that combine external input with internal states
21274
+ this.isDataLoading = computed(() => this.isLoading() || this.isShowingLoader(), ...(ngDevMode ? [{ debugName: "isDataLoading" }] : []));
21275
+ this.isContentReady = computed(() => !this.isDataLoading(), ...(ngDevMode ? [{ debugName: "isContentReady" }] : []));
21038
21276
  this.scrollTimeout = null;
21039
21277
  this.lastScrollPosition = 0;
21040
21278
  this.isProgrammaticScroll = false;
21041
21279
  this.lastStateChangeTime = 0;
21042
21280
  this.STATE_CHANGE_COOLDOWN = 500; // milliseconds
21281
+ this.embeddedScrollContainer = null;
21043
21282
  // Mobile navigation sections
21044
21283
  this.navSections = [
21045
21284
  { id: 'overview', label: 'Overview', icon: 'overview' },
@@ -21350,6 +21589,35 @@ class SymphiqFunnelAnalysisDashboardComponent {
21350
21589
  effect(() => {
21351
21590
  this.searchService.setData(this.allMetrics(), this.insights(), this.allBreakdowns());
21352
21591
  });
21592
+ // Manage loading state with minimum display time
21593
+ effect(() => {
21594
+ const loading = this.isLoading();
21595
+ if (loading) {
21596
+ // Starting to load
21597
+ if (!this.loadingStartTime()) {
21598
+ this.loadingStartTime.set(Date.now());
21599
+ this.isShowingLoader.set(true);
21600
+ }
21601
+ }
21602
+ else {
21603
+ // Finished loading
21604
+ const startTime = this.loadingStartTime();
21605
+ if (startTime !== null) {
21606
+ const elapsedTime = Date.now() - startTime;
21607
+ const remainingTime = Math.max(0, this.minLoadingDisplayTime - elapsedTime);
21608
+ // Clear any existing timeout
21609
+ if (this.loadingTimeoutId !== null) {
21610
+ clearTimeout(this.loadingTimeoutId);
21611
+ }
21612
+ // Hide loader after minimum display time
21613
+ this.loadingTimeoutId = setTimeout(() => {
21614
+ this.isShowingLoader.set(false);
21615
+ this.loadingStartTime.set(null);
21616
+ this.loadingTimeoutId = null;
21617
+ }, remainingTime);
21618
+ }
21619
+ }
21620
+ });
21353
21621
  // Manage overall assessment loading state during view mode transitions
21354
21622
  }
21355
21623
  ngAfterViewInit() {
@@ -21360,169 +21628,80 @@ class SymphiqFunnelAnalysisDashboardComponent {
21360
21628
  // Set up container scroll listener when in embedded mode
21361
21629
  if (this.embedded()) {
21362
21630
  let container = null;
21363
- console.log('[Scroll Debug v6] Embedded mode detected, setting up scroll listener');
21364
- console.log('[Scroll Debug v6] scrollContainerId:', this.scrollContainerId());
21365
21631
  // If a scroll container ID is provided, use that element
21366
21632
  if (this.scrollContainerId()) {
21367
- const element = document.getElementById(this.scrollContainerId());
21368
- if (!element) {
21369
- console.warn(`[Scroll Debug] Scroll container with id "${this.scrollContainerId()}" not found. Scroll tracking will not work.`);
21370
- }
21371
- else {
21372
- console.log('[Scroll Debug] Found external scroll container:', element);
21373
- console.log('[Scroll Debug] Container tag name:', element.tagName);
21633
+ const setupScrollContainer = () => {
21634
+ const element = document.getElementById(this.scrollContainerId());
21635
+ if (!element) {
21636
+ return false;
21637
+ }
21374
21638
  // Check if this is an Ionic ion-content element
21375
21639
  if (element.tagName.toLowerCase() === 'ion-content') {
21376
- console.log('[Scroll Debug] Detected Ionic ion-content, attempting to get scrollable element');
21377
- // Try to get the scroll element from Ionic's ion-content
21378
- // Ionic stores the scrollable element in the component itself
21379
21640
  const ionContent = element;
21380
- // Method 1: Try getScrollElement() method (Ionic 4+)
21641
+ // Get the scrollable element from Ionic
21381
21642
  if (typeof ionContent.getScrollElement === 'function') {
21382
- console.log('[Scroll Debug] Using getScrollElement() method');
21383
21643
  ionContent.getScrollElement().then((scrollElement) => {
21384
- console.log('[Scroll Debug] Got Ionic scroll element:', scrollElement);
21385
- const dimensions = {
21386
- clientHeight: scrollElement.clientHeight,
21387
- scrollHeight: scrollElement.scrollHeight,
21388
- scrollTop: scrollElement.scrollTop,
21389
- hasOverflow: scrollElement.scrollHeight > scrollElement.clientHeight
21390
- };
21391
- console.log('[Scroll Debug] Ionic scroll element dimensions:', dimensions);
21392
- if (!dimensions.hasOverflow) {
21393
- console.warn('[Scroll Debug] ⚠️ WARNING: Scroll element has no overflow! Content may still be loading.');
21394
- console.warn('[Scroll Debug] The dashboard content needs to be taller than', dimensions.clientHeight, 'px to enable scrolling');
21395
- // Diagnostic: Check the dashboard component's actual rendered height
21396
- setTimeout(() => {
21397
- const dashboardEl = this.dashboardContainer?.nativeElement;
21398
- if (dashboardEl) {
21399
- const styles = window.getComputedStyle(dashboardEl);
21400
- console.log('[Scroll Debug] Dashboard container computed styles:', {
21401
- height: styles.height,
21402
- minHeight: styles.minHeight,
21403
- maxHeight: styles.maxHeight,
21404
- display: styles.display,
21405
- position: styles.position,
21406
- overflow: styles.overflow,
21407
- scrollHeight: dashboardEl.scrollHeight,
21408
- clientHeight: dashboardEl.clientHeight,
21409
- offsetHeight: dashboardEl.offsetHeight
21410
- });
21411
- // Check children
21412
- const children = Array.from(dashboardEl.children);
21413
- console.log('[Scroll Debug] Dashboard has', children.length, 'direct children');
21414
- children.forEach((child, idx) => {
21415
- const childStyles = window.getComputedStyle(child);
21416
- console.log(`[Scroll Debug] Child ${idx}:`, {
21417
- tagName: child.tagName,
21418
- height: childStyles.height,
21419
- display: childStyles.display,
21420
- clientHeight: child.clientHeight,
21421
- scrollHeight: child.scrollHeight
21422
- });
21423
- });
21424
- // Check if content is actually rendering
21425
- const hasVisibleContent = dashboardEl.scrollHeight > 100;
21426
- if (!hasVisibleContent) {
21427
- console.error('[Scroll Debug] ⚠️ CRITICAL: Dashboard has minimal content! Check if funnelAnalysis data is loaded.');
21428
- }
21429
- }
21430
- }, 100);
21431
- // Set up a MutationObserver to detect when content becomes scrollable
21432
- const observer = new MutationObserver(() => {
21433
- const newScrollHeight = scrollElement.scrollHeight;
21434
- const newClientHeight = scrollElement.clientHeight;
21435
- if (newScrollHeight > newClientHeight) {
21436
- console.log('[Scroll Debug] ✓ Content is now scrollable!', {
21437
- clientHeight: newClientHeight,
21438
- scrollHeight: newScrollHeight,
21439
- hasOverflow: true
21440
- });
21441
- observer.disconnect();
21442
- }
21443
- });
21444
- observer.observe(scrollElement, {
21445
- childList: true,
21446
- subtree: true,
21447
- attributes: true
21448
- });
21449
- console.log('[Scroll Debug] Monitoring for content changes...');
21450
- }
21451
- // Attach to BOTH the inner scroll element AND the ion-content itself
21644
+ // Store reference for use in scrollToSection and tooltips
21645
+ this.embeddedScrollContainer = scrollElement;
21646
+ this.tooltipService.setScrollContainer(scrollElement);
21647
+ // Attach scroll listeners
21452
21648
  scrollElement.addEventListener('scroll', () => this.onContainerScroll(scrollElement), { passive: true });
21453
- console.log('[Scroll Debug] Attached scroll listener to Ionic inner scroll element');
21454
- // ALSO listen to ion-content's ionScroll event (Ionic's custom scroll event)
21455
- ionContent.addEventListener('ionScroll', (event) => {
21456
- console.log('[Scroll Debug] ionScroll event fired:', event.detail?.scrollTop);
21457
- this.onContainerScroll(scrollElement);
21458
- }, { passive: true });
21459
- console.log('[Scroll Debug] Attached ionScroll listener to ion-content');
21460
- // FALLBACK: Poll scroll position directly from scrollElement
21461
- // This ensures we catch scroll events even if neither 'scroll' nor 'ionScroll' fire
21649
+ ionContent.addEventListener('ionScroll', () => this.onContainerScroll(scrollElement), { passive: true });
21650
+ // Polling fallback for reliable scroll detection
21462
21651
  let lastScrollTop = 0;
21463
- let pollCount = 0;
21464
21652
  const pollScroll = () => {
21465
- pollCount++;
21466
21653
  const currentScrollTop = scrollElement.scrollTop;
21467
21654
  if (currentScrollTop !== lastScrollTop) {
21468
- console.log('[Scroll Debug v6] Poll #', pollCount, '- Scroll detected:', lastScrollTop, '->', currentScrollTop);
21469
21655
  lastScrollTop = currentScrollTop;
21470
21656
  this.onContainerScroll(scrollElement);
21471
21657
  }
21472
21658
  requestAnimationFrame(pollScroll);
21473
21659
  };
21474
21660
  requestAnimationFrame(pollScroll);
21475
- console.log('[Scroll Debug v6] Started polling scrollElement.scrollTop directly');
21476
- // Test if scroll event fires by manually triggering a test
21477
- console.log('[Scroll Debug] Testing scroll event by programmatically scrolling to 1px...');
21478
- scrollElement.scrollTop = 1;
21479
- setTimeout(() => {
21480
- if (scrollElement.scrollTop === 1) {
21481
- console.log('[Scroll Debug] ✓ Scroll position changed successfully');
21482
- scrollElement.scrollTop = 0; // Reset
21483
- }
21484
- else {
21485
- console.warn('[Scroll Debug] ⚠️ Could not change scroll position - element may not be scrollable');
21486
- }
21487
- }, 50);
21488
21661
  }).catch((error) => {
21489
- console.error('[Scroll Debug] Error getting Ionic scroll element:', error);
21662
+ console.error('Error getting Ionic scroll element:', error);
21490
21663
  });
21664
+ return true;
21491
21665
  }
21492
21666
  else {
21493
- console.warn('[Scroll Debug] ion-content does not have getScrollElement() method');
21494
- // Fallback: attach to ion-content itself (may not work)
21495
- container = element;
21667
+ // Fallback for older Ionic versions
21668
+ this.embeddedScrollContainer = element;
21669
+ this.tooltipService.setScrollContainer(element);
21670
+ element.addEventListener('scroll', () => this.onContainerScroll(element), { passive: true });
21671
+ return true;
21496
21672
  }
21497
21673
  }
21498
21674
  else {
21499
21675
  // Regular HTML element
21500
- container = element;
21501
- console.log('[Scroll Debug] Container dimensions:', {
21502
- clientHeight: container.clientHeight,
21503
- scrollHeight: container.scrollHeight,
21504
- scrollTop: container.scrollTop,
21505
- hasOverflow: container.scrollHeight > container.clientHeight
21506
- });
21676
+ this.embeddedScrollContainer = element;
21677
+ this.tooltipService.setScrollContainer(element);
21678
+ element.addEventListener('scroll', () => this.onContainerScroll(element), { passive: true });
21679
+ return true;
21507
21680
  }
21681
+ };
21682
+ // Try to set up immediately
21683
+ if (!setupScrollContainer()) {
21684
+ // If not found, retry with delays (element might not be in DOM yet)
21685
+ let retries = 0;
21686
+ const maxRetries = 10;
21687
+ const retryInterval = setInterval(() => {
21688
+ retries++;
21689
+ if (setupScrollContainer() || retries >= maxRetries) {
21690
+ clearInterval(retryInterval);
21691
+ if (retries >= maxRetries) {
21692
+ console.warn(`Scroll container with id "${this.scrollContainerId()}" not found after ${maxRetries} retries.`);
21693
+ }
21694
+ }
21695
+ }, 100);
21508
21696
  }
21509
21697
  }
21510
21698
  else if (this.dashboardContainer) {
21511
21699
  // Fall back to internal dashboard container
21512
21700
  container = this.dashboardContainer.nativeElement;
21513
- console.log('[Scroll Debug] Using internal dashboard container:', container);
21514
- }
21515
- // Only attach listener for non-Ionic elements (Ionic handled above)
21516
- if (container) {
21517
- console.log('[Scroll Debug] Attaching scroll listener to container');
21701
+ this.embeddedScrollContainer = container;
21702
+ this.tooltipService.setScrollContainer(container);
21518
21703
  container.addEventListener('scroll', () => this.onContainerScroll(container), { passive: true });
21519
21704
  }
21520
- else if (!this.scrollContainerId() || document.getElementById(this.scrollContainerId())?.tagName.toLowerCase() !== 'ion-content') {
21521
- console.warn('[Scroll Debug] No scroll container found!');
21522
- }
21523
- }
21524
- else {
21525
- console.log('[Scroll Debug] Not in embedded mode, using window scroll');
21526
21705
  }
21527
21706
  }
21528
21707
  handleSearchResult(result) {
@@ -21732,66 +21911,42 @@ class SymphiqFunnelAnalysisDashboardComponent {
21732
21911
  }
21733
21912
  onContainerScroll(container) {
21734
21913
  if (!this.embedded()) {
21735
- console.log('[Scroll Debug] onContainerScroll called but not in embedded mode, returning');
21736
21914
  return;
21737
21915
  }
21738
21916
  const scrollPosition = container.scrollTop;
21739
- // Update scroll progress immediately for smooth bar animation
21917
+ // Update scroll progress for smooth bar animation
21740
21918
  const containerHeight = container.clientHeight;
21741
21919
  const scrollHeight = container.scrollHeight;
21742
21920
  const maxScroll = scrollHeight - containerHeight;
21743
21921
  const progress = maxScroll > 0 ? (scrollPosition / maxScroll) * 100 : 0;
21744
- console.log('[Scroll Debug] Container scroll event:', {
21745
- scrollPosition,
21746
- containerHeight,
21747
- scrollHeight,
21748
- maxScroll,
21749
- progress: progress.toFixed(2) + '%',
21750
- currentScrollProgress: this.scrollProgress(),
21751
- isScrolled: this.isScrolled()
21752
- });
21753
21922
  this.scrollProgress.set(Math.min(100, Math.max(0, progress)));
21754
- // Skip header state updates during programmatic scrolling
21923
+ // Skip header state updates during programmatic scrolling or cooldown
21755
21924
  if (this.isProgrammaticScroll) {
21756
- console.log('[Scroll Debug] Skipping header update - programmatic scroll');
21757
21925
  return;
21758
21926
  }
21759
- // Check if we're in cooldown period after a recent state change
21760
21927
  const now = Date.now();
21761
21928
  const timeSinceLastChange = now - this.lastStateChangeTime;
21762
21929
  if (timeSinceLastChange < this.STATE_CHANGE_COOLDOWN) {
21763
- console.log('[Scroll Debug] Skipping header update - in cooldown period', timeSinceLastChange + 'ms');
21764
21930
  return;
21765
21931
  }
21766
- // Clear any pending timeout
21767
21932
  if (this.scrollTimeout) {
21768
21933
  clearTimeout(this.scrollTimeout);
21769
21934
  }
21770
- // Use hysteresis (two different thresholds) to prevent bounce loop
21935
+ // Use hysteresis to prevent bounce
21771
21936
  const COLLAPSE_THRESHOLD = 50;
21772
21937
  const EXPAND_THRESHOLD = 30;
21773
21938
  const currentState = this.isScrolled();
21774
- // Determine new state based on current position and hysteresis logic
21775
21939
  let newState = currentState;
21776
- // If currently expanded and we scroll past collapse threshold, collapse
21777
21940
  if (!currentState && scrollPosition > COLLAPSE_THRESHOLD) {
21778
21941
  newState = true;
21779
- console.log('[Scroll Debug] Triggering COLLAPSE - scrollPosition:', scrollPosition, '> threshold:', COLLAPSE_THRESHOLD);
21780
21942
  }
21781
- // If currently collapsed and we scroll back above expand threshold, expand
21782
21943
  else if (currentState && scrollPosition < EXPAND_THRESHOLD) {
21783
21944
  newState = false;
21784
- console.log('[Scroll Debug] Triggering EXPAND - scrollPosition:', scrollPosition, '< threshold:', EXPAND_THRESHOLD);
21785
21945
  }
21786
- // Only update state if it actually changed
21787
21946
  if (newState !== currentState) {
21788
- console.log('[Scroll Debug] State change detected:', currentState, '->', newState);
21789
21947
  this.isScrolled.set(newState);
21790
21948
  this.lastStateChangeTime = Date.now();
21791
21949
  }
21792
- else {
21793
- console.log('[Scroll Debug] No state change needed. Current state:', currentState, 'Position:', scrollPosition);
21794
- }
21795
21950
  this.lastScrollPosition = scrollPosition;
21796
21951
  }
21797
21952
  onScroll() {
@@ -21859,48 +22014,60 @@ class SymphiqFunnelAnalysisDashboardComponent {
21859
22014
  this.lastScrollPosition = scrollPosition;
21860
22015
  }
21861
22016
  scrollToTop() {
21862
- // Set flag to prevent header state changes during smooth scroll
21863
22017
  this.isProgrammaticScroll = true;
21864
- window.scrollTo({
21865
- top: 0,
21866
- behavior: 'smooth'
21867
- });
21868
- // Clear flag after smooth scroll completes
22018
+ if (this.embedded() && this.embeddedScrollContainer) {
22019
+ this.embeddedScrollContainer.scrollTo({
22020
+ top: 0,
22021
+ behavior: 'smooth'
22022
+ });
22023
+ }
22024
+ else {
22025
+ window.scrollTo({
22026
+ top: 0,
22027
+ behavior: 'smooth'
22028
+ });
22029
+ }
21869
22030
  setTimeout(() => {
21870
22031
  this.isProgrammaticScroll = false;
21871
- // At top of page, header should be expanded
21872
22032
  this.isScrolled.set(false);
21873
22033
  }, 800);
21874
22034
  }
21875
22035
  scrollToSection(sectionId) {
21876
22036
  const element = document.getElementById(sectionId);
21877
- if (element) {
21878
- // Use smaller offset for overall-section to stay below expand threshold
21879
- // Other sections use larger offset to stay above collapse threshold
21880
- const offset = sectionId === 'overall-section' ? 50 : 100;
22037
+ if (!element)
22038
+ return;
22039
+ const offset = sectionId === 'overall-section' ? 50 : 100;
22040
+ this.isProgrammaticScroll = true;
22041
+ if (this.embedded() && this.embeddedScrollContainer) {
22042
+ // For embedded mode: calculate relative scroll position
22043
+ const elementTop = element.offsetTop;
22044
+ const scrollTop = elementTop - offset;
22045
+ this.embeddedScrollContainer.scrollTo({
22046
+ top: scrollTop,
22047
+ behavior: 'smooth'
22048
+ });
22049
+ }
22050
+ else {
22051
+ // For window mode: use getBoundingClientRect
21881
22052
  const elementPosition = element.getBoundingClientRect().top + window.pageYOffset;
21882
22053
  const offsetPosition = elementPosition - offset;
21883
- // Set flag to prevent header state changes during smooth scroll
21884
- this.isProgrammaticScroll = true;
21885
22054
  window.scrollTo({
21886
22055
  top: offsetPosition,
21887
22056
  behavior: 'smooth'
21888
22057
  });
21889
- // Clear flag after smooth scroll completes (approximate duration)
21890
- setTimeout(() => {
21891
- this.isProgrammaticScroll = false;
21892
- // Manually set the correct header state after scroll completes
21893
- // Use hysteresis thresholds: collapse at 150px, expand below 100px
21894
- const finalPosition = window.scrollY;
21895
- if (finalPosition > 150) {
21896
- this.isScrolled.set(true);
21897
- }
21898
- else if (finalPosition < 100) {
21899
- this.isScrolled.set(false);
21900
- }
21901
- // If between 100-150, leave current state unchanged
21902
- }, 800);
21903
22058
  }
22059
+ setTimeout(() => {
22060
+ this.isProgrammaticScroll = false;
22061
+ const finalPosition = this.embedded() && this.embeddedScrollContainer
22062
+ ? this.embeddedScrollContainer.scrollTop
22063
+ : window.scrollY;
22064
+ if (finalPosition > 50) {
22065
+ this.isScrolled.set(true);
22066
+ }
22067
+ else if (finalPosition < 30) {
22068
+ this.isScrolled.set(false);
22069
+ }
22070
+ }, 800);
21904
22071
  }
21905
22072
  handleMobileNavigation(sectionId) {
21906
22073
  this.activeNavSection.set(sectionId);
@@ -21943,7 +22110,7 @@ class SymphiqFunnelAnalysisDashboardComponent {
21943
22110
  }
21944
22111
  return value.toLocaleString('en-US', { maximumFractionDigits: 0 });
21945
22112
  }
21946
- static { this.ɵfac = function SymphiqFunnelAnalysisDashboardComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SymphiqFunnelAnalysisDashboardComponent)(i0.ɵɵdirectiveInject(FunnelOrderService), i0.ɵɵdirectiveInject(ViewModeService), i0.ɵɵdirectiveInject(SearchService)); }; }
22113
+ static { this.ɵfac = function SymphiqFunnelAnalysisDashboardComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SymphiqFunnelAnalysisDashboardComponent)(i0.ɵɵdirectiveInject(FunnelOrderService), i0.ɵɵdirectiveInject(ViewModeService), i0.ɵɵdirectiveInject(SearchService), i0.ɵɵdirectiveInject(TooltipService)); }; }
21947
22114
  static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SymphiqFunnelAnalysisDashboardComponent, selectors: [["symphiq-funnel-analysis-dashboard"]], viewQuery: function SymphiqFunnelAnalysisDashboardComponent_Query(rf, ctx) { if (rf & 1) {
21948
22115
  i0.ɵɵviewQuery(ModalComponent, 5);
21949
22116
  i0.ɵɵviewQuery(_c0$4, 5);
@@ -21953,7 +22120,7 @@ class SymphiqFunnelAnalysisDashboardComponent {
21953
22120
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.dashboardContainer = _t.first);
21954
22121
  } }, hostBindings: function SymphiqFunnelAnalysisDashboardComponent_HostBindings(rf, ctx) { if (rf & 1) {
21955
22122
  i0.ɵɵlistener("scroll", function SymphiqFunnelAnalysisDashboardComponent_scroll_HostBindingHandler($event) { return ctx.onScroll($event); }, i0.ɵɵresolveWindow);
21956
- } }, inputs: { requestedByUser: [1, "requestedByUser"], viewMode: [1, "viewMode"], funnelAnalysis: [1, "funnelAnalysis"], embedded: [1, "embedded"], scrollContainerId: [1, "scrollContainerId"] }, decls: 86, vars: 101, consts: [["dashboardContainer", ""], [1, "bg-transparent"], [1, "animated-bubbles", 2, "position", "fixed", "top", "0", "left", "0", "right", "0", "bottom", "0", "width", "100vw", "height", "100vh", "z-index", "1", "pointer-events", "none"], [1, "absolute", "inset-0", 3, "ngClass"], [1, "absolute", "inset-0", "opacity-[0.03]", "z-20", 2, "background-image", "url('data:image/svg+xml,%3Csvg width='60' height='60' viewBox='0 0 60 60' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cg fill='%23000000' fill-opacity='1'%3E%3Cpath d='M36 34v-4h-2v4h-4v2h4v4h2v-4h4v-2h-4zm0-30V0h-2v4h-4v2h4v4h2V6h4V4h-4zM6 34v-4H4v4H0v2h4v4h2v-4h4v-2H6zM6 4V0H4v4H0v2h4v4h2V6h4V4H6z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E')"], [1, "absolute", "top-0", "right-0", "w-[800px]", "h-[800px]", "rounded-full", "blur-3xl", "z-0", 3, "ngClass"], [1, "absolute", "bottom-0", "left-0", "w-[600px]", "h-[600px]", "rounded-full", "blur-3xl", "z-0", 3, "ngClass"], [1, "absolute", "top-1/2", "left-1/2", "-translate-x-1/2", "-translate-y-1/2", "w-[700px]", "h-[700px]", "rounded-full", "blur-3xl", "z-0", 3, "ngClass"], [1, "h-full", "transition-all", "duration-200", "ease-out", 3, "ngClass"], [1, "sticky", "top-0", "z-50", "animate-fade-in", 2, "animation-delay", "0s"], [1, "transition-all", "duration-300", "ease-in-out", "overflow-hidden"], [1, "max-w-7xl", "mx-auto", "px-6", "sm:px-8", "py-6", "sm:py-8"], [1, "flex", "flex-col", "sm:flex-row", "items-start", "sm:items-center", "justify-between", "gap-3", "sm:gap-0"], [1, "flex-1"], [1, "text-2xl", "sm:text-3xl", "font-bold", "mb-2", "bg-gradient-to-r", "from-blue-600", "via-purple-600", "to-indigo-600", "bg-clip-text", "text-transparent"], [1, "flex", "flex-wrap", "items-center", "justify-between", "gap-3", "sm:gap-4"], [1, "text-sm", "sm:text-base"], [1, "flex", "items-center", "gap-4"], ["type", "button", "title", "Search (/ or Cmd+K)", 1, "flex", "items-center", "gap-2", "px-3", "py-1.5", "rounded-lg", "text-xs", "font-medium", "transition-all", "duration-200", "hover:scale-105", 3, "click"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-4", "h-4"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"], [1, "flex", "items-center", "gap-2"], ["type", "button", 1, "flex", "items-center", "gap-2", "px-3", "py-1.5", "rounded-lg", "text-xs", "font-medium", "transition-all", "duration-200", "hover:scale-105", 3, "click"], [1, "flex", "items-center", "gap-2", "sm:gap-3", "whitespace-nowrap"], [1, "text-xs", "sm:text-sm", "font-medium"], [3, "click", "mousedown", "pointerdown"], [1, "px-3", "sm:px-4", "py-1.5", "rounded-lg", "text-xs", "sm:text-sm", "font-medium", "focus:outline-none", "focus:ring-2", "focus:ring-blue-500", "focus:border-transparent", "transition-colors", "duration-200", "cursor-pointer", 3, "ngModelChange", "ngModel"], [3, "value"], [1, "flex", "flex-col", "gap-4", "min-w-[180px]"], [1, "text-left", "sm:text-right"], [1, "text-xs", "sm:text-sm"], [1, "text-sm", "sm:text-base", "font-medium"], [1, "max-w-7xl", "mx-auto", "px-6", "sm:px-8", "py-3"], [1, "flex", "items-center", "justify-between", "gap-4"], [1, "flex", "items-center", "gap-4", "flex-1", "min-w-0"], [1, "text-lg", "font-bold", "truncate", "bg-gradient-to-r", "from-blue-600", "via-purple-600", "to-indigo-600", "bg-clip-text", "text-transparent"], [1, "hidden", "lg:flex", "items-center", "gap-3", "px-4", "py-1.5", "rounded-lg", 3, "ngClass"], [1, "flex", "items-center", "gap-3"], ["type", "button", "title", "Search (/ or Cmd+K)", 1, "p-2", "rounded-lg", "transition-all", "duration-200", "hover:scale-110", 3, "click"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-5", "h-5"], ["type", "button", 1, "p-2", "rounded-lg", "transition-all", "duration-200", "hover:scale-110", 3, "click", "title"], [1, "px-3", "py-1.5", "rounded-lg", "text-xs", "font-medium", "focus:outline-none", "focus:ring-2", "focus:ring-blue-500", "focus:border-transparent", "transition-colors", "duration-200", "cursor-pointer", 3, "ngModelChange", "ngModel"], [1, "sticky", "top-[var(--header-height)]", "z-40", "border-b", "backdrop-blur-md", "animate-slide-up-fade", 3, "ngClass"], [1, "fixed", "right-6", "top-1/2", "-translate-y-1/2", "z-40", "hidden", "xl:flex", "flex-col", "gap-3"], [1, "w-3", "h-3", "rounded-full", "transition-all", "duration-200", "hover:scale-150", "active:scale-100", 3, "title", "ngClass"], [1, "max-w-7xl", "mx-auto", "px-6", "sm:px-8"], [1, "pt-8", "sm:pt-12", "pb-16", "sm:pb-24"], ["id", "overall-section", 1, "animate-fade-in-up", "mb-20", "sm:mb-28", 2, "animation-delay", "0.1s"], [3, "isLightMode"], [3, "resultSelected", "isLightMode"], [3, "expandedChange", "scrollToTop", "toggleView", "isLightMode", "isCompactMode", "isExpanded"], [3, "navigate", "isLightMode", "sections", "activeSection"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M4 6h16M4 12h16M4 18h16"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M4 6a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2H6a2 2 0 01-2-2V6zM14 6a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2h-2a2 2 0 01-2-2V6zM4 16a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2H6a2 2 0 01-2-2v-2zM14 16a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2h-2a2 2 0 01-2-2v-2z"], [1, "text-xs", "font-medium"], [1, "text-sm", "font-bold"], [1, "text-xs", "font-semibold", 3, "ngClass"], [1, "flex", "items-center", "gap-3", "flex-1", "min-w-0"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-5", "h-5", "flex-shrink-0", 3, "ngClass"], [1, "flex", "items-center", "gap-2", "flex-1", "min-w-0"], [1, "text-sm", "font-medium", 3, "ngClass"], [1, "text-sm", "font-semibold", "truncate", 3, "ngClass"], [1, "px-2", "py-0.5", "rounded", "text-xs", "font-medium", "uppercase", "border", "flex-shrink-0", 3, "ngClass"], ["title", "Clear search", 1, "p-2", "rounded-lg", "transition-colors", "flex-shrink-0", 3, "click", "ngClass"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M6 18L18 6M6 6l12 12"], [1, "w-3", "h-3", "rounded-full", "transition-all", "duration-200", "hover:scale-150", "active:scale-100", 3, "click", "title", "ngClass"], [3, "assessment", "revenueMetric", "charts", "metrics", "isLightMode", "isLoading", "isCompactMode", "isChartsLoading"], [1, "relative", "mb-16", "sm:mb-20", "animate-fade-in", 2, "animation-delay", "0.15s"], ["id", "insights-section", 1, "relative"], [1, "absolute", "inset-0", "-mx-6", "sm:-mx-8", "-mt-8", "rounded-3xl", "opacity-30", "backdrop-blur-sm", 2, "mask-image", "radial-gradient(ellipse at center, black 0%, transparent 70%)", 3, "ngClass"], [1, "relative"], [1, "flex", "items-center", "justify-between", "mb-6", "sm:mb-8", "animate-fade-in", 2, "animation-delay", "0.2s"], [1, "pl-4", 3, "ngClass"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-6", "h-6", 3, "ngClass"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M9.663 17h4.673M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z"], [1, "text-xl", "sm:text-2xl", "font-bold"], [1, "masonry-grid"], [1, "grid", "grid-cols-1", "md:grid-cols-2", "lg:grid-cols-3", "gap-4"], ["aria-hidden", "true", 1, "absolute", "inset-0", "flex", "items-center"], [1, "w-full", "h-px", "bg-gradient-to-r", 3, "ngClass"], [1, "relative", "flex", "justify-center"], [1, "px-4", "py-2", "rounded-full", 3, "ngClass"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-5", "h-5", 3, "ngClass"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M13 10V3L4 14h7v7l9-11h-7z"], [1, "animate-fade-in-up", 3, "class", "animation-delay", "libSymphiqSearchHighlight", "highlightId"], [1, "animate-fade-in-up", 3, "libSymphiqSearchHighlight", "highlightId"], [3, "insight", "allMetrics", "charts", "allCharts", "isLightMode", "viewMode", "isCompactMode"], [1, "animate-fade-in-up", 3, "animation-delay", "libSymphiqSearchHighlight", "highlightId"], [1, "rounded-xl", "border", "p-6", "animate-pulse", "min-h-[280px]", 3, "ngClass"], [1, "space-y-4"], [1, "flex", "items-center", "gap-3", "mb-4"], [3, "width", "height", "isLightMode"], [1, "mt-6", "space-y-2"], [1, "flex", "gap-2", "mt-4"], [1, "relative", "mb-14", "sm:mb-24", "mt-24", "sm:mt-32", "animate-fade-in", 2, "animation-delay", "0.35s"], ["id", "metrics-section", 1, "relative"], [1, "absolute", "inset-0", "-mx-6", "sm:-mx-8", "-mt-8", "rounded-3xl", "opacity-30", "backdrop-blur-sm", 2, "mask-image", "radial-gradient(ellipse at top right, black 0%, transparent 70%)", 3, "ngClass"], [1, "flex", "flex-col", "gap-4", "mb-6", "sm:mb-8", "animate-fade-in", 2, "animation-delay", "0.4s"], [1, "flex", "items-center", "justify-between"], ["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, "hidden", "sm:flex", "gap-2", "sm:gap-3", "items-center", "relative"], [1, "absolute", "-right-2", "top-1/2", "-translate-y-1/2", "z-10"], [1, "px-3", "sm:px-4", "py-2", "rounded-lg", "text-xs", "sm:text-sm", "font-medium", "focus:outline-none", "focus:ring-2", "focus:ring-blue-500", "focus:border-transparent", "transition-all", "duration-200", "cursor-pointer", 3, "ngModelChange", "ngModel"], [1, "px-3", "sm:px-4", "py-2", "rounded-lg", "text-xs", "sm:text-sm", "font-medium", "focus:outline-none", "focus:ring-2", "focus:ring-blue-500", "transition-all", "flex", "items-center", "gap-2", "cursor-pointer", "hover:scale-105", "active:scale-95", 3, "click", "title"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M3 4h13M3 8h9m-9 4h6m4 0l4-4m0 0l4 4m-4-4v12"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M3 4h13M3 8h9m-9 4h9m5-4v12m0 0l-4-4m4 4l4-4"], [1, "sm:hidden", "-mx-6", "px-6"], [1, "flex", "gap-2", "overflow-x-auto", "pb-2", "snap-x", "snap-mandatory", "scrollbar-hide"], [1, "space-y-8", "sm:space-y-10"], [1, "rounded-xl", "p-12", "border", "text-center", "animate-fade-in", 3, "ngClass"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M7 12l3-3 3 3 4-4M8 21l4-4 4 4M3 4h18M4 4h16v12a1 1 0 01-1 1H5a1 1 0 01-1-1V4z"], [1, "w-4", "h-4", "border-2", "border-blue-500/30", "border-t-blue-500", "rounded-full", "animate-spin"], ["disabled", "", 1, "font-semibold", 3, "value"], [1, "px-4", "py-2", "rounded-full", "text-xs", "font-medium", "whitespace-nowrap", "transition-all", "duration-200", "flex-shrink-0", "snap-start", "active:scale-95", 3, "ngClass", "opacity-70"], [1, "px-4", "py-2", "rounded-full", "text-xs", "font-medium", "whitespace-nowrap", "transition-all", "duration-200", "flex-shrink-0", "snap-start", "active:scale-95", 3, "click", "ngClass"], [1, "w-full", "animate-fade-in-up", 3, "libSymphiqSearchHighlight", "highlightId"], [3, "metric", "insights", "charts", "allCharts", "analysis", "isLightMode", "viewMode", "isCompactMode"], [1, "bento-grid", "mt-4"], [1, "grid", "grid-cols-1", "md:grid-cols-2", "lg:grid-cols-4", "gap-3", "sm:gap-4", "mt-4"], [1, "animate-fade-in-up", 3, "class", "animation-delay"], [1, "animate-fade-in-up"], [1, "h-full", 3, "metric", "insights", "charts", "allCharts", "analysis", "isLightMode", "viewMode", "isCompactMode"], [1, "animate-fade-in-up", 3, "animation-delay"], [1, "rounded-xl", "border", "p-6", "animate-pulse", "min-h-[240px]", 3, "ngClass"], [1, "flex", "items-center", "gap-3", "mt-4"], [1, "mt-4"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-16", "h-16", "mx-auto", "mb-4", 3, "ngClass"], [1, "text-lg", "font-semibold", "mb-2", 3, "ngClass"], [1, "text-sm", 3, "ngClass"], [1, "relative", "mb-16", "sm:mb-20", "mt-28", "sm:mt-36", "animate-fade-in", 2, "animation-delay", "0.65s"], ["id", "breakdowns-section", 1, "relative"], [1, "absolute", "inset-0", "-mx-6", "sm:-mx-8", "-mt-8", "rounded-3xl", "opacity-30", "backdrop-blur-sm", 2, "mask-image", "radial-gradient(ellipse at bottom left, black 0%, transparent 70%)", 3, "ngClass"], [1, "flex", "flex-col", "sm:flex-row", "sm:items-center", "justify-between", "gap-4", "mb-6", "sm:mb-8", "animate-fade-in", 2, "animation-delay", "0.7s"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M4 5a1 1 0 011-1h14a1 1 0 011 1v2a1 1 0 01-1 1H5a1 1 0 01-1-1V5zM4 13a1 1 0 011-1h6a1 1 0 011 1v6a1 1 0 01-1 1H5a1 1 0 01-1-1v-6zM16 13a1 1 1 0 011-1h2a1 1 0 011 1v6a1 1 0 01-1 1h-2a1 1 0 01-1-1v-6z"], [1, "relative", "inline-block", 3, "click", "mousedown", "pointerdown"], [1, "px-3", "py-2", "text-sm", "rounded-lg", "border", "transition-all", "duration-200", "cursor-pointer", "focus:ring-2", "focus:ring-blue-500", "focus:outline-none", 3, "ngModelChange", "ngModel", "ngClass"], [1, "space-y-6"], [1, "w-4", "h-4", "border-2", "border-purple-500/30", "border-t-purple-500", "rounded-full", "animate-spin"], [3, "breakdown", "charts", "isLightMode", "isCompactMode"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M4 5a1 1 0 011-1h14a1 1 0 011 1v2a1 1 0 01-1 1H5a1 1 0 01-1-1V5zM4 13a1 1 0 011-1h6a1 1 0 011 1v6a1 1 0 01-1 1H5a1 1 0 01-1-1v-6zM16 13a1 1 0 011-1h2a1 1 0 011 1v6a1 1 0 01-1 1h-2a1 1 0 01-1-1v-6z"], [1, "relative", "mb-16", "sm:mb-20", "mt-28", "sm:mt-36", "animate-fade-in", 2, "animation-delay", "0.85s"], ["id", "competitive-section", 1, "relative"], [1, "flex", "items-center", "justify-between", "mb-6", "sm:mb-8", "animate-fade-in", 2, "animation-delay", "0.9s"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M19 21V5a2 2 0 00-2-2H7a2 2 0 00-2 2v16m14 0h2m-2 0h-5m-9 0H3m2 0h5M9 7h1m-1 4h1m4-4h1m-1 4h1m-5 10v-5a1 1 0 011-1h2a1 1 0 011 1v5m-4 0h4"], [1, "hidden", "sm:block", "relative"], [3, "metrics", "allCharts", "isLightMode", "isCompactMode"], [1, "w-4", "h-4", "border-2", "border-indigo-500/30", "border-t-indigo-500", "rounded-full", "animate-spin"]], template: function SymphiqFunnelAnalysisDashboardComponent_Template(rf, ctx) { if (rf & 1) {
22123
+ } }, inputs: { requestedByUser: [1, "requestedByUser"], viewMode: [1, "viewMode"], funnelAnalysis: [1, "funnelAnalysis"], embedded: [1, "embedded"], scrollContainerId: [1, "scrollContainerId"], isLoading: [1, "isLoading"] }, decls: 88, vars: 102, consts: [["dashboardContainer", ""], [1, "bg-transparent"], [1, "animated-bubbles", 2, "position", "fixed", "top", "0", "left", "0", "right", "0", "bottom", "0", "width", "100vw", "height", "100vh", "z-index", "1", "pointer-events", "none"], [1, "absolute", "inset-0", 3, "ngClass"], [1, "absolute", "inset-0", "opacity-[0.03]", "z-20", 2, "background-image", "url('data:image/svg+xml,%3Csvg width='60' height='60' viewBox='0 0 60 60' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cg fill='%23000000' fill-opacity='1'%3E%3Cpath d='M36 34v-4h-2v4h-4v2h4v4h2v-4h4v-2h-4zm0-30V0h-2v4h-4v2h4v4h2V6h4V4h-4zM6 34v-4H4v4H0v2h4v4h2v-4h4v-2H6zM6 4V0H4v4H0v2h4v4h2V6h4V4H6z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E')"], [1, "absolute", "top-0", "right-0", "w-[800px]", "h-[800px]", "rounded-full", "blur-3xl", "z-0", 3, "ngClass"], [1, "absolute", "bottom-0", "left-0", "w-[600px]", "h-[600px]", "rounded-full", "blur-3xl", "z-0", 3, "ngClass"], [1, "absolute", "top-1/2", "left-1/2", "-translate-x-1/2", "-translate-y-1/2", "w-[700px]", "h-[700px]", "rounded-full", "blur-3xl", "z-0", 3, "ngClass"], [1, "h-full", "transition-all", "duration-200", "ease-out", 3, "ngClass"], [1, "sticky", "top-0", "z-50", "animate-fade-in", 2, "animation-delay", "0s"], [1, "transition-all", "duration-300", "ease-in-out", "overflow-hidden"], [1, "max-w-7xl", "mx-auto", "px-6", "sm:px-8", "py-6", "sm:py-8"], [1, "flex", "flex-col", "sm:flex-row", "items-start", "sm:items-center", "justify-between", "gap-3", "sm:gap-0"], [1, "flex-1"], [1, "flex", "items-center", "gap-3"], [1, "text-2xl", "sm:text-3xl", "font-bold", "mb-2", "bg-gradient-to-r", "from-blue-600", "via-purple-600", "to-indigo-600", "bg-clip-text", "text-transparent"], ["title", "Refreshing data...", 1, "animate-spin", "w-4", "h-4", "border-2", "border-blue-500/30", "border-t-blue-500", "rounded-full"], [1, "flex", "flex-wrap", "items-center", "justify-between", "gap-3", "sm:gap-4"], [1, "text-sm", "sm:text-base"], [1, "flex", "items-center", "gap-4"], ["type", "button", "title", "Search (/ or Cmd+K)", 1, "flex", "items-center", "gap-2", "px-3", "py-1.5", "rounded-lg", "text-xs", "font-medium", "transition-all", "duration-200", "hover:scale-105", 3, "click"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-4", "h-4"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"], [1, "flex", "items-center", "gap-2"], ["type", "button", 1, "flex", "items-center", "gap-2", "px-3", "py-1.5", "rounded-lg", "text-xs", "font-medium", "transition-all", "duration-200", "hover:scale-105", 3, "click"], [1, "flex", "items-center", "gap-2", "sm:gap-3", "whitespace-nowrap"], [1, "text-xs", "sm:text-sm", "font-medium"], [3, "click", "mousedown", "pointerdown"], [1, "px-3", "sm:px-4", "py-1.5", "rounded-lg", "text-xs", "sm:text-sm", "font-medium", "focus:outline-none", "focus:ring-2", "focus:ring-blue-500", "focus:border-transparent", "transition-colors", "duration-200", "cursor-pointer", 3, "ngModelChange", "ngModel"], [3, "value"], [1, "flex", "flex-col", "gap-4", "min-w-[180px]"], [1, "text-left", "sm:text-right"], [1, "text-xs", "sm:text-sm"], [1, "text-sm", "sm:text-base", "font-medium"], [1, "max-w-7xl", "mx-auto", "px-6", "sm:px-8", "py-3"], [1, "flex", "items-center", "justify-between", "gap-4"], [1, "flex", "items-center", "gap-4", "flex-1", "min-w-0"], [1, "text-lg", "font-bold", "truncate", "bg-gradient-to-r", "from-blue-600", "via-purple-600", "to-indigo-600", "bg-clip-text", "text-transparent"], [1, "hidden", "lg:flex", "items-center", "gap-3", "px-4", "py-1.5", "rounded-lg", 3, "ngClass"], ["type", "button", "title", "Search (/ or Cmd+K)", 1, "p-2", "rounded-lg", "transition-all", "duration-200", "hover:scale-110", 3, "click"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-5", "h-5"], ["type", "button", 1, "p-2", "rounded-lg", "transition-all", "duration-200", "hover:scale-110", 3, "click", "title"], [1, "px-3", "py-1.5", "rounded-lg", "text-xs", "font-medium", "focus:outline-none", "focus:ring-2", "focus:ring-blue-500", "focus:border-transparent", "transition-colors", "duration-200", "cursor-pointer", 3, "ngModelChange", "ngModel"], [1, "sticky", "top-[var(--header-height)]", "z-40", "border-b", "backdrop-blur-md", "animate-slide-up-fade", 3, "ngClass"], [1, "fixed", "right-6", "top-1/2", "-translate-y-1/2", "z-40", "hidden", "xl:flex", "flex-col", "gap-3"], [1, "w-3", "h-3", "rounded-full", "transition-all", "duration-200", "hover:scale-150", "active:scale-100", 3, "title", "ngClass"], [1, "max-w-7xl", "mx-auto", "px-6", "sm:px-8"], [1, "pt-8", "sm:pt-12", "pb-16", "sm:pb-24"], ["id", "overall-section", 1, "animate-fade-in-up", "mb-20", "sm:mb-28", 2, "animation-delay", "0.1s"], [3, "isLightMode"], [3, "resultSelected", "isLightMode"], [3, "expandedChange", "scrollToTop", "toggleView", "isLightMode", "isCompactMode", "isExpanded"], [3, "navigate", "isLightMode", "sections", "activeSection"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M4 6h16M4 12h16M4 18h16"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M4 6a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2H6a2 2 0 01-2-2V6zM14 6a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2h-2a2 2 0 01-2-2V6zM4 16a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2H6a2 2 0 01-2-2v-2zM14 16a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2h-2a2 2 0 01-2-2v-2z"], [1, "text-xs", "font-medium"], [1, "text-sm", "font-bold"], [1, "text-xs", "font-semibold", 3, "ngClass"], [1, "flex", "items-center", "gap-3", "flex-1", "min-w-0"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-5", "h-5", "flex-shrink-0", 3, "ngClass"], [1, "flex", "items-center", "gap-2", "flex-1", "min-w-0"], [1, "text-sm", "font-medium", 3, "ngClass"], [1, "text-sm", "font-semibold", "truncate", 3, "ngClass"], [1, "px-2", "py-0.5", "rounded", "text-xs", "font-medium", "uppercase", "border", "flex-shrink-0", 3, "ngClass"], ["title", "Clear search", 1, "p-2", "rounded-lg", "transition-colors", "flex-shrink-0", 3, "click", "ngClass"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M6 18L18 6M6 6l12 12"], [1, "w-3", "h-3", "rounded-full", "transition-all", "duration-200", "hover:scale-150", "active:scale-100", 3, "click", "title", "ngClass"], [1, "rounded-xl", "border", "p-6", "sm:p-8", "animate-pulse", 3, "ngClass"], [3, "assessment", "revenueMetric", "charts", "metrics", "isLightMode", "isLoading", "isCompactMode", "isChartsLoading"], [1, "space-y-6"], [3, "width", "height", "isLightMode"], [1, "flex-1", "space-y-2"], [1, "space-y-2"], [1, "grid", "grid-cols-1", "md:grid-cols-2", "gap-4", "mt-6"], [1, "relative", "mb-16", "sm:mb-20", "animate-fade-in", 2, "animation-delay", "0.15s"], ["id", "insights-section", 1, "relative"], [1, "absolute", "inset-0", "-mx-6", "sm:-mx-8", "-mt-8", "rounded-3xl", "opacity-30", "backdrop-blur-sm", 2, "mask-image", "radial-gradient(ellipse at center, black 0%, transparent 70%)", 3, "ngClass"], [1, "relative"], [1, "flex", "items-center", "justify-between", "mb-6", "sm:mb-8", "animate-fade-in", 2, "animation-delay", "0.2s"], [1, "pl-4", 3, "ngClass"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-6", "h-6", 3, "ngClass"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M9.663 17h4.673M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z"], [1, "text-xl", "sm:text-2xl", "font-bold"], [1, "masonry-grid"], [1, "grid", "grid-cols-1", "md:grid-cols-2", "lg:grid-cols-3", "gap-4"], ["aria-hidden", "true", 1, "absolute", "inset-0", "flex", "items-center"], [1, "w-full", "h-px", "bg-gradient-to-r", 3, "ngClass"], [1, "relative", "flex", "justify-center"], [1, "px-4", "py-2", "rounded-full", 3, "ngClass"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-5", "h-5", 3, "ngClass"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M13 10V3L4 14h7v7l9-11h-7z"], [1, "rounded-xl", "border", "p-6", "animate-pulse", "min-h-[280px]", 3, "ngClass"], [1, "space-y-4"], [1, "flex", "items-center", "gap-3", "mb-4"], [1, "mt-6", "space-y-2"], [1, "flex", "gap-2", "mt-4"], [1, "animate-fade-in-up", 3, "class", "animation-delay", "libSymphiqSearchHighlight", "highlightId"], [1, "animate-fade-in-up", 3, "libSymphiqSearchHighlight", "highlightId"], [3, "insight", "allMetrics", "charts", "allCharts", "isLightMode", "viewMode", "isCompactMode"], [1, "animate-fade-in-up", 3, "animation-delay", "libSymphiqSearchHighlight", "highlightId"], [1, "relative", "mb-14", "sm:mb-24", "mt-24", "sm:mt-32", "animate-fade-in", 2, "animation-delay", "0.35s"], ["id", "metrics-section", 1, "relative"], [1, "absolute", "inset-0", "-mx-6", "sm:-mx-8", "-mt-8", "rounded-3xl", "opacity-30", "backdrop-blur-sm", 2, "mask-image", "radial-gradient(ellipse at top right, black 0%, transparent 70%)", 3, "ngClass"], [1, "flex", "flex-col", "gap-4", "mb-6", "sm:mb-8", "animate-fade-in", 2, "animation-delay", "0.4s"], [1, "flex", "items-center", "justify-between"], ["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, "hidden", "sm:flex", "gap-2", "sm:gap-3", "items-center", "relative"], [1, "absolute", "-right-2", "top-1/2", "-translate-y-1/2", "z-10"], [1, "px-3", "sm:px-4", "py-2", "rounded-lg", "text-xs", "sm:text-sm", "font-medium", "focus:outline-none", "focus:ring-2", "focus:ring-blue-500", "focus:border-transparent", "transition-all", "duration-200", "cursor-pointer", 3, "ngModelChange", "ngModel"], [1, "px-3", "sm:px-4", "py-2", "rounded-lg", "text-xs", "sm:text-sm", "font-medium", "focus:outline-none", "focus:ring-2", "focus:ring-blue-500", "transition-all", "flex", "items-center", "gap-2", "cursor-pointer", "hover:scale-105", "active:scale-95", 3, "click", "title"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M3 4h13M3 8h9m-9 4h6m4 0l4-4m0 0l4 4m-4-4v12"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M3 4h13M3 8h9m-9 4h9m5-4v12m0 0l-4-4m4 4l4-4"], [1, "sm:hidden", "-mx-6", "px-6"], [1, "flex", "gap-2", "overflow-x-auto", "pb-2", "snap-x", "snap-mandatory", "scrollbar-hide"], [1, "space-y-8", "sm:space-y-10"], [1, "space-y-8", "sm:space-y-10", 3, "animate-content-change", "transition-opacity-slow"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M7 12l3-3 3 3 4-4M8 21l4-4 4 4M3 4h18M4 4h16v12a1 1 0 01-1 1H5a1 1 0 01-1-1V4z"], [1, "w-4", "h-4", "border-2", "border-blue-500/30", "border-t-blue-500", "rounded-full", "animate-spin"], ["disabled", "", 1, "font-semibold", 3, "value"], [1, "px-4", "py-2", "rounded-full", "text-xs", "font-medium", "whitespace-nowrap", "transition-all", "duration-200", "flex-shrink-0", "snap-start", "active:scale-95", 3, "ngClass", "opacity-70"], [1, "px-4", "py-2", "rounded-full", "text-xs", "font-medium", "whitespace-nowrap", "transition-all", "duration-200", "flex-shrink-0", "snap-start", "active:scale-95", 3, "click", "ngClass"], [1, "rounded-xl", "border", "p-6", "animate-pulse", 3, "ngClass"], [1, "flex", "items-center", "justify-between", "mb-4"], [1, "grid", "grid-cols-2", "md:grid-cols-4", "gap-4", "mt-6"], [1, "rounded-xl", "p-12", "border", "text-center", "animate-fade-in", 3, "ngClass"], [1, "w-full", "animate-fade-in-up", 3, "libSymphiqSearchHighlight", "highlightId"], [3, "metric", "insights", "charts", "allCharts", "analysis", "isLightMode", "viewMode", "isCompactMode"], [1, "bento-grid", "mt-4"], [1, "grid", "grid-cols-1", "md:grid-cols-2", "lg:grid-cols-4", "gap-3", "sm:gap-4", "mt-4"], [1, "animate-fade-in-up", 3, "class", "animation-delay"], [1, "animate-fade-in-up"], [1, "h-full", 3, "metric", "insights", "charts", "allCharts", "analysis", "isLightMode", "viewMode", "isCompactMode"], [1, "animate-fade-in-up", 3, "animation-delay"], [1, "rounded-xl", "border", "p-6", "animate-pulse", "min-h-[240px]", 3, "ngClass"], [1, "flex", "items-center", "gap-3", "mt-4"], [1, "mt-4"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-16", "h-16", "mx-auto", "mb-4", 3, "ngClass"], [1, "text-lg", "font-semibold", "mb-2", 3, "ngClass"], [1, "text-sm", 3, "ngClass"], [1, "relative", "mb-16", "sm:mb-20", "mt-28", "sm:mt-36", "animate-fade-in", 2, "animation-delay", "0.65s"], ["id", "breakdowns-section", 1, "relative"], [1, "absolute", "inset-0", "-mx-6", "sm:-mx-8", "-mt-8", "rounded-3xl", "opacity-30", "backdrop-blur-sm", 2, "mask-image", "radial-gradient(ellipse at bottom left, black 0%, transparent 70%)", 3, "ngClass"], [1, "flex", "flex-col", "sm:flex-row", "sm:items-center", "justify-between", "gap-4", "mb-6", "sm:mb-8", "animate-fade-in", 2, "animation-delay", "0.7s"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M4 5a1 1 0 011-1h14a1 1 0 011 1v2a1 1 0 01-1 1H5a1 1 0 01-1-1V5zM4 13a1 1 0 011-1h6a1 1 0 011 1v6a1 1 0 01-1 1H5a1 1 0 01-1-1v-6zM16 13a1 1 1 0 011-1h2a1 1 0 011 1v6a1 1 0 01-1 1h-2a1 1 0 01-1-1v-6z"], [1, "relative", "inline-block", 3, "click", "mousedown", "pointerdown"], [1, "px-3", "py-2", "text-sm", "rounded-lg", "border", "transition-all", "duration-200", "cursor-pointer", "focus:ring-2", "focus:ring-blue-500", "focus:outline-none", 3, "ngModelChange", "ngModel", "ngClass"], [1, "space-y-6", 3, "animate-content-change", "transition-opacity-slow"], [1, "w-4", "h-4", "border-2", "border-purple-500/30", "border-t-purple-500", "rounded-full", "animate-spin"], [1, "space-y-3"], [1, "flex", "items-center", "justify-between", "p-3", "rounded-lg", 3, "ngClass"], [3, "breakdown", "charts", "isLightMode", "isCompactMode"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M4 5a1 1 0 011-1h14a1 1 0 011 1v2a1 1 0 01-1 1H5a1 1 0 01-1-1V5zM4 13a1 1 0 011-1h6a1 1 0 011 1v6a1 1 0 01-1 1H5a1 1 0 01-1-1v-6zM16 13a1 1 0 011-1h2a1 1 0 011 1v6a1 1 0 01-1 1h-2a1 1 0 01-1-1v-6z"], [1, "relative", "mb-16", "sm:mb-20", "mt-28", "sm:mt-36", "animate-fade-in", 2, "animation-delay", "0.85s"], ["id", "competitive-section", 1, "relative"], [1, "flex", "items-center", "justify-between", "mb-6", "sm:mb-8", "animate-fade-in", 2, "animation-delay", "0.9s"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M19 21V5a2 2 0 00-2-2H7a2 2 0 00-2 2v16m14 0h2m-2 0h-5m-9 0H3m2 0h5M9 7h1m-1 4h1m4-4h1m-1 4h1m-5 10v-5a1 1 0 011-1h2a1 1 0 011 1v5m-4 0h4"], [1, "hidden", "sm:block", "relative"], [3, "metrics", "allCharts", "isLightMode", "isCompactMode"], [1, "w-4", "h-4", "border-2", "border-indigo-500/30", "border-t-indigo-500", "rounded-full", "animate-spin"], [1, "grid", "grid-cols-1", "md:grid-cols-3", "gap-4", "mt-6"]], template: function SymphiqFunnelAnalysisDashboardComponent_Template(rf, ctx) { if (rf & 1) {
21957
22124
  const _r1 = i0.ɵɵgetCurrentView();
21958
22125
  i0.ɵɵelementStart(0, "div", 1, 0);
21959
22126
  i0.ɵɵelement(2, "div", 2);
@@ -21963,96 +22130,98 @@ class SymphiqFunnelAnalysisDashboardComponent {
21963
22130
  i0.ɵɵelementStart(9, "div");
21964
22131
  i0.ɵɵelement(10, "div", 8);
21965
22132
  i0.ɵɵelementEnd();
21966
- i0.ɵɵelementStart(11, "header", 9)(12, "div", 10)(13, "div", 11)(14, "div", 12)(15, "div", 13)(16, "h1", 14);
21967
- i0.ɵɵtext(17);
22133
+ i0.ɵɵelementStart(11, "header", 9)(12, "div", 10)(13, "div", 11)(14, "div", 12)(15, "div", 13)(16, "div", 14)(17, "h1", 15);
22134
+ i0.ɵɵtext(18);
21968
22135
  i0.ɵɵelementEnd();
21969
- i0.ɵɵelementStart(18, "div", 15)(19, "p", 16);
21970
- i0.ɵɵtext(20, "Revenue Orchestration & Funnel Analysis");
22136
+ i0.ɵɵconditionalCreate(19, SymphiqFunnelAnalysisDashboardComponent_Conditional_19_Template, 1, 0, "div", 16);
21971
22137
  i0.ɵɵelementEnd();
21972
- i0.ɵɵelementStart(21, "div", 17)(22, "button", 18);
21973
- i0.ɵɵlistener("click", function SymphiqFunnelAnalysisDashboardComponent_Template_button_click_22_listener($event) { i0.ɵɵrestoreView(_r1); ctx.searchService.openSearch(); return i0.ɵɵresetView($event.preventDefault()); });
22138
+ i0.ɵɵelementStart(20, "div", 17)(21, "p", 18);
22139
+ i0.ɵɵtext(22, "Revenue Orchestration & Funnel Analysis");
22140
+ i0.ɵɵelementEnd();
22141
+ i0.ɵɵelementStart(23, "div", 19)(24, "button", 20);
22142
+ i0.ɵɵlistener("click", function SymphiqFunnelAnalysisDashboardComponent_Template_button_click_24_listener($event) { i0.ɵɵrestoreView(_r1); ctx.searchService.openSearch(); return i0.ɵɵresetView($event.preventDefault()); });
21974
22143
  i0.ɵɵnamespaceSVG();
21975
- i0.ɵɵelementStart(23, "svg", 19);
21976
- i0.ɵɵelement(24, "path", 20);
22144
+ i0.ɵɵelementStart(25, "svg", 21);
22145
+ i0.ɵɵelement(26, "path", 22);
21977
22146
  i0.ɵɵelementEnd();
21978
22147
  i0.ɵɵnamespaceHTML();
21979
- i0.ɵɵelementStart(25, "span");
21980
- i0.ɵɵtext(26, "Search");
22148
+ i0.ɵɵelementStart(27, "span");
22149
+ i0.ɵɵtext(28, "Search");
21981
22150
  i0.ɵɵelementEnd()();
21982
- i0.ɵɵelementStart(27, "div", 21)(28, "button", 22);
21983
- i0.ɵɵlistener("click", function SymphiqFunnelAnalysisDashboardComponent_Template_button_click_28_listener($event) { i0.ɵɵrestoreView(_r1); ctx.viewModeService.toggleViewMode(); return i0.ɵɵresetView($event.preventDefault()); });
21984
- i0.ɵɵconditionalCreate(29, SymphiqFunnelAnalysisDashboardComponent_Conditional_29_Template, 4, 0)(30, SymphiqFunnelAnalysisDashboardComponent_Conditional_30_Template, 4, 0);
22151
+ i0.ɵɵelementStart(29, "div", 23)(30, "button", 24);
22152
+ i0.ɵɵlistener("click", function SymphiqFunnelAnalysisDashboardComponent_Template_button_click_30_listener($event) { i0.ɵɵrestoreView(_r1); ctx.viewModeService.toggleViewMode(); return i0.ɵɵresetView($event.preventDefault()); });
22153
+ i0.ɵɵconditionalCreate(31, SymphiqFunnelAnalysisDashboardComponent_Conditional_31_Template, 4, 0)(32, SymphiqFunnelAnalysisDashboardComponent_Conditional_32_Template, 4, 0);
21985
22154
  i0.ɵɵelementEnd()();
21986
- i0.ɵɵelementStart(31, "div", 23)(32, "label", 24);
21987
- i0.ɵɵtext(33, "View:");
22155
+ i0.ɵɵelementStart(33, "div", 25)(34, "label", 26);
22156
+ i0.ɵɵtext(35, "View:");
21988
22157
  i0.ɵɵelementEnd();
21989
- i0.ɵɵelementStart(34, "div", 25);
21990
- i0.ɵɵlistener("click", function SymphiqFunnelAnalysisDashboardComponent_Template_div_click_34_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView($event.stopPropagation()); })("mousedown", function SymphiqFunnelAnalysisDashboardComponent_Template_div_mousedown_34_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView($event.stopPropagation()); })("pointerdown", function SymphiqFunnelAnalysisDashboardComponent_Template_div_pointerdown_34_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView($event.stopPropagation()); });
21991
- i0.ɵɵelementStart(35, "select", 26);
21992
- i0.ɵɵlistener("ngModelChange", function SymphiqFunnelAnalysisDashboardComponent_Template_select_ngModelChange_35_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.changeSectionFilter($event)); });
21993
- i0.ɵɵrepeaterCreate(36, SymphiqFunnelAnalysisDashboardComponent_For_37_Template, 2, 2, "option", 27, _forTrack0$1);
22158
+ i0.ɵɵelementStart(36, "div", 27);
22159
+ i0.ɵɵlistener("click", function SymphiqFunnelAnalysisDashboardComponent_Template_div_click_36_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView($event.stopPropagation()); })("mousedown", function SymphiqFunnelAnalysisDashboardComponent_Template_div_mousedown_36_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView($event.stopPropagation()); })("pointerdown", function SymphiqFunnelAnalysisDashboardComponent_Template_div_pointerdown_36_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView($event.stopPropagation()); });
22160
+ i0.ɵɵelementStart(37, "select", 28);
22161
+ i0.ɵɵlistener("ngModelChange", function SymphiqFunnelAnalysisDashboardComponent_Template_select_ngModelChange_37_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.changeSectionFilter($event)); });
22162
+ i0.ɵɵrepeaterCreate(38, SymphiqFunnelAnalysisDashboardComponent_For_39_Template, 2, 2, "option", 29, _forTrack0$1);
21994
22163
  i0.ɵɵelementEnd()()()()()();
21995
- i0.ɵɵelementStart(38, "div", 28)(39, "div", 29)(40, "div", 30);
21996
- i0.ɵɵtext(41, "Generated At");
22164
+ i0.ɵɵelementStart(40, "div", 30)(41, "div", 31)(42, "div", 32);
22165
+ i0.ɵɵtext(43, "Generated At");
21997
22166
  i0.ɵɵelementEnd();
21998
- i0.ɵɵelementStart(42, "div", 31);
21999
- i0.ɵɵtext(43);
22167
+ i0.ɵɵelementStart(44, "div", 33);
22168
+ i0.ɵɵtext(45);
22000
22169
  i0.ɵɵelementEnd()();
22001
- i0.ɵɵelementStart(44, "div", 29)(45, "div", 30);
22002
- i0.ɵɵtext(46, "Requested by");
22170
+ i0.ɵɵelementStart(46, "div", 31)(47, "div", 32);
22171
+ i0.ɵɵtext(48, "Requested by");
22003
22172
  i0.ɵɵelementEnd();
22004
- i0.ɵɵelementStart(47, "div", 31);
22005
- i0.ɵɵtext(48);
22173
+ i0.ɵɵelementStart(49, "div", 33);
22174
+ i0.ɵɵtext(50);
22006
22175
  i0.ɵɵelementEnd()()()()()();
22007
- i0.ɵɵelementStart(49, "div", 10)(50, "div", 32)(51, "div", 33)(52, "div", 34)(53, "h1", 35);
22008
- i0.ɵɵtext(54);
22176
+ i0.ɵɵelementStart(51, "div", 10)(52, "div", 34)(53, "div", 35)(54, "div", 36)(55, "h1", 37);
22177
+ i0.ɵɵtext(56);
22009
22178
  i0.ɵɵelementEnd();
22010
- i0.ɵɵconditionalCreate(55, SymphiqFunnelAnalysisDashboardComponent_Conditional_55_Template, 7, 9, "div", 36);
22179
+ i0.ɵɵconditionalCreate(57, SymphiqFunnelAnalysisDashboardComponent_Conditional_57_Template, 7, 9, "div", 38);
22011
22180
  i0.ɵɵelementEnd();
22012
- i0.ɵɵelementStart(56, "div", 37)(57, "button", 38);
22013
- i0.ɵɵlistener("click", function SymphiqFunnelAnalysisDashboardComponent_Template_button_click_57_listener($event) { i0.ɵɵrestoreView(_r1); ctx.searchService.openSearch(); return i0.ɵɵresetView($event.preventDefault()); });
22181
+ i0.ɵɵelementStart(58, "div", 14)(59, "button", 39);
22182
+ i0.ɵɵlistener("click", function SymphiqFunnelAnalysisDashboardComponent_Template_button_click_59_listener($event) { i0.ɵɵrestoreView(_r1); ctx.searchService.openSearch(); return i0.ɵɵresetView($event.preventDefault()); });
22014
22183
  i0.ɵɵnamespaceSVG();
22015
- i0.ɵɵelementStart(58, "svg", 39);
22016
- i0.ɵɵelement(59, "path", 20);
22184
+ i0.ɵɵelementStart(60, "svg", 40);
22185
+ i0.ɵɵelement(61, "path", 22);
22017
22186
  i0.ɵɵelementEnd()();
22018
22187
  i0.ɵɵnamespaceHTML();
22019
- i0.ɵɵelementStart(60, "button", 40);
22020
- i0.ɵɵlistener("click", function SymphiqFunnelAnalysisDashboardComponent_Template_button_click_60_listener($event) { i0.ɵɵrestoreView(_r1); ctx.viewModeService.toggleViewMode(); return i0.ɵɵresetView($event.preventDefault()); });
22021
- i0.ɵɵconditionalCreate(61, SymphiqFunnelAnalysisDashboardComponent_Conditional_61_Template, 2, 0, ":svg:svg", 39)(62, SymphiqFunnelAnalysisDashboardComponent_Conditional_62_Template, 2, 0, ":svg:svg", 39);
22188
+ i0.ɵɵelementStart(62, "button", 41);
22189
+ i0.ɵɵlistener("click", function SymphiqFunnelAnalysisDashboardComponent_Template_button_click_62_listener($event) { i0.ɵɵrestoreView(_r1); ctx.viewModeService.toggleViewMode(); return i0.ɵɵresetView($event.preventDefault()); });
22190
+ i0.ɵɵconditionalCreate(63, SymphiqFunnelAnalysisDashboardComponent_Conditional_63_Template, 2, 0, ":svg:svg", 40)(64, SymphiqFunnelAnalysisDashboardComponent_Conditional_64_Template, 2, 0, ":svg:svg", 40);
22022
22191
  i0.ɵɵelementEnd();
22023
- i0.ɵɵelementStart(63, "div", 25);
22024
- i0.ɵɵlistener("click", function SymphiqFunnelAnalysisDashboardComponent_Template_div_click_63_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView($event.stopPropagation()); })("mousedown", function SymphiqFunnelAnalysisDashboardComponent_Template_div_mousedown_63_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView($event.stopPropagation()); })("pointerdown", function SymphiqFunnelAnalysisDashboardComponent_Template_div_pointerdown_63_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView($event.stopPropagation()); });
22025
- i0.ɵɵelementStart(64, "select", 41);
22026
- i0.ɵɵlistener("ngModelChange", function SymphiqFunnelAnalysisDashboardComponent_Template_select_ngModelChange_64_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.changeSectionFilter($event)); });
22027
- i0.ɵɵrepeaterCreate(65, SymphiqFunnelAnalysisDashboardComponent_For_66_Template, 2, 2, "option", 27, _forTrack0$1);
22192
+ i0.ɵɵelementStart(65, "div", 27);
22193
+ i0.ɵɵlistener("click", function SymphiqFunnelAnalysisDashboardComponent_Template_div_click_65_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView($event.stopPropagation()); })("mousedown", function SymphiqFunnelAnalysisDashboardComponent_Template_div_mousedown_65_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView($event.stopPropagation()); })("pointerdown", function SymphiqFunnelAnalysisDashboardComponent_Template_div_pointerdown_65_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView($event.stopPropagation()); });
22194
+ i0.ɵɵelementStart(66, "select", 42);
22195
+ i0.ɵɵlistener("ngModelChange", function SymphiqFunnelAnalysisDashboardComponent_Template_select_ngModelChange_66_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.changeSectionFilter($event)); });
22196
+ i0.ɵɵrepeaterCreate(67, SymphiqFunnelAnalysisDashboardComponent_For_68_Template, 2, 2, "option", 29, _forTrack0$1);
22028
22197
  i0.ɵɵelementEnd()()()()()()();
22029
- i0.ɵɵconditionalCreate(67, SymphiqFunnelAnalysisDashboardComponent_Conditional_67_Template, 16, 8, "div", 42);
22030
- i0.ɵɵelementStart(68, "div", 43);
22031
- i0.ɵɵconditionalCreate(69, SymphiqFunnelAnalysisDashboardComponent_Conditional_69_Template, 1, 2, "button", 44);
22032
- i0.ɵɵconditionalCreate(70, SymphiqFunnelAnalysisDashboardComponent_Conditional_70_Template, 1, 2, "button", 44);
22033
- i0.ɵɵconditionalCreate(71, SymphiqFunnelAnalysisDashboardComponent_Conditional_71_Template, 1, 2, "button", 44);
22034
- i0.ɵɵconditionalCreate(72, SymphiqFunnelAnalysisDashboardComponent_Conditional_72_Template, 1, 2, "button", 44);
22035
- i0.ɵɵconditionalCreate(73, SymphiqFunnelAnalysisDashboardComponent_Conditional_73_Template, 1, 2, "button", 44);
22198
+ i0.ɵɵconditionalCreate(69, SymphiqFunnelAnalysisDashboardComponent_Conditional_69_Template, 16, 8, "div", 43);
22199
+ i0.ɵɵelementStart(70, "div", 44);
22200
+ i0.ɵɵconditionalCreate(71, SymphiqFunnelAnalysisDashboardComponent_Conditional_71_Template, 1, 2, "button", 45);
22201
+ i0.ɵɵconditionalCreate(72, SymphiqFunnelAnalysisDashboardComponent_Conditional_72_Template, 1, 2, "button", 45);
22202
+ i0.ɵɵconditionalCreate(73, SymphiqFunnelAnalysisDashboardComponent_Conditional_73_Template, 1, 2, "button", 45);
22203
+ i0.ɵɵconditionalCreate(74, SymphiqFunnelAnalysisDashboardComponent_Conditional_74_Template, 1, 2, "button", 45);
22204
+ i0.ɵɵconditionalCreate(75, SymphiqFunnelAnalysisDashboardComponent_Conditional_75_Template, 1, 2, "button", 45);
22036
22205
  i0.ɵɵelementEnd();
22037
- i0.ɵɵelementStart(74, "main", 45)(75, "div", 46);
22038
- i0.ɵɵconditionalCreate(76, SymphiqFunnelAnalysisDashboardComponent_Conditional_76_Template, 2, 9, "div", 47);
22039
- i0.ɵɵconditionalCreate(77, SymphiqFunnelAnalysisDashboardComponent_Conditional_77_Template, 17, 10);
22040
- i0.ɵɵconditionalCreate(78, SymphiqFunnelAnalysisDashboardComponent_Conditional_78_Template, 32, 22);
22041
- i0.ɵɵconditionalCreate(79, SymphiqFunnelAnalysisDashboardComponent_Conditional_79_Template, 20, 16);
22042
- i0.ɵɵconditionalCreate(80, SymphiqFunnelAnalysisDashboardComponent_Conditional_80_Template, 18, 16);
22206
+ i0.ɵɵelementStart(76, "main", 46)(77, "div", 47);
22207
+ i0.ɵɵconditionalCreate(78, SymphiqFunnelAnalysisDashboardComponent_Conditional_78_Template, 3, 1, "div", 48);
22208
+ i0.ɵɵconditionalCreate(79, SymphiqFunnelAnalysisDashboardComponent_Conditional_79_Template, 17, 10);
22209
+ i0.ɵɵconditionalCreate(80, SymphiqFunnelAnalysisDashboardComponent_Conditional_80_Template, 30, 18);
22210
+ i0.ɵɵconditionalCreate(81, SymphiqFunnelAnalysisDashboardComponent_Conditional_81_Template, 18, 12);
22211
+ i0.ɵɵconditionalCreate(82, SymphiqFunnelAnalysisDashboardComponent_Conditional_82_Template, 19, 13);
22043
22212
  i0.ɵɵelementEnd()();
22044
- i0.ɵɵelement(81, "symphiq-funnel-analysis-modal", 48)(82, "symphiq-tooltip-container");
22045
- i0.ɵɵelementStart(83, "symphiq-search-bar", 49);
22046
- i0.ɵɵlistener("resultSelected", function SymphiqFunnelAnalysisDashboardComponent_Template_symphiq_search_bar_resultSelected_83_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.handleSearchResult($event)); });
22213
+ i0.ɵɵelement(83, "symphiq-funnel-analysis-modal", 49)(84, "symphiq-tooltip-container");
22214
+ i0.ɵɵelementStart(85, "symphiq-search-bar", 50);
22215
+ i0.ɵɵlistener("resultSelected", function SymphiqFunnelAnalysisDashboardComponent_Template_symphiq_search_bar_resultSelected_85_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.handleSearchResult($event)); });
22047
22216
  i0.ɵɵelementEnd();
22048
- i0.ɵɵelementStart(84, "symphiq-mobile-fab", 50);
22049
- i0.ɵɵlistener("expandedChange", function SymphiqFunnelAnalysisDashboardComponent_Template_symphiq_mobile_fab_expandedChange_84_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.fabExpanded.set($event)); })("scrollToTop", function SymphiqFunnelAnalysisDashboardComponent_Template_symphiq_mobile_fab_scrollToTop_84_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.scrollToTop()); })("toggleView", function SymphiqFunnelAnalysisDashboardComponent_Template_symphiq_mobile_fab_toggleView_84_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.viewModeService.toggleViewMode()); });
22217
+ i0.ɵɵelementStart(86, "symphiq-mobile-fab", 51);
22218
+ i0.ɵɵlistener("expandedChange", function SymphiqFunnelAnalysisDashboardComponent_Template_symphiq_mobile_fab_expandedChange_86_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.fabExpanded.set($event)); })("scrollToTop", function SymphiqFunnelAnalysisDashboardComponent_Template_symphiq_mobile_fab_scrollToTop_86_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.scrollToTop()); })("toggleView", function SymphiqFunnelAnalysisDashboardComponent_Template_symphiq_mobile_fab_toggleView_86_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.viewModeService.toggleViewMode()); });
22050
22219
  i0.ɵɵelementEnd();
22051
- i0.ɵɵelementStart(85, "symphiq-mobile-bottom-nav", 51);
22052
- i0.ɵɵlistener("navigate", function SymphiqFunnelAnalysisDashboardComponent_Template_symphiq_mobile_bottom_nav_navigate_85_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.handleMobileNavigation($event)); });
22220
+ i0.ɵɵelementStart(87, "symphiq-mobile-bottom-nav", 52);
22221
+ i0.ɵɵlistener("navigate", function SymphiqFunnelAnalysisDashboardComponent_Template_symphiq_mobile_bottom_nav_navigate_87_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.handleMobileNavigation($event)); });
22053
22222
  i0.ɵɵelementEnd()();
22054
22223
  } if (rf & 2) {
22055
- let tmp_35_0;
22224
+ let tmp_36_0;
22056
22225
  i0.ɵɵstyleProp("display", ctx.embedded() ? "block" : null)("min-height", ctx.embedded() ? "auto" : null);
22057
22226
  i0.ɵɵclassProp("min-h-screen", !ctx.embedded())("relative", !ctx.embedded());
22058
22227
  i0.ɵɵadvance(2);
@@ -22078,8 +22247,10 @@ class SymphiqFunnelAnalysisDashboardComponent {
22078
22247
  i0.ɵɵclassProp("max-h-0", ctx.isScrolled())("opacity-0", ctx.isScrolled())("max-h-96", !ctx.isScrolled())("opacity-100", !ctx.isScrolled());
22079
22248
  i0.ɵɵadvance();
22080
22249
  i0.ɵɵclassProp("pointer-events-none", ctx.isScrolled())("pointer-events-auto", !ctx.isScrolled());
22081
- i0.ɵɵadvance(4);
22250
+ i0.ɵɵadvance(5);
22082
22251
  i0.ɵɵtextInterpolate(ctx.funnelAnalysis().title);
22252
+ i0.ɵɵadvance();
22253
+ i0.ɵɵconditional(ctx.isLoading() && !ctx.isShowingLoader() ? 19 : -1);
22083
22254
  i0.ɵɵadvance(2);
22084
22255
  i0.ɵɵclassMap(ctx.headerSubtitleClass());
22085
22256
  i0.ɵɵadvance(3);
@@ -22087,7 +22258,7 @@ class SymphiqFunnelAnalysisDashboardComponent {
22087
22258
  i0.ɵɵadvance(6);
22088
22259
  i0.ɵɵclassMap(ctx.buttonClass());
22089
22260
  i0.ɵɵadvance();
22090
- i0.ɵɵconditional(ctx.viewModeService.isCompact() ? 29 : 30);
22261
+ i0.ɵɵconditional(ctx.viewModeService.isCompact() ? 31 : 32);
22091
22262
  i0.ɵɵadvance(3);
22092
22263
  i0.ɵɵclassMap(ctx.metaLabelClass());
22093
22264
  i0.ɵɵadvance(3);
@@ -22106,7 +22277,7 @@ class SymphiqFunnelAnalysisDashboardComponent {
22106
22277
  i0.ɵɵadvance(2);
22107
22278
  i0.ɵɵclassMap(ctx.headerTitleClass());
22108
22279
  i0.ɵɵadvance();
22109
- i0.ɵɵtextInterpolate2("", (tmp_35_0 = ctx.requestedByUser()) == null ? null : tmp_35_0.firstName, " ", (tmp_35_0 = ctx.requestedByUser()) == null ? null : tmp_35_0.lastName);
22280
+ i0.ɵɵtextInterpolate2("", (tmp_36_0 = ctx.requestedByUser()) == null ? null : tmp_36_0.firstName, " ", (tmp_36_0 = ctx.requestedByUser()) == null ? null : tmp_36_0.lastName);
22110
22281
  i0.ɵɵadvance();
22111
22282
  i0.ɵɵclassProp("max-h-0", !ctx.isScrolled())("opacity-0", !ctx.isScrolled())("max-h-20", ctx.isScrolled())("opacity-100", ctx.isScrolled());
22112
22283
  i0.ɵɵadvance();
@@ -22114,41 +22285,41 @@ class SymphiqFunnelAnalysisDashboardComponent {
22114
22285
  i0.ɵɵadvance(4);
22115
22286
  i0.ɵɵtextInterpolate(ctx.funnelAnalysis().title);
22116
22287
  i0.ɵɵadvance();
22117
- i0.ɵɵconditional(ctx.revenueMetric() ? 55 : -1);
22288
+ i0.ɵɵconditional(ctx.revenueMetric() ? 57 : -1);
22118
22289
  i0.ɵɵadvance(2);
22119
22290
  i0.ɵɵclassMap(ctx.buttonClass());
22120
22291
  i0.ɵɵadvance(3);
22121
22292
  i0.ɵɵclassMap(ctx.buttonClass());
22122
22293
  i0.ɵɵproperty("title", ctx.viewModeService.isCompact() ? "Compact View (Click to Expand)" : "Expanded View (Click to Compact)");
22123
22294
  i0.ɵɵadvance();
22124
- i0.ɵɵconditional(ctx.viewModeService.isCompact() ? 61 : 62);
22295
+ i0.ɵɵconditional(ctx.viewModeService.isCompact() ? 63 : 64);
22125
22296
  i0.ɵɵadvance(3);
22126
22297
  i0.ɵɵclassMap(ctx.selectClass());
22127
22298
  i0.ɵɵproperty("ngModel", ctx.selectedSectionFilter());
22128
22299
  i0.ɵɵadvance();
22129
22300
  i0.ɵɵrepeater(ctx.sectionFilters);
22130
22301
  i0.ɵɵadvance(2);
22131
- i0.ɵɵconditional(ctx.searchService.activeSearchResult() ? 67 : -1);
22302
+ i0.ɵɵconditional(ctx.searchService.activeSearchResult() ? 69 : -1);
22132
22303
  i0.ɵɵadvance(2);
22133
- i0.ɵɵconditional(ctx.showOverallPerformance() ? 69 : -1);
22304
+ i0.ɵɵconditional(ctx.showOverallPerformance() ? 71 : -1);
22134
22305
  i0.ɵɵadvance();
22135
- i0.ɵɵconditional(ctx.showKeyInsights() ? 70 : -1);
22306
+ i0.ɵɵconditional(ctx.showKeyInsights() ? 72 : -1);
22136
22307
  i0.ɵɵadvance();
22137
- i0.ɵɵconditional(ctx.showPerformanceMetrics() ? 71 : -1);
22308
+ i0.ɵɵconditional(ctx.showPerformanceMetrics() ? 73 : -1);
22138
22309
  i0.ɵɵadvance();
22139
- i0.ɵɵconditional(ctx.showPerformanceBreakdowns() ? 72 : -1);
22310
+ i0.ɵɵconditional(ctx.showPerformanceBreakdowns() ? 74 : -1);
22140
22311
  i0.ɵɵadvance();
22141
- i0.ɵɵconditional(ctx.showCompetitiveIntelligence() ? 73 : -1);
22312
+ i0.ɵɵconditional(ctx.showCompetitiveIntelligence() ? 75 : -1);
22142
22313
  i0.ɵɵadvance(3);
22143
- i0.ɵɵconditional(ctx.showOverallPerformance() ? 76 : -1);
22314
+ i0.ɵɵconditional(ctx.showOverallPerformance() ? 78 : -1);
22144
22315
  i0.ɵɵadvance();
22145
- i0.ɵɵconditional(ctx.showKeyInsights() ? 77 : -1);
22316
+ i0.ɵɵconditional(ctx.showKeyInsights() ? 79 : -1);
22146
22317
  i0.ɵɵadvance();
22147
- i0.ɵɵconditional(ctx.showPerformanceMetrics() ? 78 : -1);
22318
+ i0.ɵɵconditional(ctx.showPerformanceMetrics() ? 80 : -1);
22148
22319
  i0.ɵɵadvance();
22149
- i0.ɵɵconditional(ctx.showPerformanceBreakdowns() ? 79 : -1);
22320
+ i0.ɵɵconditional(ctx.showPerformanceBreakdowns() ? 81 : -1);
22150
22321
  i0.ɵɵadvance();
22151
- i0.ɵɵconditional(ctx.showCompetitiveIntelligence() ? 80 : -1);
22322
+ i0.ɵɵconditional(ctx.showCompetitiveIntelligence() ? 82 : -1);
22152
22323
  i0.ɵɵadvance();
22153
22324
  i0.ɵɵproperty("isLightMode", ctx.isLightMode());
22154
22325
  i0.ɵɵadvance(2);
@@ -22157,7 +22328,7 @@ class SymphiqFunnelAnalysisDashboardComponent {
22157
22328
  i0.ɵɵproperty("isLightMode", ctx.isLightMode())("isCompactMode", ctx.viewModeService.isCompact())("isExpanded", ctx.fabExpanded());
22158
22329
  i0.ɵɵadvance();
22159
22330
  i0.ɵɵproperty("isLightMode", ctx.isLightMode())("sections", ctx.navSections)("activeSection", ctx.activeNavSection());
22160
- } }, dependencies: [CommonModule, i1.NgClass, FormsModule, i5.NgSelectOption, i5.ɵNgSelectMultipleOption, i5.SelectControlValueAccessor, i5.NgControlStatus, i5.NgModel, OverallAssessmentComponent,
22331
+ } }, dependencies: [CommonModule, i1.NgClass, FormsModule, i6.NgSelectOption, i6.ɵNgSelectMultipleOption, i6.SelectControlValueAccessor, i6.NgControlStatus, i6.NgModel, OverallAssessmentComponent,
22161
22332
  InsightCardComponent,
22162
22333
  MetricCardComponent,
22163
22334
  BreakdownSectionComponent,
@@ -22257,7 +22428,13 @@ class SymphiqFunnelAnalysisDashboardComponent {
22257
22428
  [class.pointer-events-auto]="!isScrolled()">
22258
22429
  <div class="flex flex-col sm:flex-row items-start sm:items-center justify-between gap-3 sm:gap-0">
22259
22430
  <div class="flex-1">
22260
- <h1 class="text-2xl sm:text-3xl font-bold mb-2 bg-gradient-to-r from-blue-600 via-purple-600 to-indigo-600 bg-clip-text text-transparent">{{funnelAnalysis().title}}</h1>
22431
+ <div class="flex items-center gap-3">
22432
+ <h1 class="text-2xl sm:text-3xl font-bold mb-2 bg-gradient-to-r from-blue-600 via-purple-600 to-indigo-600 bg-clip-text text-transparent">{{funnelAnalysis().title}}</h1>
22433
+ @if (isLoading() && !isShowingLoader()) {
22434
+ <!-- Subtle refresh indicator -->
22435
+ <div class="animate-spin w-4 h-4 border-2 border-blue-500/30 border-t-blue-500 rounded-full" title="Refreshing data..."></div>
22436
+ }
22437
+ </div>
22261
22438
  <div class="flex flex-wrap items-center justify-between gap-3 sm:gap-4">
22262
22439
  <p [class]="headerSubtitleClass()" class="text-sm sm:text-base">Revenue Orchestration & Funnel Analysis</p>
22263
22440
  <div class="flex items-center gap-4">
@@ -22475,15 +22652,42 @@ class SymphiqFunnelAnalysisDashboardComponent {
22475
22652
  <div class="pt-8 sm:pt-12 pb-16 sm:pb-24">
22476
22653
  @if (showOverallPerformance()) {
22477
22654
  <div id="overall-section" class="animate-fade-in-up mb-20 sm:mb-28" style="animation-delay: 0.1s;">
22478
- <symphiq-funnel-analysis-overall-assessment
22479
- [assessment]="performanceOverview().overallAssessment || {}"
22480
- [revenueMetric]="revenueMetric()"
22481
- [charts]="chartsForItem('OVERALL_ASSESSMENT')"
22482
- [metrics]="allMetrics()"
22483
- [isLightMode]="isLightMode()"
22484
- [isLoading]="isOverallAssessmentLoading()"
22485
- [isCompactMode]="viewModeService.isCompact()"
22486
- [isChartsLoading]="areChartsLoading()" />
22655
+ @if (isDataLoading()) {
22656
+ <!-- Overall Assessment Skeleton -->
22657
+ <div [ngClass]="isLightMode() ? 'bg-white border-slate-200' : 'bg-slate-800 border-slate-700'" class="rounded-xl border p-6 sm:p-8 animate-pulse">
22658
+ <div class="space-y-6">
22659
+ <!-- Header -->
22660
+ <div class="flex items-center gap-3">
22661
+ <symphiq-skeleton-loader [width]="'48px'" [height]="'48px'" [isLightMode]="isLightMode()"></symphiq-skeleton-loader>
22662
+ <div class="flex-1 space-y-2">
22663
+ <symphiq-skeleton-loader [width]="'40%'" [height]="'32px'" [isLightMode]="isLightMode()"></symphiq-skeleton-loader>
22664
+ <symphiq-skeleton-loader [width]="'60%'" [height]="'20px'" [isLightMode]="isLightMode()"></symphiq-skeleton-loader>
22665
+ </div>
22666
+ </div>
22667
+ <!-- Summary text -->
22668
+ <div class="space-y-2">
22669
+ <symphiq-skeleton-loader [width]="'100%'" [height]="'18px'" [isLightMode]="isLightMode()"></symphiq-skeleton-loader>
22670
+ <symphiq-skeleton-loader [width]="'95%'" [height]="'18px'" [isLightMode]="isLightMode()"></symphiq-skeleton-loader>
22671
+ <symphiq-skeleton-loader [width]="'90%'" [height]="'18px'" [isLightMode]="isLightMode()"></symphiq-skeleton-loader>
22672
+ </div>
22673
+ <!-- Chart placeholder -->
22674
+ <div class="grid grid-cols-1 md:grid-cols-2 gap-4 mt-6">
22675
+ <symphiq-skeleton-loader [width]="'100%'" [height]="'200px'" [isLightMode]="isLightMode()"></symphiq-skeleton-loader>
22676
+ <symphiq-skeleton-loader [width]="'100%'" [height]="'200px'" [isLightMode]="isLightMode()"></symphiq-skeleton-loader>
22677
+ </div>
22678
+ </div>
22679
+ </div>
22680
+ } @else {
22681
+ <symphiq-funnel-analysis-overall-assessment
22682
+ [assessment]="performanceOverview().overallAssessment || {}"
22683
+ [revenueMetric]="revenueMetric()"
22684
+ [charts]="chartsForItem('OVERALL_ASSESSMENT')"
22685
+ [metrics]="allMetrics()"
22686
+ [isLightMode]="isLightMode()"
22687
+ [isLoading]="isOverallAssessmentLoading()"
22688
+ [isCompactMode]="viewModeService.isCompact()"
22689
+ [isChartsLoading]="areChartsLoading()" />
22690
+ }
22487
22691
  </div>
22488
22692
  }
22489
22693
 
@@ -22522,7 +22726,32 @@ class SymphiqFunnelAnalysisDashboardComponent {
22522
22726
  <span [class]="metaLabelClass()" class="text-xs sm:text-sm">{{ insights().length }} insights</span>
22523
22727
  </div>
22524
22728
  <!-- Masonry Layout for Insights -->
22525
- @if (viewModeService.isExpanded()) {
22729
+ @if (isDataLoading() || (viewModeService.isExpanded() && viewModeService.getIsTransitioning())) {
22730
+ <!-- Skeleton loaders during data loading or transition to expanded view -->
22731
+ <div class="masonry-grid">
22732
+ @for (i of [1,2,3,4,5,6]; track i) {
22733
+ <div [ngClass]="isLightMode() ? 'bg-white border-slate-200' : 'bg-slate-800 border-slate-700'" class="rounded-xl border p-6 animate-pulse min-h-[280px]">
22734
+ <div class="space-y-4">
22735
+ <div class="flex items-center gap-3 mb-4">
22736
+ <symphiq-skeleton-loader [width]="'48px'" [height]="'48px'" [isLightMode]="isLightMode()"></symphiq-skeleton-loader>
22737
+ <symphiq-skeleton-loader [width]="'60%'" [height]="'28px'" [isLightMode]="isLightMode()"></symphiq-skeleton-loader>
22738
+ </div>
22739
+ <symphiq-skeleton-loader [width]="'100%'" [height]="'18px'" [isLightMode]="isLightMode()"></symphiq-skeleton-loader>
22740
+ <symphiq-skeleton-loader [width]="'95%'" [height]="'18px'" [isLightMode]="isLightMode()"></symphiq-skeleton-loader>
22741
+ <symphiq-skeleton-loader [width]="'85%'" [height]="'18px'" [isLightMode]="isLightMode()"></symphiq-skeleton-loader>
22742
+ <div class="mt-6 space-y-2">
22743
+ <symphiq-skeleton-loader [width]="'40%'" [height]="'14px'" [isLightMode]="isLightMode()"></symphiq-skeleton-loader>
22744
+ <symphiq-skeleton-loader [width]="'50%'" [height]="'36px'" [isLightMode]="isLightMode()"></symphiq-skeleton-loader>
22745
+ </div>
22746
+ <div class="flex gap-2 mt-4">
22747
+ <symphiq-skeleton-loader [width]="'80px'" [height]="'28px'" [isLightMode]="isLightMode()"></symphiq-skeleton-loader>
22748
+ <symphiq-skeleton-loader [width]="'80px'" [height]="'28px'" [isLightMode]="isLightMode()"></symphiq-skeleton-loader>
22749
+ </div>
22750
+ </div>
22751
+ </div>
22752
+ }
22753
+ </div>
22754
+ } @else if (viewModeService.isExpanded()) {
22526
22755
  <div class="masonry-grid">
22527
22756
  @for (insight of insights(); track $index) {
22528
22757
  <div
@@ -22542,7 +22771,7 @@ class SymphiqFunnelAnalysisDashboardComponent {
22542
22771
  </div>
22543
22772
  }
22544
22773
  </div>
22545
- } @else if (!viewModeService.isExpanded()) {
22774
+ } @else {
22546
22775
  <!-- Compact Grid for Insights -->
22547
22776
  <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4">
22548
22777
  @for (insight of insights(); track $index) {
@@ -22560,31 +22789,6 @@ class SymphiqFunnelAnalysisDashboardComponent {
22560
22789
  </div>
22561
22790
  }
22562
22791
  </div>
22563
- } @else {
22564
- <!-- Skeleton loaders during transition to expanded view -->
22565
- <div class="masonry-grid">
22566
- @for (i of [1,2,3,4,5,6]; track i) {
22567
- <div [ngClass]="isLightMode() ? 'bg-white border-slate-200' : 'bg-slate-800 border-slate-700'" class="rounded-xl border p-6 animate-pulse min-h-[280px]">
22568
- <div class="space-y-4">
22569
- <div class="flex items-center gap-3 mb-4">
22570
- <symphiq-skeleton-loader [width]="'48px'" [height]="'48px'" [isLightMode]="isLightMode()"></symphiq-skeleton-loader>
22571
- <symphiq-skeleton-loader [width]="'60%'" [height]="'28px'" [isLightMode]="isLightMode()"></symphiq-skeleton-loader>
22572
- </div>
22573
- <symphiq-skeleton-loader [width]="'100%'" [height]="'18px'" [isLightMode]="isLightMode()"></symphiq-skeleton-loader>
22574
- <symphiq-skeleton-loader [width]="'95%'" [height]="'18px'" [isLightMode]="isLightMode()"></symphiq-skeleton-loader>
22575
- <symphiq-skeleton-loader [width]="'85%'" [height]="'18px'" [isLightMode]="isLightMode()"></symphiq-skeleton-loader>
22576
- <div class="mt-6 space-y-2">
22577
- <symphiq-skeleton-loader [width]="'40%'" [height]="'14px'" [isLightMode]="isLightMode()"></symphiq-skeleton-loader>
22578
- <symphiq-skeleton-loader [width]="'50%'" [height]="'36px'" [isLightMode]="isLightMode()"></symphiq-skeleton-loader>
22579
- </div>
22580
- <div class="flex gap-2 mt-4">
22581
- <symphiq-skeleton-loader [width]="'80px'" [height]="'28px'" [isLightMode]="isLightMode()"></symphiq-skeleton-loader>
22582
- <symphiq-skeleton-loader [width]="'80px'" [height]="'28px'" [isLightMode]="isLightMode()"></symphiq-skeleton-loader>
22583
- </div>
22584
- </div>
22585
- </div>
22586
- }
22587
- </div>
22588
22792
  }
22589
22793
  </div>
22590
22794
  </section>
@@ -22679,8 +22883,32 @@ class SymphiqFunnelAnalysisDashboardComponent {
22679
22883
  </div>
22680
22884
  </div>
22681
22885
  </div>
22682
- <div class="space-y-8 sm:space-y-10" [class.animate-content-change]="isCategoryTransitioning()" [class.transition-opacity-slow]="isCategoryTransitioning()">
22683
- @for (funnelGroup of groupedMetrics(); track $index; let groupIdx = $index) {
22886
+ @if (isDataLoading()) {
22887
+ <!-- Metrics Skeleton -->
22888
+ <div class="space-y-8 sm:space-y-10">
22889
+ @for (i of [1,2,3]; track i) {
22890
+ <div [ngClass]="isLightMode() ? 'bg-white border-slate-200' : 'bg-slate-800 border-slate-700'" class="rounded-xl border p-6 animate-pulse">
22891
+ <div class="flex items-center justify-between mb-4">
22892
+ <div class="flex items-center gap-3">
22893
+ <symphiq-skeleton-loader [width]="'40px'" [height]="'40px'" [isLightMode]="isLightMode()"></symphiq-skeleton-loader>
22894
+ <div class="space-y-2">
22895
+ <symphiq-skeleton-loader [width]="'150px'" [height]="'24px'" [isLightMode]="isLightMode()"></symphiq-skeleton-loader>
22896
+ <symphiq-skeleton-loader [width]="'100px'" [height]="'16px'" [isLightMode]="isLightMode()"></symphiq-skeleton-loader>
22897
+ </div>
22898
+ </div>
22899
+ <symphiq-skeleton-loader [width]="'80px'" [height]="'36px'" [isLightMode]="isLightMode()"></symphiq-skeleton-loader>
22900
+ </div>
22901
+ <div class="grid grid-cols-2 md:grid-cols-4 gap-4 mt-6">
22902
+ @for (j of [1,2,3,4]; track j) {
22903
+ <symphiq-skeleton-loader [width]="'100%'" [height]="'120px'" [isLightMode]="isLightMode()"></symphiq-skeleton-loader>
22904
+ }
22905
+ </div>
22906
+ </div>
22907
+ }
22908
+ </div>
22909
+ } @else {
22910
+ <div class="space-y-8 sm:space-y-10" [class.animate-content-change]="isCategoryTransitioning()" [class.transition-opacity-slow]="isCategoryTransitioning()">
22911
+ @for (funnelGroup of groupedMetrics(); track $index; let groupIdx = $index) {
22684
22912
  <div class="w-full animate-fade-in-up" [style.animation-delay]="(0.5 + groupIdx * 0.15) + 's'"
22685
22913
  [libSymphiqSearchHighlight]="searchService.highlightedResultId()"
22686
22914
  [highlightId]="'metric-' + groupIdx">
@@ -22759,16 +22987,17 @@ class SymphiqFunnelAnalysisDashboardComponent {
22759
22987
  </div>
22760
22988
  }
22761
22989
  }
22762
- } @empty {
22763
- <div [ngClass]="isLightMode() ? 'bg-slate-50 border-slate-200' : 'bg-slate-800/50 border-slate-700'" class="rounded-xl p-12 border text-center animate-fade-in">
22764
- <svg class="w-16 h-16 mx-auto mb-4" [ngClass]="isLightMode() ? 'text-slate-300' : 'text-slate-600'" fill="none" stroke="currentColor" viewBox="0 0 24 24">
22765
- <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>
22766
- </svg>
22767
- <h3 [ngClass]="isLightMode() ? 'text-slate-900' : 'text-white'" class="text-lg font-semibold mb-2">No Metrics Found</h3>
22768
- <p [ngClass]="isLightMode() ? 'text-slate-600' : 'text-slate-400'" class="text-sm">No performance metrics match your current filter selection. Try adjusting your filters to see more results.</p>
22769
- </div>
22770
- }
22771
- </div>
22990
+ } @empty {
22991
+ <div [ngClass]="isLightMode() ? 'bg-slate-50 border-slate-200' : 'bg-slate-800/50 border-slate-700'" class="rounded-xl p-12 border text-center animate-fade-in">
22992
+ <svg class="w-16 h-16 mx-auto mb-4" [ngClass]="isLightMode() ? 'text-slate-300' : 'text-slate-600'" fill="none" stroke="currentColor" viewBox="0 0 24 24">
22993
+ <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>
22994
+ </svg>
22995
+ <h3 [ngClass]="isLightMode() ? 'text-slate-900' : 'text-white'" class="text-lg font-semibold mb-2">No Metrics Found</h3>
22996
+ <p [ngClass]="isLightMode() ? 'text-slate-600' : 'text-slate-400'" class="text-sm">No performance metrics match your current filter selection. Try adjusting your filters to see more results.</p>
22997
+ </div>
22998
+ }
22999
+ </div>
23000
+ }
22772
23001
  </div>
22773
23002
  </section>
22774
23003
  }
@@ -22827,27 +23056,49 @@ class SymphiqFunnelAnalysisDashboardComponent {
22827
23056
  </select>
22828
23057
  </div>
22829
23058
  </div>
22830
- <div class="space-y-6" [class.animate-content-change]="isBreakdownTransitioning()" [class.transition-opacity-slow]="isBreakdownTransitioning()">
22831
- @for (breakdown of breakdowns(); track $index) {
22832
- <div class="animate-fade-in-up" [style.animation-delay]="(0.8 + $index * 0.1) + 's'"
22833
- [libSymphiqSearchHighlight]="searchService.highlightedResultId()"
22834
- [highlightId]="'breakdown-' + $index">
22835
- <symphiq-funnel-analysis-breakdown-section
22836
- [breakdown]="breakdown"
22837
- [charts]="chartsForBreakdown(breakdown)"
22838
- [isLightMode]="isLightMode()"
22839
- [isCompactMode]="viewModeService.isCompact()" />
22840
- </div>
22841
- } @empty {
22842
- <div [ngClass]="isLightMode() ? 'bg-slate-50 border-slate-200' : 'bg-slate-800/50 border-slate-700'" class="rounded-xl p-12 border text-center animate-fade-in">
22843
- <svg class="w-16 h-16 mx-auto mb-4" [ngClass]="isLightMode() ? 'text-slate-300' : 'text-slate-600'" fill="none" stroke="currentColor" viewBox="0 0 24 24">
22844
- <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 5a1 1 0 011-1h14a1 1 0 011 1v2a1 1 0 01-1 1H5a1 1 0 01-1-1V5zM4 13a1 1 0 011-1h6a1 1 0 011 1v6a1 1 0 01-1 1H5a1 1 0 01-1-1v-6zM16 13a1 1 0 011-1h2a1 1 0 011 1v6a1 1 0 01-1 1h-2a1 1 0 01-1-1v-6z"></path>
22845
- </svg>
22846
- <h3 [ngClass]="isLightMode() ? 'text-slate-900' : 'text-white'" class="text-lg font-semibold mb-2">No Breakdowns Found</h3>
22847
- <p [ngClass]="isLightMode() ? 'text-slate-600' : 'text-slate-400'" class="text-sm">No performance breakdowns match your current filter selection. Try adjusting your filters to see more results.</p>
22848
- </div>
22849
- }
22850
- </div>
23059
+ @if (isDataLoading()) {
23060
+ <!-- Breakdowns Skeleton -->
23061
+ <div class="space-y-6">
23062
+ @for (i of [1,2]; track i) {
23063
+ <div [ngClass]="isLightMode() ? 'bg-white border-slate-200' : 'bg-slate-800 border-slate-700'" class="rounded-xl border p-6 animate-pulse">
23064
+ <div class="flex items-center justify-between mb-4">
23065
+ <symphiq-skeleton-loader [width]="'200px'" [height]="'28px'" [isLightMode]="isLightMode()"></symphiq-skeleton-loader>
23066
+ <symphiq-skeleton-loader [width]="'100px'" [height]="'24px'" [isLightMode]="isLightMode()"></symphiq-skeleton-loader>
23067
+ </div>
23068
+ <div class="space-y-3">
23069
+ @for (j of [1,2,3,4]; track j) {
23070
+ <div class="flex items-center justify-between p-3 rounded-lg" [ngClass]="isLightMode() ? 'bg-slate-50' : 'bg-slate-700/50'">
23071
+ <symphiq-skeleton-loader [width]="'150px'" [height]="'18px'" [isLightMode]="isLightMode()"></symphiq-skeleton-loader>
23072
+ <symphiq-skeleton-loader [width]="'80px'" [height]="'18px'" [isLightMode]="isLightMode()"></symphiq-skeleton-loader>
23073
+ </div>
23074
+ }
23075
+ </div>
23076
+ </div>
23077
+ }
23078
+ </div>
23079
+ } @else {
23080
+ <div class="space-y-6" [class.animate-content-change]="isBreakdownTransitioning()" [class.transition-opacity-slow]="isBreakdownTransitioning()">
23081
+ @for (breakdown of breakdowns(); track $index) {
23082
+ <div class="animate-fade-in-up" [style.animation-delay]="(0.8 + $index * 0.1) + 's'"
23083
+ [libSymphiqSearchHighlight]="searchService.highlightedResultId()"
23084
+ [highlightId]="'breakdown-' + $index">
23085
+ <symphiq-funnel-analysis-breakdown-section
23086
+ [breakdown]="breakdown"
23087
+ [charts]="chartsForBreakdown(breakdown)"
23088
+ [isLightMode]="isLightMode()"
23089
+ [isCompactMode]="viewModeService.isCompact()" />
23090
+ </div>
23091
+ } @empty {
23092
+ <div [ngClass]="isLightMode() ? 'bg-slate-50 border-slate-200' : 'bg-slate-800/50 border-slate-700'" class="rounded-xl p-12 border text-center animate-fade-in">
23093
+ <svg class="w-16 h-16 mx-auto mb-4" [ngClass]="isLightMode() ? 'text-slate-300' : 'text-slate-600'" fill="none" stroke="currentColor" viewBox="0 0 24 24">
23094
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 5a1 1 0 011-1h14a1 1 0 011 1v2a1 1 0 01-1 1H5a1 1 0 01-1-1V5zM4 13a1 1 0 011-1h6a1 1 0 011 1v6a1 1 0 01-1 1H5a1 1 0 01-1-1v-6zM16 13a1 1 0 011-1h2a1 1 0 011 1v6a1 1 0 01-1 1h-2a1 1 0 01-1-1v-6z"></path>
23095
+ </svg>
23096
+ <h3 [ngClass]="isLightMode() ? 'text-slate-900' : 'text-white'" class="text-lg font-semibold mb-2">No Breakdowns Found</h3>
23097
+ <p [ngClass]="isLightMode() ? 'text-slate-600' : 'text-slate-400'" class="text-sm">No performance breakdowns match your current filter selection. Try adjusting your filters to see more results.</p>
23098
+ </div>
23099
+ }
23100
+ </div>
23101
+ }
22851
23102
  </div>
22852
23103
  </section>
22853
23104
  }
@@ -22909,11 +23160,25 @@ class SymphiqFunnelAnalysisDashboardComponent {
22909
23160
  </div>
22910
23161
  </div>
22911
23162
 
22912
- <symphiq-competitive-intelligence-view
22913
- [metrics]="competitiveMetrics()"
22914
- [allCharts]="allCharts()"
22915
- [isLightMode]="isLightMode()"
22916
- [isCompactMode]="viewModeService.isCompact()" />
23163
+ @if (isDataLoading()) {
23164
+ <!-- Competitive Intelligence Skeleton -->
23165
+ <div class="space-y-6">
23166
+ <div [ngClass]="isLightMode() ? 'bg-white border-slate-200' : 'bg-slate-800 border-slate-700'" class="rounded-xl border p-6 animate-pulse">
23167
+ <symphiq-skeleton-loader [width]="'60%'" [height]="'24px'" [isLightMode]="isLightMode()"></symphiq-skeleton-loader>
23168
+ <div class="grid grid-cols-1 md:grid-cols-3 gap-4 mt-6">
23169
+ @for (i of [1,2,3]; track i) {
23170
+ <symphiq-skeleton-loader [width]="'100%'" [height]="'140px'" [isLightMode]="isLightMode()"></symphiq-skeleton-loader>
23171
+ }
23172
+ </div>
23173
+ </div>
23174
+ </div>
23175
+ } @else {
23176
+ <symphiq-competitive-intelligence-view
23177
+ [metrics]="competitiveMetrics()"
23178
+ [allCharts]="allCharts()"
23179
+ [isLightMode]="isLightMode()"
23180
+ [isCompactMode]="viewModeService.isCompact()" />
23181
+ }
22917
23182
  </div>
22918
23183
  </section>
22919
23184
  }
@@ -22944,17 +23209,17 @@ class SymphiqFunnelAnalysisDashboardComponent {
22944
23209
 
22945
23210
  </div>
22946
23211
  `, styles: [":host{display:block;min-height:100%}.bg-gradient-radial{background:radial-gradient(circle,var(--tw-gradient-stops))}.bento-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1.5rem;grid-auto-flow:dense}@media (min-width: 768px){.bento-grid{grid-template-columns:repeat(6,1fr)}}.bento-small{grid-column:span 2;grid-row:span 1}.bento-medium{grid-column:span 3;grid-row:span 1}.bento-large{grid-column:span 4;grid-row:span 1}.bento-featured{grid-column:span 6;grid-row:span 1}@media (max-width: 767px){.bento-small,.bento-medium,.bento-large,.bento-featured{grid-column:span 1}}.masonry-grid{column-count:1;column-gap:1.5rem}@media (min-width: 768px){.masonry-grid{column-count:2}}@media (min-width: 1280px){.masonry-grid{column-count:3}}.masonry-grid>div{break-inside:avoid;margin-bottom:1.5rem}.masonry-featured{column-span:all}.scrollbar-hide{-ms-overflow-style:none;scrollbar-width:none}.scrollbar-hide::-webkit-scrollbar{display:none}@media (max-width: 640px){.animate-fade-in-up{animation-duration:.4s}}\n"] }]
22947
- }], () => [{ type: FunnelOrderService }, { type: ViewModeService }, { type: SearchService }], { modalComponent: [{
23212
+ }], () => [{ type: FunnelOrderService }, { type: ViewModeService }, { type: SearchService }, { type: TooltipService }], { modalComponent: [{
22948
23213
  type: ViewChild,
22949
23214
  args: [ModalComponent]
22950
23215
  }], dashboardContainer: [{
22951
23216
  type: ViewChild,
22952
23217
  args: ['dashboardContainer', { static: false }]
22953
- }], requestedByUser: [{ type: i0.Input, args: [{ isSignal: true, alias: "requestedByUser", required: false }] }], viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], funnelAnalysis: [{ type: i0.Input, args: [{ isSignal: true, alias: "funnelAnalysis", required: false }] }], embedded: [{ type: i0.Input, args: [{ isSignal: true, alias: "embedded", required: false }] }], scrollContainerId: [{ type: i0.Input, args: [{ isSignal: true, alias: "scrollContainerId", required: false }] }], onScroll: [{
23218
+ }], requestedByUser: [{ type: i0.Input, args: [{ isSignal: true, alias: "requestedByUser", required: false }] }], viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], funnelAnalysis: [{ type: i0.Input, args: [{ isSignal: true, alias: "funnelAnalysis", required: false }] }], embedded: [{ type: i0.Input, args: [{ isSignal: true, alias: "embedded", required: false }] }], scrollContainerId: [{ type: i0.Input, args: [{ isSignal: true, alias: "scrollContainerId", required: false }] }], isLoading: [{ type: i0.Input, args: [{ isSignal: true, alias: "isLoading", required: false }] }], onScroll: [{
22954
23219
  type: HostListener,
22955
23220
  args: ['window:scroll', ['$event']]
22956
23221
  }] }); })();
22957
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SymphiqFunnelAnalysisDashboardComponent, { className: "SymphiqFunnelAnalysisDashboardComponent", filePath: "lib/components/funnel-analysis-dashboard/symphiq-funnel-analysis-dashboard.component.ts", lineNumber: 915 }); })();
23222
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SymphiqFunnelAnalysisDashboardComponent, { className: "SymphiqFunnelAnalysisDashboardComponent", filePath: "lib/components/funnel-analysis-dashboard/symphiq-funnel-analysis-dashboard.component.ts", lineNumber: 1010 }); })();
22958
23223
 
22959
23224
  /**
22960
23225
  * Shared Theme Color Utilities