@eric-emg/symphiq-components 1.2.42 → 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.
- package/fesm2022/symphiq-components.mjs +90 -54
- package/fesm2022/symphiq-components.mjs.map +1 -1
- package/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/styles.css +3 -3
|
@@ -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('[
|
|
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
|
|
@@ -21675,51 +21676,64 @@ class SymphiqFunnelAnalysisDashboardComponent {
|
|
|
21675
21676
|
const currentScrollTop = scrollElement.scrollTop;
|
|
21676
21677
|
const scrollHeight = scrollElement.scrollHeight;
|
|
21677
21678
|
const clientHeight = scrollElement.clientHeight;
|
|
21678
|
-
console.log('[SCROLL DEBUG] Checking initial scroll position', {
|
|
21679
|
+
console.log('[SCROLL DEBUG v2] Checking initial scroll position', {
|
|
21679
21680
|
scrollTop: currentScrollTop,
|
|
21680
21681
|
scrollHeight,
|
|
21681
21682
|
clientHeight,
|
|
21682
21683
|
shouldCollapse: currentScrollTop > 50
|
|
21683
21684
|
});
|
|
21684
21685
|
if (currentScrollTop > 50) {
|
|
21685
|
-
console.log('[SCROLL DEBUG] Collapsing header due to scroll position', { currentScrollTop });
|
|
21686
|
+
console.log('[SCROLL DEBUG v2] Collapsing header due to scroll position', { currentScrollTop });
|
|
21686
21687
|
this.isScrolled.set(true);
|
|
21687
21688
|
}
|
|
21688
21689
|
else {
|
|
21689
|
-
console.log('[SCROLL DEBUG] Expanding header due to scroll position', { currentScrollTop });
|
|
21690
|
+
console.log('[SCROLL DEBUG v2] Expanding header due to scroll position', { currentScrollTop });
|
|
21690
21691
|
this.isScrolled.set(false);
|
|
21691
21692
|
}
|
|
21692
21693
|
};
|
|
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
|
|
21694
21697
|
let lastHeight = scrollElement.scrollHeight;
|
|
21695
21698
|
let stableCount = 0;
|
|
21696
21699
|
const resizeObserver = new ResizeObserver(() => {
|
|
21697
21700
|
const currentHeight = scrollElement.scrollHeight;
|
|
21698
|
-
console.log('[SCROLL DEBUG] Content height changed', {
|
|
21701
|
+
console.log('[SCROLL DEBUG v2] Content height changed', {
|
|
21699
21702
|
lastHeight,
|
|
21700
21703
|
currentHeight,
|
|
21701
|
-
stableCount
|
|
21704
|
+
stableCount,
|
|
21705
|
+
minHeightReached: currentHeight >= MIN_CONTENT_HEIGHT
|
|
21702
21706
|
});
|
|
21703
|
-
|
|
21704
|
-
|
|
21705
|
-
|
|
21706
|
-
|
|
21707
|
-
|
|
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
|
|
21708
21722
|
checkInitialScroll();
|
|
21709
|
-
resizeObserver.disconnect();
|
|
21710
21723
|
}
|
|
21711
21724
|
}
|
|
21712
21725
|
else {
|
|
21726
|
+
// Reset tracking if height drops below threshold (component being destroyed)
|
|
21713
21727
|
stableCount = 0;
|
|
21714
21728
|
lastHeight = currentHeight;
|
|
21715
|
-
// Check on each significant height change
|
|
21716
|
-
checkInitialScroll();
|
|
21717
21729
|
}
|
|
21718
21730
|
});
|
|
21719
21731
|
// Observe the scroll element for size changes
|
|
21720
21732
|
resizeObserver.observe(scrollElement);
|
|
21721
|
-
//
|
|
21722
|
-
|
|
21733
|
+
// Check immediately if we already have content
|
|
21734
|
+
if (scrollElement.scrollHeight >= MIN_CONTENT_HEIGHT) {
|
|
21735
|
+
checkInitialScroll();
|
|
21736
|
+
}
|
|
21723
21737
|
// Attach scroll listeners
|
|
21724
21738
|
scrollElement.addEventListener('scroll', () => this.onContainerScroll(scrollElement), { passive: true });
|
|
21725
21739
|
ionContent.addEventListener('ionScroll', () => this.onContainerScroll(scrollElement), { passive: true });
|
|
@@ -21741,7 +21755,7 @@ class SymphiqFunnelAnalysisDashboardComponent {
|
|
|
21741
21755
|
}
|
|
21742
21756
|
else {
|
|
21743
21757
|
// Fallback for older Ionic versions
|
|
21744
|
-
console.log('[SCROLL DEBUG] Using fallback for older Ionic', {
|
|
21758
|
+
console.log('[SCROLL DEBUG v2] Using fallback for older Ionic', {
|
|
21745
21759
|
scrollTop: element.scrollTop
|
|
21746
21760
|
});
|
|
21747
21761
|
this.embeddedScrollContainer = element;
|
|
@@ -21749,52 +21763,62 @@ class SymphiqFunnelAnalysisDashboardComponent {
|
|
|
21749
21763
|
// Helper function to check and update scroll state
|
|
21750
21764
|
const checkInitialScroll = () => {
|
|
21751
21765
|
const currentScrollTop = element.scrollTop;
|
|
21752
|
-
console.log('[SCROLL DEBUG] Checking initial scroll position (fallback)', {
|
|
21766
|
+
console.log('[SCROLL DEBUG v2] Checking initial scroll position (fallback)', {
|
|
21753
21767
|
scrollTop: currentScrollTop,
|
|
21754
21768
|
shouldCollapse: currentScrollTop > 50
|
|
21755
21769
|
});
|
|
21756
21770
|
if (currentScrollTop > 50) {
|
|
21757
|
-
console.log('[SCROLL DEBUG] Collapsing header due to scroll position', { currentScrollTop });
|
|
21771
|
+
console.log('[SCROLL DEBUG v2] Collapsing header due to scroll position', { currentScrollTop });
|
|
21758
21772
|
this.isScrolled.set(true);
|
|
21759
21773
|
}
|
|
21760
21774
|
else {
|
|
21761
|
-
console.log('[SCROLL DEBUG] Expanding header due to scroll position', { currentScrollTop });
|
|
21775
|
+
console.log('[SCROLL DEBUG v2] Expanding header due to scroll position', { currentScrollTop });
|
|
21762
21776
|
this.isScrolled.set(false);
|
|
21763
21777
|
}
|
|
21764
21778
|
};
|
|
21765
21779
|
// Use ResizeObserver to detect when content has finished rendering
|
|
21780
|
+
const MIN_CONTENT_HEIGHT = 500;
|
|
21766
21781
|
let lastHeight = element.scrollHeight;
|
|
21767
21782
|
let stableCount = 0;
|
|
21768
21783
|
const resizeObserver = new ResizeObserver(() => {
|
|
21769
21784
|
const currentHeight = element.scrollHeight;
|
|
21770
|
-
console.log('[SCROLL DEBUG] Content height changed (fallback)', {
|
|
21785
|
+
console.log('[SCROLL DEBUG v2] Content height changed (fallback)', {
|
|
21771
21786
|
lastHeight,
|
|
21772
21787
|
currentHeight,
|
|
21773
|
-
stableCount
|
|
21788
|
+
stableCount,
|
|
21789
|
+
minHeightReached: currentHeight >= MIN_CONTENT_HEIGHT
|
|
21774
21790
|
});
|
|
21775
|
-
if (currentHeight
|
|
21776
|
-
|
|
21777
|
-
|
|
21778
|
-
|
|
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;
|
|
21779
21803
|
checkInitialScroll();
|
|
21780
|
-
resizeObserver.disconnect();
|
|
21781
21804
|
}
|
|
21782
21805
|
}
|
|
21783
21806
|
else {
|
|
21784
21807
|
stableCount = 0;
|
|
21785
21808
|
lastHeight = currentHeight;
|
|
21786
|
-
checkInitialScroll();
|
|
21787
21809
|
}
|
|
21788
21810
|
});
|
|
21789
21811
|
resizeObserver.observe(element);
|
|
21790
|
-
|
|
21812
|
+
if (element.scrollHeight >= MIN_CONTENT_HEIGHT) {
|
|
21813
|
+
checkInitialScroll();
|
|
21814
|
+
}
|
|
21791
21815
|
element.addEventListener('scroll', () => this.onContainerScroll(element), { passive: true });
|
|
21792
21816
|
return true;
|
|
21793
21817
|
}
|
|
21794
21818
|
}
|
|
21795
21819
|
else {
|
|
21796
21820
|
// Regular HTML element
|
|
21797
|
-
console.log('[SCROLL DEBUG] Regular HTML element setup', {
|
|
21821
|
+
console.log('[SCROLL DEBUG v2] Regular HTML element setup', {
|
|
21798
21822
|
scrollTop: element.scrollTop
|
|
21799
21823
|
});
|
|
21800
21824
|
this.embeddedScrollContainer = element;
|
|
@@ -21802,45 +21826,55 @@ class SymphiqFunnelAnalysisDashboardComponent {
|
|
|
21802
21826
|
// Helper function to check and update scroll state
|
|
21803
21827
|
const checkInitialScroll = () => {
|
|
21804
21828
|
const currentScrollTop = element.scrollTop;
|
|
21805
|
-
console.log('[SCROLL DEBUG] Checking initial scroll position (regular)', {
|
|
21829
|
+
console.log('[SCROLL DEBUG v2] Checking initial scroll position (regular)', {
|
|
21806
21830
|
scrollTop: currentScrollTop,
|
|
21807
21831
|
shouldCollapse: currentScrollTop > 50
|
|
21808
21832
|
});
|
|
21809
21833
|
if (currentScrollTop > 50) {
|
|
21810
|
-
console.log('[SCROLL DEBUG] Collapsing header due to scroll position', { currentScrollTop });
|
|
21834
|
+
console.log('[SCROLL DEBUG v2] Collapsing header due to scroll position', { currentScrollTop });
|
|
21811
21835
|
this.isScrolled.set(true);
|
|
21812
21836
|
}
|
|
21813
21837
|
else {
|
|
21814
|
-
console.log('[SCROLL DEBUG] Expanding header due to scroll position', { currentScrollTop });
|
|
21838
|
+
console.log('[SCROLL DEBUG v2] Expanding header due to scroll position', { currentScrollTop });
|
|
21815
21839
|
this.isScrolled.set(false);
|
|
21816
21840
|
}
|
|
21817
21841
|
};
|
|
21818
21842
|
// Use ResizeObserver to detect when content has finished rendering
|
|
21843
|
+
const MIN_CONTENT_HEIGHT = 500;
|
|
21819
21844
|
let lastHeight = element.scrollHeight;
|
|
21820
21845
|
let stableCount = 0;
|
|
21821
21846
|
const resizeObserver = new ResizeObserver(() => {
|
|
21822
21847
|
const currentHeight = element.scrollHeight;
|
|
21823
|
-
console.log('[SCROLL DEBUG] Content height changed (regular)', {
|
|
21848
|
+
console.log('[SCROLL DEBUG v2] Content height changed (regular)', {
|
|
21824
21849
|
lastHeight,
|
|
21825
21850
|
currentHeight,
|
|
21826
|
-
stableCount
|
|
21851
|
+
stableCount,
|
|
21852
|
+
minHeightReached: currentHeight >= MIN_CONTENT_HEIGHT
|
|
21827
21853
|
});
|
|
21828
|
-
if (currentHeight
|
|
21829
|
-
|
|
21830
|
-
|
|
21831
|
-
|
|
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;
|
|
21832
21866
|
checkInitialScroll();
|
|
21833
|
-
resizeObserver.disconnect();
|
|
21834
21867
|
}
|
|
21835
21868
|
}
|
|
21836
21869
|
else {
|
|
21837
21870
|
stableCount = 0;
|
|
21838
21871
|
lastHeight = currentHeight;
|
|
21839
|
-
checkInitialScroll();
|
|
21840
21872
|
}
|
|
21841
21873
|
});
|
|
21842
21874
|
resizeObserver.observe(element);
|
|
21843
|
-
|
|
21875
|
+
if (element.scrollHeight >= MIN_CONTENT_HEIGHT) {
|
|
21876
|
+
checkInitialScroll();
|
|
21877
|
+
}
|
|
21844
21878
|
element.addEventListener('scroll', () => this.onContainerScroll(element), { passive: true });
|
|
21845
21879
|
return true;
|
|
21846
21880
|
}
|
|
@@ -22297,7 +22331,7 @@ class SymphiqFunnelAnalysisDashboardComponent {
|
|
|
22297
22331
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.dashboardContainer = _t.first);
|
|
22298
22332
|
} }, hostBindings: function SymphiqFunnelAnalysisDashboardComponent_HostBindings(rf, ctx) { if (rf & 1) {
|
|
22299
22333
|
i0.ɵɵlistener("scroll", function SymphiqFunnelAnalysisDashboardComponent_scroll_HostBindingHandler($event) { return ctx.onScroll($event); }, i0.ɵɵresolveWindow);
|
|
22300
|
-
} }, 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) {
|
|
22301
22335
|
const _r1 = i0.ɵɵgetCurrentView();
|
|
22302
22336
|
i0.ɵɵelementStart(0, "div", 1, 0);
|
|
22303
22337
|
i0.ɵɵelement(2, "div", 2);
|
|
@@ -22398,11 +22432,12 @@ class SymphiqFunnelAnalysisDashboardComponent {
|
|
|
22398
22432
|
i0.ɵɵlistener("navigate", function SymphiqFunnelAnalysisDashboardComponent_Template_symphiq_mobile_bottom_nav_navigate_87_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.handleMobileNavigation($event)); });
|
|
22399
22433
|
i0.ɵɵelementEnd()();
|
|
22400
22434
|
} if (rf & 2) {
|
|
22401
|
-
let
|
|
22402
|
-
let
|
|
22403
|
-
let
|
|
22435
|
+
let tmp_22_0;
|
|
22436
|
+
let tmp_37_0;
|
|
22437
|
+
let tmp_44_0;
|
|
22404
22438
|
i0.ɵɵstyleProp("display", ctx.embedded() ? "block" : null)("min-height", ctx.embedded() ? "auto" : null);
|
|
22405
22439
|
i0.ɵɵclassProp("min-h-screen", !ctx.embedded())("relative", !ctx.embedded());
|
|
22440
|
+
i0.ɵɵproperty("ngClass", ctx.isLightMode() ? "bg-slate-50" : "bg-slate-950");
|
|
22406
22441
|
i0.ɵɵadvance(2);
|
|
22407
22442
|
i0.ɵɵclassProp("light-mode", ctx.isLightMode());
|
|
22408
22443
|
i0.ɵɵadvance();
|
|
@@ -22427,7 +22462,7 @@ class SymphiqFunnelAnalysisDashboardComponent {
|
|
|
22427
22462
|
i0.ɵɵadvance();
|
|
22428
22463
|
i0.ɵɵclassProp("pointer-events-none", ctx.isScrolled())("pointer-events-auto", !ctx.isScrolled());
|
|
22429
22464
|
i0.ɵɵadvance(5);
|
|
22430
|
-
i0.ɵɵtextInterpolate((
|
|
22465
|
+
i0.ɵɵtextInterpolate((tmp_22_0 = ctx.analysisData()) == null ? null : tmp_22_0.title);
|
|
22431
22466
|
i0.ɵɵadvance();
|
|
22432
22467
|
i0.ɵɵconditional(ctx.isLoading() && !ctx.isShowingLoader() ? 19 : -1);
|
|
22433
22468
|
i0.ɵɵadvance(2);
|
|
@@ -22456,13 +22491,13 @@ class SymphiqFunnelAnalysisDashboardComponent {
|
|
|
22456
22491
|
i0.ɵɵadvance(2);
|
|
22457
22492
|
i0.ɵɵclassMap(ctx.headerTitleClass());
|
|
22458
22493
|
i0.ɵɵadvance();
|
|
22459
|
-
i0.ɵɵtextInterpolate2("", (
|
|
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);
|
|
22460
22495
|
i0.ɵɵadvance();
|
|
22461
22496
|
i0.ɵɵclassProp("max-h-0", !ctx.isScrolled())("opacity-0", !ctx.isScrolled())("max-h-20", ctx.isScrolled())("opacity-100", ctx.isScrolled());
|
|
22462
22497
|
i0.ɵɵadvance();
|
|
22463
22498
|
i0.ɵɵclassProp("pointer-events-none", !ctx.isScrolled())("pointer-events-auto", ctx.isScrolled());
|
|
22464
22499
|
i0.ɵɵadvance(4);
|
|
22465
|
-
i0.ɵɵtextInterpolate((
|
|
22500
|
+
i0.ɵɵtextInterpolate((tmp_44_0 = ctx.analysisData()) == null ? null : tmp_44_0.title);
|
|
22466
22501
|
i0.ɵɵadvance();
|
|
22467
22502
|
i0.ɵɵconditional(ctx.revenueMetric() ? 57 : -1);
|
|
22468
22503
|
i0.ɵɵadvance(2);
|
|
@@ -22538,8 +22573,9 @@ class SymphiqFunnelAnalysisDashboardComponent {
|
|
|
22538
22573
|
CompetitiveIntelligenceViewComponent,
|
|
22539
22574
|
SkeletonLoaderComponent,
|
|
22540
22575
|
], template: `
|
|
22576
|
+
<!-- v3: Added initial background color to prevent white flash on load -->
|
|
22541
22577
|
<div
|
|
22542
|
-
|
|
22578
|
+
[ngClass]="isLightMode() ? 'bg-slate-50' : 'bg-slate-950'"
|
|
22543
22579
|
[class.min-h-screen]="!embedded()"
|
|
22544
22580
|
[class.relative]="!embedded()"
|
|
22545
22581
|
[style.display]="embedded() ? 'block' : null"
|
|
@@ -23398,7 +23434,7 @@ class SymphiqFunnelAnalysisDashboardComponent {
|
|
|
23398
23434
|
type: HostListener,
|
|
23399
23435
|
args: ['window:scroll', ['$event']]
|
|
23400
23436
|
}] }); })();
|
|
23401
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SymphiqFunnelAnalysisDashboardComponent, { className: "SymphiqFunnelAnalysisDashboardComponent", filePath: "lib/components/funnel-analysis-dashboard/symphiq-funnel-analysis-dashboard.component.ts", lineNumber:
|
|
23437
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SymphiqFunnelAnalysisDashboardComponent, { className: "SymphiqFunnelAnalysisDashboardComponent", filePath: "lib/components/funnel-analysis-dashboard/symphiq-funnel-analysis-dashboard.component.ts", lineNumber: 1011 }); })();
|
|
23402
23438
|
|
|
23403
23439
|
/**
|
|
23404
23440
|
* Shared Theme Color Utilities
|