@eric-emg/symphiq-components 1.2.41 → 1.2.43

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.
@@ -21632,10 +21632,11 @@ class SymphiqFunnelAnalysisDashboardComponent {
21632
21632
  // Manage overall assessment loading state during view mode transitions
21633
21633
  }
21634
21634
  ngAfterViewInit() {
21635
- console.log('[SCROLL DEBUG] ngAfterViewInit called', {
21635
+ console.log('[DASHBOARD v3] ngAfterViewInit called', {
21636
21636
  embedded: this.embedded(),
21637
21637
  scrollContainerId: this.scrollContainerId(),
21638
- isScrolled: this.isScrolled()
21638
+ isScrolled: this.isScrolled(),
21639
+ viewMode: this.viewMode()
21639
21640
  });
21640
21641
  // Ensure modal has data after view is initialized
21641
21642
  if (this.modalComponent) {
@@ -21648,7 +21649,7 @@ class SymphiqFunnelAnalysisDashboardComponent {
21648
21649
  if (this.scrollContainerId()) {
21649
21650
  const setupScrollContainer = () => {
21650
21651
  const element = document.getElementById(this.scrollContainerId());
21651
- console.log('[SCROLL DEBUG] setupScrollContainer attempt', {
21652
+ console.log('[SCROLL DEBUG v2] setupScrollContainer attempt', {
21652
21653
  scrollContainerId: this.scrollContainerId(),
21653
21654
  elementFound: !!element,
21654
21655
  elementTag: element?.tagName
@@ -21662,7 +21663,7 @@ class SymphiqFunnelAnalysisDashboardComponent {
21662
21663
  // Get the scrollable element from Ionic
21663
21664
  if (typeof ionContent.getScrollElement === 'function') {
21664
21665
  ionContent.getScrollElement().then((scrollElement) => {
21665
- console.log('[SCROLL DEBUG] Ionic scroll element found', {
21666
+ console.log('[SCROLL DEBUG v2] Ionic scroll element found', {
21666
21667
  scrollTop: scrollElement.scrollTop,
21667
21668
  scrollHeight: scrollElement.scrollHeight,
21668
21669
  clientHeight: scrollElement.clientHeight
@@ -21670,15 +21671,68 @@ class SymphiqFunnelAnalysisDashboardComponent {
21670
21671
  // Store reference for use in scrollToSection and tooltips
21671
21672
  this.embeddedScrollContainer = scrollElement;
21672
21673
  this.tooltipService.setScrollContainer(scrollElement);
21673
- // Check initial scroll position and update header state
21674
- const initialScrollTop = scrollElement.scrollTop;
21675
- if (initialScrollTop > 50) {
21676
- console.log('[SCROLL DEBUG] Initial scroll position > 50, collapsing header', { initialScrollTop });
21677
- this.isScrolled.set(true);
21678
- }
21679
- else {
21680
- console.log('[SCROLL DEBUG] Initial scroll position <= 50, expanding header', { initialScrollTop });
21681
- this.isScrolled.set(false);
21674
+ // Helper function to check and update scroll state
21675
+ const checkInitialScroll = () => {
21676
+ const currentScrollTop = scrollElement.scrollTop;
21677
+ const scrollHeight = scrollElement.scrollHeight;
21678
+ const clientHeight = scrollElement.clientHeight;
21679
+ console.log('[SCROLL DEBUG v2] Checking initial scroll position', {
21680
+ scrollTop: currentScrollTop,
21681
+ scrollHeight,
21682
+ clientHeight,
21683
+ shouldCollapse: currentScrollTop > 50
21684
+ });
21685
+ if (currentScrollTop > 50) {
21686
+ console.log('[SCROLL DEBUG v2] Collapsing header due to scroll position', { currentScrollTop });
21687
+ this.isScrolled.set(true);
21688
+ }
21689
+ else {
21690
+ console.log('[SCROLL DEBUG v2] Expanding header due to scroll position', { currentScrollTop });
21691
+ this.isScrolled.set(false);
21692
+ }
21693
+ };
21694
+ // Use ResizeObserver to detect when content has finished rendering
21695
+ // Only check scroll position once content has substantial height
21696
+ const MIN_CONTENT_HEIGHT = 500; // Content should be at least this tall before we check scroll
21697
+ let lastHeight = scrollElement.scrollHeight;
21698
+ let stableCount = 0;
21699
+ const resizeObserver = new ResizeObserver(() => {
21700
+ const currentHeight = scrollElement.scrollHeight;
21701
+ console.log('[SCROLL DEBUG v2] Content height changed', {
21702
+ lastHeight,
21703
+ currentHeight,
21704
+ stableCount,
21705
+ minHeightReached: currentHeight >= MIN_CONTENT_HEIGHT
21706
+ });
21707
+ // Only start checking when we have substantial content
21708
+ if (currentHeight >= MIN_CONTENT_HEIGHT) {
21709
+ if (currentHeight === lastHeight) {
21710
+ stableCount++;
21711
+ // Height has been stable for 2 consecutive observations
21712
+ if (stableCount >= 2) {
21713
+ console.log('[SCROLL DEBUG v2] Content height stabilized, checking scroll position');
21714
+ checkInitialScroll();
21715
+ resizeObserver.disconnect();
21716
+ }
21717
+ }
21718
+ else {
21719
+ stableCount = 0;
21720
+ lastHeight = currentHeight;
21721
+ // Check on each significant height change once we have content
21722
+ checkInitialScroll();
21723
+ }
21724
+ }
21725
+ else {
21726
+ // Reset tracking if height drops below threshold (component being destroyed)
21727
+ stableCount = 0;
21728
+ lastHeight = currentHeight;
21729
+ }
21730
+ });
21731
+ // Observe the scroll element for size changes
21732
+ resizeObserver.observe(scrollElement);
21733
+ // Check immediately if we already have content
21734
+ if (scrollElement.scrollHeight >= MIN_CONTENT_HEIGHT) {
21735
+ checkInitialScroll();
21682
21736
  }
21683
21737
  // Attach scroll listeners
21684
21738
  scrollElement.addEventListener('scroll', () => this.onContainerScroll(scrollElement), { passive: true });
@@ -21701,16 +21755,62 @@ class SymphiqFunnelAnalysisDashboardComponent {
21701
21755
  }
21702
21756
  else {
21703
21757
  // Fallback for older Ionic versions
21704
- console.log('[SCROLL DEBUG] Using fallback for older Ionic', {
21758
+ console.log('[SCROLL DEBUG v2] Using fallback for older Ionic', {
21705
21759
  scrollTop: element.scrollTop
21706
21760
  });
21707
21761
  this.embeddedScrollContainer = element;
21708
21762
  this.tooltipService.setScrollContainer(element);
21709
- // Check initial scroll position
21710
- const initialScrollTop = element.scrollTop;
21711
- if (initialScrollTop > 50) {
21712
- console.log('[SCROLL DEBUG] Initial scroll position > 50, collapsing header', { initialScrollTop });
21713
- this.isScrolled.set(true);
21763
+ // Helper function to check and update scroll state
21764
+ const checkInitialScroll = () => {
21765
+ const currentScrollTop = element.scrollTop;
21766
+ console.log('[SCROLL DEBUG v2] Checking initial scroll position (fallback)', {
21767
+ scrollTop: currentScrollTop,
21768
+ shouldCollapse: currentScrollTop > 50
21769
+ });
21770
+ if (currentScrollTop > 50) {
21771
+ console.log('[SCROLL DEBUG v2] Collapsing header due to scroll position', { currentScrollTop });
21772
+ this.isScrolled.set(true);
21773
+ }
21774
+ else {
21775
+ console.log('[SCROLL DEBUG v2] Expanding header due to scroll position', { currentScrollTop });
21776
+ this.isScrolled.set(false);
21777
+ }
21778
+ };
21779
+ // Use ResizeObserver to detect when content has finished rendering
21780
+ const MIN_CONTENT_HEIGHT = 500;
21781
+ let lastHeight = element.scrollHeight;
21782
+ let stableCount = 0;
21783
+ const resizeObserver = new ResizeObserver(() => {
21784
+ const currentHeight = element.scrollHeight;
21785
+ console.log('[SCROLL DEBUG v2] Content height changed (fallback)', {
21786
+ lastHeight,
21787
+ currentHeight,
21788
+ stableCount,
21789
+ minHeightReached: currentHeight >= MIN_CONTENT_HEIGHT
21790
+ });
21791
+ if (currentHeight >= MIN_CONTENT_HEIGHT) {
21792
+ if (currentHeight === lastHeight) {
21793
+ stableCount++;
21794
+ if (stableCount >= 2) {
21795
+ console.log('[SCROLL DEBUG v2] Content height stabilized (fallback), checking scroll position');
21796
+ checkInitialScroll();
21797
+ resizeObserver.disconnect();
21798
+ }
21799
+ }
21800
+ else {
21801
+ stableCount = 0;
21802
+ lastHeight = currentHeight;
21803
+ checkInitialScroll();
21804
+ }
21805
+ }
21806
+ else {
21807
+ stableCount = 0;
21808
+ lastHeight = currentHeight;
21809
+ }
21810
+ });
21811
+ resizeObserver.observe(element);
21812
+ if (element.scrollHeight >= MIN_CONTENT_HEIGHT) {
21813
+ checkInitialScroll();
21714
21814
  }
21715
21815
  element.addEventListener('scroll', () => this.onContainerScroll(element), { passive: true });
21716
21816
  return true;
@@ -21718,16 +21818,62 @@ class SymphiqFunnelAnalysisDashboardComponent {
21718
21818
  }
21719
21819
  else {
21720
21820
  // Regular HTML element
21721
- console.log('[SCROLL DEBUG] Regular HTML element setup', {
21821
+ console.log('[SCROLL DEBUG v2] Regular HTML element setup', {
21722
21822
  scrollTop: element.scrollTop
21723
21823
  });
21724
21824
  this.embeddedScrollContainer = element;
21725
21825
  this.tooltipService.setScrollContainer(element);
21726
- // Check initial scroll position
21727
- const initialScrollTop = element.scrollTop;
21728
- if (initialScrollTop > 50) {
21729
- console.log('[SCROLL DEBUG] Initial scroll position > 50, collapsing header', { initialScrollTop });
21730
- this.isScrolled.set(true);
21826
+ // Helper function to check and update scroll state
21827
+ const checkInitialScroll = () => {
21828
+ const currentScrollTop = element.scrollTop;
21829
+ console.log('[SCROLL DEBUG v2] Checking initial scroll position (regular)', {
21830
+ scrollTop: currentScrollTop,
21831
+ shouldCollapse: currentScrollTop > 50
21832
+ });
21833
+ if (currentScrollTop > 50) {
21834
+ console.log('[SCROLL DEBUG v2] Collapsing header due to scroll position', { currentScrollTop });
21835
+ this.isScrolled.set(true);
21836
+ }
21837
+ else {
21838
+ console.log('[SCROLL DEBUG v2] Expanding header due to scroll position', { currentScrollTop });
21839
+ this.isScrolled.set(false);
21840
+ }
21841
+ };
21842
+ // Use ResizeObserver to detect when content has finished rendering
21843
+ const MIN_CONTENT_HEIGHT = 500;
21844
+ let lastHeight = element.scrollHeight;
21845
+ let stableCount = 0;
21846
+ const resizeObserver = new ResizeObserver(() => {
21847
+ const currentHeight = element.scrollHeight;
21848
+ console.log('[SCROLL DEBUG v2] Content height changed (regular)', {
21849
+ lastHeight,
21850
+ currentHeight,
21851
+ stableCount,
21852
+ minHeightReached: currentHeight >= MIN_CONTENT_HEIGHT
21853
+ });
21854
+ if (currentHeight >= MIN_CONTENT_HEIGHT) {
21855
+ if (currentHeight === lastHeight) {
21856
+ stableCount++;
21857
+ if (stableCount >= 2) {
21858
+ console.log('[SCROLL DEBUG v2] Content height stabilized (regular), checking scroll position');
21859
+ checkInitialScroll();
21860
+ resizeObserver.disconnect();
21861
+ }
21862
+ }
21863
+ else {
21864
+ stableCount = 0;
21865
+ lastHeight = currentHeight;
21866
+ checkInitialScroll();
21867
+ }
21868
+ }
21869
+ else {
21870
+ stableCount = 0;
21871
+ lastHeight = currentHeight;
21872
+ }
21873
+ });
21874
+ resizeObserver.observe(element);
21875
+ if (element.scrollHeight >= MIN_CONTENT_HEIGHT) {
21876
+ checkInitialScroll();
21731
21877
  }
21732
21878
  element.addEventListener('scroll', () => this.onContainerScroll(element), { passive: true });
21733
21879
  return true;
@@ -22185,7 +22331,7 @@ class SymphiqFunnelAnalysisDashboardComponent {
22185
22331
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.dashboardContainer = _t.first);
22186
22332
  } }, hostBindings: function SymphiqFunnelAnalysisDashboardComponent_HostBindings(rf, ctx) { if (rf & 1) {
22187
22333
  i0.ɵɵlistener("scroll", function SymphiqFunnelAnalysisDashboardComponent_scroll_HostBindingHandler($event) { return ctx.onScroll($event); }, i0.ɵɵresolveWindow);
22188
- } }, inputs: { requestedByUser: [1, "requestedByUser"], viewMode: [1, "viewMode"], funnelAnalysis: [1, "funnelAnalysis"], embedded: [1, "embedded"], scrollContainerId: [1, "scrollContainerId"], isLoading: [1, "isLoading"], useSampleData: [1, "useSampleData"] }, 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) {
22334
+ } }, inputs: { requestedByUser: [1, "requestedByUser"], viewMode: [1, "viewMode"], funnelAnalysis: [1, "funnelAnalysis"], embedded: [1, "embedded"], scrollContainerId: [1, "scrollContainerId"], isLoading: [1, "isLoading"], useSampleData: [1, "useSampleData"] }, decls: 88, vars: 103, consts: [["dashboardContainer", ""], [3, "ngClass"], [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) {
22189
22335
  const _r1 = i0.ɵɵgetCurrentView();
22190
22336
  i0.ɵɵelementStart(0, "div", 1, 0);
22191
22337
  i0.ɵɵelement(2, "div", 2);
@@ -22286,11 +22432,12 @@ class SymphiqFunnelAnalysisDashboardComponent {
22286
22432
  i0.ɵɵlistener("navigate", function SymphiqFunnelAnalysisDashboardComponent_Template_symphiq_mobile_bottom_nav_navigate_87_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.handleMobileNavigation($event)); });
22287
22433
  i0.ɵɵelementEnd()();
22288
22434
  } if (rf & 2) {
22289
- let tmp_21_0;
22290
- let tmp_36_0;
22291
- let tmp_43_0;
22435
+ let tmp_22_0;
22436
+ let tmp_37_0;
22437
+ let tmp_44_0;
22292
22438
  i0.ɵɵstyleProp("display", ctx.embedded() ? "block" : null)("min-height", ctx.embedded() ? "auto" : null);
22293
22439
  i0.ɵɵclassProp("min-h-screen", !ctx.embedded())("relative", !ctx.embedded());
22440
+ i0.ɵɵproperty("ngClass", ctx.isLightMode() ? "bg-slate-50" : "bg-slate-950");
22294
22441
  i0.ɵɵadvance(2);
22295
22442
  i0.ɵɵclassProp("light-mode", ctx.isLightMode());
22296
22443
  i0.ɵɵadvance();
@@ -22315,7 +22462,7 @@ class SymphiqFunnelAnalysisDashboardComponent {
22315
22462
  i0.ɵɵadvance();
22316
22463
  i0.ɵɵclassProp("pointer-events-none", ctx.isScrolled())("pointer-events-auto", !ctx.isScrolled());
22317
22464
  i0.ɵɵadvance(5);
22318
- i0.ɵɵtextInterpolate((tmp_21_0 = ctx.analysisData()) == null ? null : tmp_21_0.title);
22465
+ i0.ɵɵtextInterpolate((tmp_22_0 = ctx.analysisData()) == null ? null : tmp_22_0.title);
22319
22466
  i0.ɵɵadvance();
22320
22467
  i0.ɵɵconditional(ctx.isLoading() && !ctx.isShowingLoader() ? 19 : -1);
22321
22468
  i0.ɵɵadvance(2);
@@ -22344,13 +22491,13 @@ class SymphiqFunnelAnalysisDashboardComponent {
22344
22491
  i0.ɵɵadvance(2);
22345
22492
  i0.ɵɵclassMap(ctx.headerTitleClass());
22346
22493
  i0.ɵɵadvance();
22347
- i0.ɵɵtextInterpolate2("", (tmp_36_0 = ctx.requestedByUser()) == null ? null : tmp_36_0.firstName, " ", (tmp_36_0 = ctx.requestedByUser()) == null ? null : tmp_36_0.lastName);
22494
+ i0.ɵɵtextInterpolate2("", (tmp_37_0 = ctx.requestedByUser()) == null ? null : tmp_37_0.firstName, " ", (tmp_37_0 = ctx.requestedByUser()) == null ? null : tmp_37_0.lastName);
22348
22495
  i0.ɵɵadvance();
22349
22496
  i0.ɵɵclassProp("max-h-0", !ctx.isScrolled())("opacity-0", !ctx.isScrolled())("max-h-20", ctx.isScrolled())("opacity-100", ctx.isScrolled());
22350
22497
  i0.ɵɵadvance();
22351
22498
  i0.ɵɵclassProp("pointer-events-none", !ctx.isScrolled())("pointer-events-auto", ctx.isScrolled());
22352
22499
  i0.ɵɵadvance(4);
22353
- i0.ɵɵtextInterpolate((tmp_43_0 = ctx.analysisData()) == null ? null : tmp_43_0.title);
22500
+ i0.ɵɵtextInterpolate((tmp_44_0 = ctx.analysisData()) == null ? null : tmp_44_0.title);
22354
22501
  i0.ɵɵadvance();
22355
22502
  i0.ɵɵconditional(ctx.revenueMetric() ? 57 : -1);
22356
22503
  i0.ɵɵadvance(2);
@@ -22426,8 +22573,9 @@ class SymphiqFunnelAnalysisDashboardComponent {
22426
22573
  CompetitiveIntelligenceViewComponent,
22427
22574
  SkeletonLoaderComponent,
22428
22575
  ], template: `
22576
+ <!-- v3: Added initial background color to prevent white flash on load -->
22429
22577
  <div
22430
- class="bg-transparent"
22578
+ [ngClass]="isLightMode() ? 'bg-slate-50' : 'bg-slate-950'"
22431
22579
  [class.min-h-screen]="!embedded()"
22432
22580
  [class.relative]="!embedded()"
22433
22581
  [style.display]="embedded() ? 'block' : null"
@@ -23286,7 +23434,7 @@ class SymphiqFunnelAnalysisDashboardComponent {
23286
23434
  type: HostListener,
23287
23435
  args: ['window:scroll', ['$event']]
23288
23436
  }] }); })();
23289
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SymphiqFunnelAnalysisDashboardComponent, { className: "SymphiqFunnelAnalysisDashboardComponent", filePath: "lib/components/funnel-analysis-dashboard/symphiq-funnel-analysis-dashboard.component.ts", lineNumber: 1010 }); })();
23437
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SymphiqFunnelAnalysisDashboardComponent, { className: "SymphiqFunnelAnalysisDashboardComponent", filePath: "lib/components/funnel-analysis-dashboard/symphiq-funnel-analysis-dashboard.component.ts", lineNumber: 1011 }); })();
23290
23438
 
23291
23439
  /**
23292
23440
  * Shared Theme Color Utilities
@@ -23687,12 +23835,14 @@ class SymphiqFunnelAnalysisPreviewComponent {
23687
23835
  this.analysisInput = input(undefined, ...(ngDevMode ? [{ debugName: "analysisInput", alias: 'funnelAnalysis' }] : [{ alias: 'funnelAnalysis' }]));
23688
23836
  this.viewMode = input(ViewModeEnum.LIGHT, ...(ngDevMode ? [{ debugName: "viewMode" }] : []));
23689
23837
  this.useSampleData = input(false, ...(ngDevMode ? [{ debugName: "useSampleData" }] : []));
23838
+ this.scrollContainerId = input(undefined, ...(ngDevMode ? [{ debugName: "scrollContainerId" }] : []));
23690
23839
  // Computed theme
23691
23840
  this.isLightMode = computed(() => this.viewMode() === ViewModeEnum.LIGHT, ...(ngDevMode ? [{ debugName: "isLightMode" }] : []));
23692
23841
  // Outputs
23693
23842
  this.onViewAnalysis = output();
23694
23843
  // Services
23695
23844
  this.tooltipDataService = inject(TooltipDataService);
23845
+ this.tooltipService = inject(TooltipService);
23696
23846
  this.competitiveScoreService = inject(CompetitiveScoreService);
23697
23847
  // Analysis data - use sample data if useSampleData is true, otherwise use provided data
23698
23848
  this.analysisData = computed(() => {
@@ -23902,6 +24052,60 @@ class SymphiqFunnelAnalysisPreviewComponent {
23902
24052
  }, ...(ngDevMode ? [{ debugName: "statusIconClass" }] : []));
23903
24053
  this.insightsCardClass = computed(() => getInsightsCardClasses(this.viewMode()), ...(ngDevMode ? [{ debugName: "insightsCardClass" }] : []));
23904
24054
  this.insightsBadgeClass = computed(() => getInsightsBadgeClasses(this.viewMode()), ...(ngDevMode ? [{ debugName: "insightsBadgeClass" }] : []));
24055
+ // Set up scroll container for tooltips when scrollContainerId changes
24056
+ effect(() => {
24057
+ const containerId = this.scrollContainerId();
24058
+ if (containerId) {
24059
+ const setupTooltipScrollContainer = () => {
24060
+ const element = document.getElementById(containerId);
24061
+ if (!element) {
24062
+ return false;
24063
+ }
24064
+ // Check if this is an Ionic ion-content element
24065
+ if (element.tagName.toLowerCase() === 'ion-content') {
24066
+ const ionContent = element;
24067
+ // Get the scrollable element from Ionic
24068
+ if (typeof ionContent.getScrollElement === 'function') {
24069
+ ionContent.getScrollElement().then((scrollElement) => {
24070
+ this.tooltipService.setScrollContainer(scrollElement);
24071
+ }).catch((error) => {
24072
+ console.error('Error getting Ionic scroll element for tooltips:', error);
24073
+ });
24074
+ return true;
24075
+ }
24076
+ else {
24077
+ // Fallback for older Ionic versions
24078
+ this.tooltipService.setScrollContainer(element);
24079
+ return true;
24080
+ }
24081
+ }
24082
+ else {
24083
+ // Regular HTML element
24084
+ this.tooltipService.setScrollContainer(element);
24085
+ return true;
24086
+ }
24087
+ };
24088
+ // Try to set up immediately
24089
+ if (!setupTooltipScrollContainer()) {
24090
+ // If not found, retry with delays (element might not be in DOM yet)
24091
+ let retries = 0;
24092
+ const maxRetries = 10;
24093
+ const retryInterval = setInterval(() => {
24094
+ retries++;
24095
+ if (setupTooltipScrollContainer() || retries >= maxRetries) {
24096
+ clearInterval(retryInterval);
24097
+ if (retries >= maxRetries) {
24098
+ console.warn(`Tooltip scroll container with id "${containerId}" not found after ${maxRetries} retries.`);
24099
+ }
24100
+ }
24101
+ }, 100);
24102
+ }
24103
+ }
24104
+ else {
24105
+ // No scroll container specified, reset to null (use window)
24106
+ this.tooltipService.setScrollContainer(null);
24107
+ }
24108
+ });
23905
24109
  }
23906
24110
  // Helper methods for metrics
23907
24111
  metricMiniCardClass(metric) {
@@ -24014,7 +24218,7 @@ class SymphiqFunnelAnalysisPreviewComponent {
24014
24218
  this.onViewAnalysis.emit();
24015
24219
  }
24016
24220
  static { this.ɵfac = function SymphiqFunnelAnalysisPreviewComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SymphiqFunnelAnalysisPreviewComponent)(); }; }
24017
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SymphiqFunnelAnalysisPreviewComponent, selectors: [["symphiq-funnel-analysis-preview"]], inputs: { analysisInput: [1, "funnelAnalysis", "analysisInput"], viewMode: [1, "viewMode"], useSampleData: [1, "useSampleData"] }, outputs: { onViewAnalysis: "onViewAnalysis" }, decls: 34, vars: 40, consts: [[1, "w-full", "sm:max-w-md", "rounded-xl", "border", "shadow-lg", "backdrop-blur-lg", "transition-all", "duration-300", "sm:hover:shadow-xl", "sm:hover:scale-[1.01]", "overflow-hidden"], [1, "px-3", "py-2", "sm:px-4", "sm:py-3", "border-b", "flex", "items-center", "justify-between", "gap-2", "sm:gap-3"], [1, "flex-1", "min-w-0"], [1, "text-sm", "font-bold", "truncate"], [1, "text-xs", "truncate", "cursor-help", 3, "libSymphiqTooltip", "tooltipPosition"], [1, "flex", "items-center", "gap-1.5", "sm:gap-2", "flex-shrink-0"], ["tooltipType", "badge", 1, "px-2", "py-1", "rounded", "text-center", "min-w-[44px]", "min-h-[44px]", "flex", "items-center", "justify-center", 3, "libSymphiqTooltip", "tooltipPosition"], [1, "text-lg", "font-bold"], [1, "p-3", "sm:p-4", "space-y-2.5", "sm:space-y-3"], ["tooltipType", "metric", 1, "rounded-lg", "p-2.5", "sm:p-3", "border", "transition-all", "duration-200", "sm:hover:scale-105", "cursor-help", "active:scale-[0.98]", 3, "class", "libSymphiqTooltip", "tooltipPosition"], [1, "grid", "grid-cols-2", "gap-1.5", "sm:gap-2"], ["tooltipType", "metric", 1, "rounded-lg", "p-1.5", "sm:p-2", "border", "transition-all", "duration-200", "sm:hover:scale-105", "active:scale-[0.98]", 3, "class", "libSymphiqTooltip", "tooltipPosition"], [1, "rounded-lg", "p-2.5", "sm:p-3", "border", "transition-all", "duration-200", "sm:hover:scale-105", "active:scale-[0.98]", 3, "class"], [1, "rounded-lg", "p-2.5", "sm:p-3", "border", "transition-all", "duration-200", "sm:hover:scale-105", "active:scale-[0.98]"], [1, "flex", "items-center", "justify-between", "mb-2"], [1, "flex", "items-center", "gap-1.5", "sm:gap-2"], [1, "text-lg"], [1, "text-xs", "sm:text-sm", "font-bold"], ["tooltipType", "competitive", 1, "px-2", "py-0.5", "rounded", "text-xs", "font-bold", 3, "class", "animate-pulse", "libSymphiqTooltip", "tooltipPosition"], ["tooltipType", "narrative", 1, "text-xs", "leading-relaxed", "line-clamp-3", "cursor-help", 3, "libSymphiqTooltip", "tooltipPosition"], [1, "px-3", "py-1.5", "sm:px-4", "sm:py-2", "border-t"], [1, "w-full", "py-2.5", "sm:py-2", "rounded-lg", "font-semibold", "text-xs", "transition-all", "duration-300", "sm:hover:scale-105", "active:scale-[0.98]", "flex", "items-center", "justify-center", "gap-2", "group", "cursor-pointer", "min-h-[44px]", 3, "click"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-3", "h-3", "transition-transform", "duration-300", "group-hover:translate-x-1"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M13 7l5 5m0 0l-5 5m5-5H6"], ["tooltipType", "metric", 1, "rounded-lg", "p-2.5", "sm:p-3", "border", "transition-all", "duration-200", "sm:hover:scale-105", "cursor-help", "active:scale-[0.98]", 3, "libSymphiqTooltip", "tooltipPosition"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-3.5", "h-3.5", "sm:w-4", "sm:h-4"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M12 8c-1.657 0-3 .895-3 2s1.343 2 3 2 3 .895 3 2-1.343 2-3 2m0-8c1.11 0 2.08.402 2.599 1M12 8V7m0 1v8m0 0v1m0-1c-1.11 0-2.08-.402-2.599-1M21 12a9 9 0 11-18 0 9 9 0 0118 0z"], [1, "text-xs", "font-semibold"], ["tooltipType", "status", 1, "px-2", "py-1", "rounded", "text-xs", "font-bold", "flex", "items-center", "gap-1", "relative", "z-10", "min-h-[32px]", 3, "mouseenter", "mouseleave", "libSymphiqTooltip", "tooltipPosition"], [1, "flex", "items-baseline", "justify-between"], [1, "text-lg", "sm:text-xl", "font-bold"], [1, "flex", "items-center", "gap-1"], ["fill", "currentColor", "viewBox", "0 0 20 20", 1, "w-3", "h-3"], ["fill-rule", "evenodd", "d", "M5.293 9.707a1 1 0 010-1.414l4-4a1 1 0 011.414 0l4 4a1 1 0 01-1.414 1.414L11 7.414V15a1 1 0 11-2 0V7.414L6.707 9.707a1 1 0 01-1.414 0z", "clip-rule", "evenodd"], ["tooltipType", "metric", 1, "rounded-lg", "p-1.5", "sm:p-2", "border", "transition-all", "duration-200", "sm:hover:scale-105", "active:scale-[0.98]", 3, "libSymphiqTooltip", "tooltipPosition"], [1, "flex", "items-center", "justify-between", "mb-1"], [1, "text-xs", "font-medium", "truncate", "flex-1"], [1, "w-2", "h-2", "rounded-full", "flex-shrink-0"], [1, "flex", "items-center", "justify-between"], ["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"], ["tooltipType", "insightsList", 1, "px-2", "py-0.5", "rounded", "text-xs", "font-bold", 3, "libSymphiqTooltip", "tooltipPosition"], ["tooltipType", "competitive", 1, "px-2", "py-0.5", "rounded", "text-xs", "font-bold", 3, "libSymphiqTooltip", "tooltipPosition"]], template: function SymphiqFunnelAnalysisPreviewComponent_Template(rf, ctx) { if (rf & 1) {
24221
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SymphiqFunnelAnalysisPreviewComponent, selectors: [["symphiq-funnel-analysis-preview"]], inputs: { analysisInput: [1, "funnelAnalysis", "analysisInput"], viewMode: [1, "viewMode"], useSampleData: [1, "useSampleData"], scrollContainerId: [1, "scrollContainerId"] }, outputs: { onViewAnalysis: "onViewAnalysis" }, decls: 34, vars: 40, consts: [[1, "w-full", "sm:max-w-md", "rounded-xl", "border", "shadow-lg", "backdrop-blur-lg", "transition-all", "duration-300", "sm:hover:shadow-xl", "sm:hover:scale-[1.01]", "overflow-hidden"], [1, "px-3", "py-2", "sm:px-4", "sm:py-3", "border-b", "flex", "items-center", "justify-between", "gap-2", "sm:gap-3"], [1, "flex-1", "min-w-0"], [1, "text-sm", "font-bold", "truncate"], [1, "text-xs", "truncate", "cursor-help", 3, "libSymphiqTooltip", "tooltipPosition"], [1, "flex", "items-center", "gap-1.5", "sm:gap-2", "flex-shrink-0"], ["tooltipType", "badge", 1, "px-2", "py-1", "rounded", "text-center", "min-w-[44px]", "min-h-[44px]", "flex", "items-center", "justify-center", 3, "libSymphiqTooltip", "tooltipPosition"], [1, "text-lg", "font-bold"], [1, "p-3", "sm:p-4", "space-y-2.5", "sm:space-y-3"], ["tooltipType", "metric", 1, "rounded-lg", "p-2.5", "sm:p-3", "border", "transition-all", "duration-200", "sm:hover:scale-105", "cursor-help", "active:scale-[0.98]", 3, "class", "libSymphiqTooltip", "tooltipPosition"], [1, "grid", "grid-cols-2", "gap-1.5", "sm:gap-2"], ["tooltipType", "metric", 1, "rounded-lg", "p-1.5", "sm:p-2", "border", "transition-all", "duration-200", "sm:hover:scale-105", "active:scale-[0.98]", 3, "class", "libSymphiqTooltip", "tooltipPosition"], [1, "rounded-lg", "p-2.5", "sm:p-3", "border", "transition-all", "duration-200", "sm:hover:scale-105", "active:scale-[0.98]", 3, "class"], [1, "rounded-lg", "p-2.5", "sm:p-3", "border", "transition-all", "duration-200", "sm:hover:scale-105", "active:scale-[0.98]"], [1, "flex", "items-center", "justify-between", "mb-2"], [1, "flex", "items-center", "gap-1.5", "sm:gap-2"], [1, "text-lg"], [1, "text-xs", "sm:text-sm", "font-bold"], ["tooltipType", "competitive", 1, "px-2", "py-0.5", "rounded", "text-xs", "font-bold", 3, "class", "animate-pulse", "libSymphiqTooltip", "tooltipPosition"], ["tooltipType", "narrative", 1, "text-xs", "leading-relaxed", "line-clamp-3", "cursor-help", 3, "libSymphiqTooltip", "tooltipPosition"], [1, "px-3", "py-1.5", "sm:px-4", "sm:py-2", "border-t"], [1, "w-full", "py-2.5", "sm:py-2", "rounded-lg", "font-semibold", "text-xs", "transition-all", "duration-300", "sm:hover:scale-105", "active:scale-[0.98]", "flex", "items-center", "justify-center", "gap-2", "group", "cursor-pointer", "min-h-[44px]", 3, "click"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-3", "h-3", "transition-transform", "duration-300", "group-hover:translate-x-1"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M13 7l5 5m0 0l-5 5m5-5H6"], ["tooltipType", "metric", 1, "rounded-lg", "p-2.5", "sm:p-3", "border", "transition-all", "duration-200", "sm:hover:scale-105", "cursor-help", "active:scale-[0.98]", 3, "libSymphiqTooltip", "tooltipPosition"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-3.5", "h-3.5", "sm:w-4", "sm:h-4"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M12 8c-1.657 0-3 .895-3 2s1.343 2 3 2 3 .895 3 2-1.343 2-3 2m0-8c1.11 0 2.08.402 2.599 1M12 8V7m0 1v8m0 0v1m0-1c-1.11 0-2.08-.402-2.599-1M21 12a9 9 0 11-18 0 9 9 0 0118 0z"], [1, "text-xs", "font-semibold"], ["tooltipType", "status", 1, "px-2", "py-1", "rounded", "text-xs", "font-bold", "flex", "items-center", "gap-1", "relative", "z-10", "min-h-[32px]", 3, "mouseenter", "mouseleave", "libSymphiqTooltip", "tooltipPosition"], [1, "flex", "items-baseline", "justify-between"], [1, "text-lg", "sm:text-xl", "font-bold"], [1, "flex", "items-center", "gap-1"], ["fill", "currentColor", "viewBox", "0 0 20 20", 1, "w-3", "h-3"], ["fill-rule", "evenodd", "d", "M5.293 9.707a1 1 0 010-1.414l4-4a1 1 0 011.414 0l4 4a1 1 0 01-1.414 1.414L11 7.414V15a1 1 0 11-2 0V7.414L6.707 9.707a1 1 0 01-1.414 0z", "clip-rule", "evenodd"], ["tooltipType", "metric", 1, "rounded-lg", "p-1.5", "sm:p-2", "border", "transition-all", "duration-200", "sm:hover:scale-105", "active:scale-[0.98]", 3, "libSymphiqTooltip", "tooltipPosition"], [1, "flex", "items-center", "justify-between", "mb-1"], [1, "text-xs", "font-medium", "truncate", "flex-1"], [1, "w-2", "h-2", "rounded-full", "flex-shrink-0"], [1, "flex", "items-center", "justify-between"], ["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"], ["tooltipType", "insightsList", 1, "px-2", "py-0.5", "rounded", "text-xs", "font-bold", 3, "libSymphiqTooltip", "tooltipPosition"], ["tooltipType", "competitive", 1, "px-2", "py-0.5", "rounded", "text-xs", "font-bold", 3, "libSymphiqTooltip", "tooltipPosition"]], template: function SymphiqFunnelAnalysisPreviewComponent_Template(rf, ctx) { if (rf & 1) {
24018
24222
  i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "div", 2)(3, "h3", 3);
24019
24223
  i0.ɵɵtext(4, "Funnel Analysis");
24020
24224
  i0.ɵɵelementEnd();
@@ -24276,8 +24480,8 @@ class SymphiqFunnelAnalysisPreviewComponent {
24276
24480
  <!-- Tooltip Container -->
24277
24481
  <symphiq-tooltip-container />
24278
24482
  `, styles: ["@keyframes statusPulse{0%,to{opacity:1}50%{opacity:.6}}.status-pulse{animation:statusPulse 2s ease-in-out infinite}\n"] }]
24279
- }], null, { analysisInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "funnelAnalysis", required: false }] }], viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], useSampleData: [{ type: i0.Input, args: [{ isSignal: true, alias: "useSampleData", required: false }] }], onViewAnalysis: [{ type: i0.Output, args: ["onViewAnalysis"] }] }); })();
24280
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SymphiqFunnelAnalysisPreviewComponent, { className: "SymphiqFunnelAnalysisPreviewComponent", filePath: "lib/components/funnel-analysis-preview/symphiq-funnel-analysis-preview.component.ts", lineNumber: 214 }); })();
24483
+ }], () => [], { analysisInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "funnelAnalysis", required: false }] }], viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], useSampleData: [{ type: i0.Input, args: [{ isSignal: true, alias: "useSampleData", required: false }] }], scrollContainerId: [{ type: i0.Input, args: [{ isSignal: true, alias: "scrollContainerId", required: false }] }], onViewAnalysis: [{ type: i0.Output, args: ["onViewAnalysis"] }] }); })();
24484
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SymphiqFunnelAnalysisPreviewComponent, { className: "SymphiqFunnelAnalysisPreviewComponent", filePath: "lib/components/funnel-analysis-preview/symphiq-funnel-analysis-preview.component.ts", lineNumber: 216 }); })();
24281
24485
 
24282
24486
  const _c0$3 = ["chartdiv"];
24283
24487
  class LineChartComponent {