@eric-emg/symphiq-components 1.2.89 → 1.2.91
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 +1171 -379
- package/fesm2022/symphiq-components.mjs.map +1 -1
- package/index.d.ts +134 -31
- package/index.d.ts.map +1 -1
- package/package.json +2 -2
- package/styles.css +58 -14
|
@@ -1720,12 +1720,15 @@ class CompetitiveScoreService {
|
|
|
1720
1720
|
}]
|
|
1721
1721
|
}], null, null); })();
|
|
1722
1722
|
|
|
1723
|
-
const _forTrack0$
|
|
1723
|
+
const _forTrack0$8 = ($index, $item) => $item.category;
|
|
1724
1724
|
function CompetitivePositioningSummaryComponent_Conditional_1_For_43_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
1725
|
-
i0.ɵɵelementStart(0, "div",
|
|
1726
|
-
i0.ɵɵelement(1, "div",
|
|
1727
|
-
i0.ɵɵelementStart(2, "span",
|
|
1725
|
+
i0.ɵɵelementStart(0, "div", 13);
|
|
1726
|
+
i0.ɵɵelement(1, "div", 35);
|
|
1727
|
+
i0.ɵɵelementStart(2, "span", 36);
|
|
1728
1728
|
i0.ɵɵtext(3);
|
|
1729
|
+
i0.ɵɵelementEnd();
|
|
1730
|
+
i0.ɵɵelementStart(4, "span", 37);
|
|
1731
|
+
i0.ɵɵtext(5, "Leading");
|
|
1729
1732
|
i0.ɵɵelementEnd()();
|
|
1730
1733
|
} if (rf & 2) {
|
|
1731
1734
|
const category_r3 = i0.ɵɵnextContext().$implicit;
|
|
@@ -1736,12 +1739,17 @@ function CompetitivePositioningSummaryComponent_Conditional_1_For_43_Conditional
|
|
|
1736
1739
|
i0.ɵɵproperty("ngClass", ctx_r1.isLightMode() ? "text-emerald-600" : "text-emerald-400");
|
|
1737
1740
|
i0.ɵɵadvance();
|
|
1738
1741
|
i0.ɵɵtextInterpolate(category_r3.leading);
|
|
1742
|
+
i0.ɵɵadvance();
|
|
1743
|
+
i0.ɵɵproperty("ngClass", ctx_r1.isLightMode() ? "text-emerald-600" : "text-emerald-500");
|
|
1739
1744
|
} }
|
|
1740
1745
|
function CompetitivePositioningSummaryComponent_Conditional_1_For_43_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
1741
|
-
i0.ɵɵelementStart(0, "div",
|
|
1742
|
-
i0.ɵɵelement(1, "div",
|
|
1743
|
-
i0.ɵɵelementStart(2, "span",
|
|
1746
|
+
i0.ɵɵelementStart(0, "div", 13);
|
|
1747
|
+
i0.ɵɵelement(1, "div", 35);
|
|
1748
|
+
i0.ɵɵelementStart(2, "span", 36);
|
|
1744
1749
|
i0.ɵɵtext(3);
|
|
1750
|
+
i0.ɵɵelementEnd();
|
|
1751
|
+
i0.ɵɵelementStart(4, "span", 37);
|
|
1752
|
+
i0.ɵɵtext(5, "Competitive");
|
|
1745
1753
|
i0.ɵɵelementEnd()();
|
|
1746
1754
|
} if (rf & 2) {
|
|
1747
1755
|
const category_r3 = i0.ɵɵnextContext().$implicit;
|
|
@@ -1752,12 +1760,17 @@ function CompetitivePositioningSummaryComponent_Conditional_1_For_43_Conditional
|
|
|
1752
1760
|
i0.ɵɵproperty("ngClass", ctx_r1.isLightMode() ? "text-blue-600" : "text-blue-400");
|
|
1753
1761
|
i0.ɵɵadvance();
|
|
1754
1762
|
i0.ɵɵtextInterpolate(category_r3.competitive);
|
|
1763
|
+
i0.ɵɵadvance();
|
|
1764
|
+
i0.ɵɵproperty("ngClass", ctx_r1.isLightMode() ? "text-blue-600" : "text-blue-500");
|
|
1755
1765
|
} }
|
|
1756
1766
|
function CompetitivePositioningSummaryComponent_Conditional_1_For_43_Conditional_14_Template(rf, ctx) { if (rf & 1) {
|
|
1757
|
-
i0.ɵɵelementStart(0, "div",
|
|
1767
|
+
i0.ɵɵelementStart(0, "div", 34);
|
|
1758
1768
|
i0.ɵɵelement(1, "div", 35);
|
|
1759
1769
|
i0.ɵɵelementStart(2, "span", 36);
|
|
1760
1770
|
i0.ɵɵtext(3);
|
|
1771
|
+
i0.ɵɵelementEnd();
|
|
1772
|
+
i0.ɵɵelementStart(4, "span", 37);
|
|
1773
|
+
i0.ɵɵtext(5, "Lagging");
|
|
1761
1774
|
i0.ɵɵelementEnd()();
|
|
1762
1775
|
} if (rf & 2) {
|
|
1763
1776
|
const category_r3 = i0.ɵɵnextContext().$implicit;
|
|
@@ -1768,28 +1781,30 @@ function CompetitivePositioningSummaryComponent_Conditional_1_For_43_Conditional
|
|
|
1768
1781
|
i0.ɵɵproperty("ngClass", ctx_r1.isLightMode() ? "text-orange-600" : "text-orange-400");
|
|
1769
1782
|
i0.ɵɵadvance();
|
|
1770
1783
|
i0.ɵɵtextInterpolate(category_r3.lagging);
|
|
1784
|
+
i0.ɵɵadvance();
|
|
1785
|
+
i0.ɵɵproperty("ngClass", ctx_r1.isLightMode() ? "text-orange-600" : "text-orange-500");
|
|
1771
1786
|
} }
|
|
1772
1787
|
function CompetitivePositioningSummaryComponent_Conditional_1_For_43_Template(rf, ctx) { if (rf & 1) {
|
|
1773
|
-
i0.ɵɵelementStart(0, "div",
|
|
1774
|
-
i0.ɵɵelement(3, "div",
|
|
1775
|
-
i0.ɵɵelementStart(4, "span",
|
|
1788
|
+
i0.ɵɵelementStart(0, "div", 25)(1, "div", 30)(2, "div", 4);
|
|
1789
|
+
i0.ɵɵelement(3, "div", 31);
|
|
1790
|
+
i0.ɵɵelementStart(4, "span", 32);
|
|
1776
1791
|
i0.ɵɵtext(5);
|
|
1777
1792
|
i0.ɵɵelementEnd()();
|
|
1778
|
-
i0.ɵɵelementStart(6, "div",
|
|
1793
|
+
i0.ɵɵelementStart(6, "div", 13)(7, "span", 33);
|
|
1779
1794
|
i0.ɵɵtext(8);
|
|
1780
1795
|
i0.ɵɵelementEnd();
|
|
1781
|
-
i0.ɵɵelementStart(9, "span",
|
|
1796
|
+
i0.ɵɵelementStart(9, "span", 33);
|
|
1782
1797
|
i0.ɵɵtext(10, "metrics");
|
|
1783
1798
|
i0.ɵɵelementEnd()()();
|
|
1784
1799
|
i0.ɵɵelementStart(11, "div", 4);
|
|
1785
|
-
i0.ɵɵconditionalCreate(12, CompetitivePositioningSummaryComponent_Conditional_1_For_43_Conditional_12_Template,
|
|
1786
|
-
i0.ɵɵconditionalCreate(13, CompetitivePositioningSummaryComponent_Conditional_1_For_43_Conditional_13_Template,
|
|
1787
|
-
i0.ɵɵconditionalCreate(14, CompetitivePositioningSummaryComponent_Conditional_1_For_43_Conditional_14_Template,
|
|
1800
|
+
i0.ɵɵconditionalCreate(12, CompetitivePositioningSummaryComponent_Conditional_1_For_43_Conditional_12_Template, 6, 4, "div", 13);
|
|
1801
|
+
i0.ɵɵconditionalCreate(13, CompetitivePositioningSummaryComponent_Conditional_1_For_43_Conditional_13_Template, 6, 4, "div", 13);
|
|
1802
|
+
i0.ɵɵconditionalCreate(14, CompetitivePositioningSummaryComponent_Conditional_1_For_43_Conditional_14_Template, 6, 4, "div", 34);
|
|
1788
1803
|
i0.ɵɵelementEnd()();
|
|
1789
1804
|
} if (rf & 2) {
|
|
1790
1805
|
const category_r3 = ctx.$implicit;
|
|
1791
1806
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
1792
|
-
i0.ɵɵproperty("ngClass", ctx_r1.isLightMode() ? "bg-slate-50" : "bg-slate-800/50");
|
|
1807
|
+
i0.ɵɵproperty("ngClass", ctx_r1.isLightMode() ? "bg-slate-50 hover:bg-slate-100" : "bg-slate-800/50 hover:bg-slate-800")("libSymphiqTooltip", ctx_r1.getFunnelStageTooltip(category_r3.category))("tooltipPosition", "auto");
|
|
1793
1808
|
i0.ɵɵadvance(3);
|
|
1794
1809
|
i0.ɵɵproperty("innerHTML", category_r3.icon, i0.ɵɵsanitizeHtml);
|
|
1795
1810
|
i0.ɵɵadvance();
|
|
@@ -1826,49 +1841,49 @@ function CompetitivePositioningSummaryComponent_Conditional_1_Template(rf, ctx)
|
|
|
1826
1841
|
i0.ɵɵelementStart(9, "p", 9);
|
|
1827
1842
|
i0.ɵɵtext(10);
|
|
1828
1843
|
i0.ɵɵelementEnd();
|
|
1829
|
-
i0.ɵɵelementStart(11, "div", 10)(12, "div",
|
|
1830
|
-
i0.ɵɵelement(13, "div",
|
|
1831
|
-
i0.ɵɵelementStart(14, "div",
|
|
1844
|
+
i0.ɵɵelementStart(11, "div", 10)(12, "div", 11);
|
|
1845
|
+
i0.ɵɵelement(13, "div", 12);
|
|
1846
|
+
i0.ɵɵelementStart(14, "div", 13)(15, "span", 14);
|
|
1832
1847
|
i0.ɵɵtext(16);
|
|
1833
1848
|
i0.ɵɵelementEnd();
|
|
1834
|
-
i0.ɵɵelementStart(17, "span",
|
|
1849
|
+
i0.ɵɵelementStart(17, "span", 15);
|
|
1835
1850
|
i0.ɵɵtext(18, "Leading");
|
|
1836
1851
|
i0.ɵɵelementEnd()()();
|
|
1837
|
-
i0.ɵɵelementStart(19, "div",
|
|
1838
|
-
i0.ɵɵelement(20, "div",
|
|
1839
|
-
i0.ɵɵelementStart(21, "div",
|
|
1852
|
+
i0.ɵɵelementStart(19, "div", 11);
|
|
1853
|
+
i0.ɵɵelement(20, "div", 12);
|
|
1854
|
+
i0.ɵɵelementStart(21, "div", 13)(22, "span", 14);
|
|
1840
1855
|
i0.ɵɵtext(23);
|
|
1841
1856
|
i0.ɵɵelementEnd();
|
|
1842
|
-
i0.ɵɵelementStart(24, "span",
|
|
1857
|
+
i0.ɵɵelementStart(24, "span", 15);
|
|
1843
1858
|
i0.ɵɵtext(25, "Competitive");
|
|
1844
1859
|
i0.ɵɵelementEnd()()();
|
|
1845
|
-
i0.ɵɵelementStart(26, "div",
|
|
1846
|
-
i0.ɵɵelement(27, "div",
|
|
1847
|
-
i0.ɵɵelementStart(28, "div",
|
|
1860
|
+
i0.ɵɵelementStart(26, "div", 11);
|
|
1861
|
+
i0.ɵɵelement(27, "div", 16);
|
|
1862
|
+
i0.ɵɵelementStart(28, "div", 13)(29, "span", 17);
|
|
1848
1863
|
i0.ɵɵtext(30);
|
|
1849
1864
|
i0.ɵɵelementEnd();
|
|
1850
|
-
i0.ɵɵelementStart(31, "span",
|
|
1865
|
+
i0.ɵɵelementStart(31, "span", 15);
|
|
1851
1866
|
i0.ɵɵtext(32, "Lagging");
|
|
1852
1867
|
i0.ɵɵelementEnd()()()();
|
|
1853
|
-
i0.ɵɵelementStart(33, "div",
|
|
1868
|
+
i0.ɵɵelementStart(33, "div", 18)(34, "button", 19);
|
|
1854
1869
|
i0.ɵɵlistener("click", function CompetitivePositioningSummaryComponent_Conditional_1_Template_button_click_34_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.isExpanded.set(!ctx_r1.isExpanded())); });
|
|
1855
1870
|
i0.ɵɵelementStart(35, "span");
|
|
1856
1871
|
i0.ɵɵtext(36, "By Funnel Stage");
|
|
1857
1872
|
i0.ɵɵelementEnd();
|
|
1858
1873
|
i0.ɵɵnamespaceSVG();
|
|
1859
|
-
i0.ɵɵelementStart(37, "svg",
|
|
1860
|
-
i0.ɵɵelement(38, "path",
|
|
1874
|
+
i0.ɵɵelementStart(37, "svg", 20);
|
|
1875
|
+
i0.ɵɵelement(38, "path", 21);
|
|
1861
1876
|
i0.ɵɵelementEnd()();
|
|
1862
1877
|
i0.ɵɵnamespaceHTML();
|
|
1863
|
-
i0.ɵɵelementStart(39, "div",
|
|
1864
|
-
i0.ɵɵrepeaterCreate(42, CompetitivePositioningSummaryComponent_Conditional_1_For_43_Template, 15,
|
|
1878
|
+
i0.ɵɵelementStart(39, "div", 22)(40, "div", 23)(41, "div", 24);
|
|
1879
|
+
i0.ɵɵrepeaterCreate(42, CompetitivePositioningSummaryComponent_Conditional_1_For_43_Template, 15, 12, "div", 25, _forTrack0$8);
|
|
1865
1880
|
i0.ɵɵelementEnd()()()();
|
|
1866
|
-
i0.ɵɵelementStart(44, "div",
|
|
1881
|
+
i0.ɵɵelementStart(44, "div", 26)(45, "button", 27);
|
|
1867
1882
|
i0.ɵɵlistener("click", function CompetitivePositioningSummaryComponent_Conditional_1_Template_button_click_45_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.scrollToCompetitive.emit()); });
|
|
1868
1883
|
i0.ɵɵtext(46, " View More ");
|
|
1869
1884
|
i0.ɵɵnamespaceSVG();
|
|
1870
|
-
i0.ɵɵelementStart(47, "svg",
|
|
1871
|
-
i0.ɵɵelement(48, "path",
|
|
1885
|
+
i0.ɵɵelementStart(47, "svg", 28);
|
|
1886
|
+
i0.ɵɵelement(48, "path", 29);
|
|
1872
1887
|
i0.ɵɵelementEnd()()()();
|
|
1873
1888
|
} if (rf & 2) {
|
|
1874
1889
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
@@ -1885,7 +1900,9 @@ function CompetitivePositioningSummaryComponent_Conditional_1_Template(rf, ctx)
|
|
|
1885
1900
|
i0.ɵɵproperty("ngClass", ctx_r1.isLightMode() ? "text-slate-600" : "text-slate-400");
|
|
1886
1901
|
i0.ɵɵadvance();
|
|
1887
1902
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.narrativeSummary(), " ");
|
|
1888
|
-
i0.ɵɵadvance(
|
|
1903
|
+
i0.ɵɵadvance(2);
|
|
1904
|
+
i0.ɵɵproperty("libSymphiqTooltip", ctx_r1.leadingTooltip())("tooltipPosition", "bottom");
|
|
1905
|
+
i0.ɵɵadvance();
|
|
1889
1906
|
i0.ɵɵproperty("ngClass", ctx_r1.getScoreDotClass("leading"));
|
|
1890
1907
|
i0.ɵɵadvance(2);
|
|
1891
1908
|
i0.ɵɵproperty("ngClass", ctx_r1.isLightMode() ? "text-emerald-700" : "text-emerald-400");
|
|
@@ -1893,7 +1910,9 @@ function CompetitivePositioningSummaryComponent_Conditional_1_Template(rf, ctx)
|
|
|
1893
1910
|
i0.ɵɵtextInterpolate(ctx_r1.competitiveStats().leading);
|
|
1894
1911
|
i0.ɵɵadvance();
|
|
1895
1912
|
i0.ɵɵproperty("ngClass", ctx_r1.isLightMode() ? "text-emerald-600" : "text-emerald-500");
|
|
1896
|
-
i0.ɵɵadvance(
|
|
1913
|
+
i0.ɵɵadvance(2);
|
|
1914
|
+
i0.ɵɵproperty("libSymphiqTooltip", ctx_r1.competitiveTooltip())("tooltipPosition", "bottom");
|
|
1915
|
+
i0.ɵɵadvance();
|
|
1897
1916
|
i0.ɵɵproperty("ngClass", ctx_r1.getScoreDotClass("competitive"));
|
|
1898
1917
|
i0.ɵɵadvance(2);
|
|
1899
1918
|
i0.ɵɵproperty("ngClass", ctx_r1.isLightMode() ? "text-blue-700" : "text-blue-400");
|
|
@@ -1901,7 +1920,9 @@ function CompetitivePositioningSummaryComponent_Conditional_1_Template(rf, ctx)
|
|
|
1901
1920
|
i0.ɵɵtextInterpolate(ctx_r1.competitiveStats().competitive);
|
|
1902
1921
|
i0.ɵɵadvance();
|
|
1903
1922
|
i0.ɵɵproperty("ngClass", ctx_r1.isLightMode() ? "text-blue-600" : "text-blue-500");
|
|
1904
|
-
i0.ɵɵadvance(
|
|
1923
|
+
i0.ɵɵadvance(2);
|
|
1924
|
+
i0.ɵɵproperty("libSymphiqTooltip", ctx_r1.laggingTooltip())("tooltipPosition", "bottom");
|
|
1925
|
+
i0.ɵɵadvance();
|
|
1905
1926
|
i0.ɵɵproperty("ngClass", ctx_r1.getScoreDotClass("lagging"));
|
|
1906
1927
|
i0.ɵɵadvance(2);
|
|
1907
1928
|
i0.ɵɵproperty("ngClass", ctx_r1.isLightMode() ? "text-orange-700" : "text-orange-400");
|
|
@@ -1923,10 +1944,13 @@ function CompetitivePositioningSummaryComponent_Conditional_1_Template(rf, ctx)
|
|
|
1923
1944
|
i0.ɵɵproperty("ngClass", ctx_r1.isLightMode() ? "text-indigo-600 hover:text-indigo-700 hover:bg-indigo-50" : "text-indigo-400 hover:text-indigo-300 hover:bg-indigo-500/10");
|
|
1924
1945
|
} }
|
|
1925
1946
|
function CompetitivePositioningSummaryComponent_Conditional_2_For_32_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
1926
|
-
i0.ɵɵelementStart(0, "div",
|
|
1927
|
-
i0.ɵɵelement(1, "div",
|
|
1928
|
-
i0.ɵɵelementStart(2, "span",
|
|
1947
|
+
i0.ɵɵelementStart(0, "div", 13);
|
|
1948
|
+
i0.ɵɵelement(1, "div", 56);
|
|
1949
|
+
i0.ɵɵelementStart(2, "span", 36);
|
|
1929
1950
|
i0.ɵɵtext(3);
|
|
1951
|
+
i0.ɵɵelementEnd();
|
|
1952
|
+
i0.ɵɵelementStart(4, "span", 57);
|
|
1953
|
+
i0.ɵɵtext(5, "Leading");
|
|
1930
1954
|
i0.ɵɵelementEnd()();
|
|
1931
1955
|
} if (rf & 2) {
|
|
1932
1956
|
const category_r5 = i0.ɵɵnextContext().$implicit;
|
|
@@ -1937,12 +1961,17 @@ function CompetitivePositioningSummaryComponent_Conditional_2_For_32_Conditional
|
|
|
1937
1961
|
i0.ɵɵproperty("ngClass", ctx_r1.isLightMode() ? "text-emerald-600" : "text-emerald-400");
|
|
1938
1962
|
i0.ɵɵadvance();
|
|
1939
1963
|
i0.ɵɵtextInterpolate(category_r5.leading);
|
|
1964
|
+
i0.ɵɵadvance();
|
|
1965
|
+
i0.ɵɵproperty("ngClass", ctx_r1.isLightMode() ? "text-emerald-600" : "text-emerald-500");
|
|
1940
1966
|
} }
|
|
1941
1967
|
function CompetitivePositioningSummaryComponent_Conditional_2_For_32_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
1942
|
-
i0.ɵɵelementStart(0, "div",
|
|
1943
|
-
i0.ɵɵelement(1, "div",
|
|
1944
|
-
i0.ɵɵelementStart(2, "span",
|
|
1968
|
+
i0.ɵɵelementStart(0, "div", 13);
|
|
1969
|
+
i0.ɵɵelement(1, "div", 56);
|
|
1970
|
+
i0.ɵɵelementStart(2, "span", 36);
|
|
1945
1971
|
i0.ɵɵtext(3);
|
|
1972
|
+
i0.ɵɵelementEnd();
|
|
1973
|
+
i0.ɵɵelementStart(4, "span", 57);
|
|
1974
|
+
i0.ɵɵtext(5, "Competitive");
|
|
1946
1975
|
i0.ɵɵelementEnd()();
|
|
1947
1976
|
} if (rf & 2) {
|
|
1948
1977
|
const category_r5 = i0.ɵɵnextContext().$implicit;
|
|
@@ -1953,12 +1982,17 @@ function CompetitivePositioningSummaryComponent_Conditional_2_For_32_Conditional
|
|
|
1953
1982
|
i0.ɵɵproperty("ngClass", ctx_r1.isLightMode() ? "text-blue-600" : "text-blue-400");
|
|
1954
1983
|
i0.ɵɵadvance();
|
|
1955
1984
|
i0.ɵɵtextInterpolate(category_r5.competitive);
|
|
1985
|
+
i0.ɵɵadvance();
|
|
1986
|
+
i0.ɵɵproperty("ngClass", ctx_r1.isLightMode() ? "text-blue-600" : "text-blue-500");
|
|
1956
1987
|
} }
|
|
1957
1988
|
function CompetitivePositioningSummaryComponent_Conditional_2_For_32_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
1958
|
-
i0.ɵɵelementStart(0, "div",
|
|
1959
|
-
i0.ɵɵelement(1, "div",
|
|
1989
|
+
i0.ɵɵelementStart(0, "div", 34);
|
|
1990
|
+
i0.ɵɵelement(1, "div", 56);
|
|
1960
1991
|
i0.ɵɵelementStart(2, "span", 36);
|
|
1961
1992
|
i0.ɵɵtext(3);
|
|
1993
|
+
i0.ɵɵelementEnd();
|
|
1994
|
+
i0.ɵɵelementStart(4, "span", 57);
|
|
1995
|
+
i0.ɵɵtext(5, "Lagging");
|
|
1962
1996
|
i0.ɵɵelementEnd()();
|
|
1963
1997
|
} if (rf & 2) {
|
|
1964
1998
|
const category_r5 = i0.ɵɵnextContext().$implicit;
|
|
@@ -1969,25 +2003,27 @@ function CompetitivePositioningSummaryComponent_Conditional_2_For_32_Conditional
|
|
|
1969
2003
|
i0.ɵɵproperty("ngClass", ctx_r1.isLightMode() ? "text-orange-600" : "text-orange-400");
|
|
1970
2004
|
i0.ɵɵadvance();
|
|
1971
2005
|
i0.ɵɵtextInterpolate(category_r5.lagging);
|
|
2006
|
+
i0.ɵɵadvance();
|
|
2007
|
+
i0.ɵɵproperty("ngClass", ctx_r1.isLightMode() ? "text-orange-600" : "text-orange-500");
|
|
1972
2008
|
} }
|
|
1973
2009
|
function CompetitivePositioningSummaryComponent_Conditional_2_For_32_Template(rf, ctx) { if (rf & 1) {
|
|
1974
|
-
i0.ɵɵelementStart(0, "div",
|
|
1975
|
-
i0.ɵɵelement(3, "div",
|
|
1976
|
-
i0.ɵɵelementStart(4, "span",
|
|
2010
|
+
i0.ɵɵelementStart(0, "div", 49)(1, "div", 52)(2, "div", 4);
|
|
2011
|
+
i0.ɵɵelement(3, "div", 53);
|
|
2012
|
+
i0.ɵɵelementStart(4, "span", 54);
|
|
1977
2013
|
i0.ɵɵtext(5);
|
|
1978
2014
|
i0.ɵɵelementEnd()();
|
|
1979
|
-
i0.ɵɵelementStart(6, "span",
|
|
2015
|
+
i0.ɵɵelementStart(6, "span", 33);
|
|
1980
2016
|
i0.ɵɵtext(7);
|
|
1981
2017
|
i0.ɵɵelementEnd()();
|
|
1982
|
-
i0.ɵɵelementStart(8, "div",
|
|
1983
|
-
i0.ɵɵconditionalCreate(9, CompetitivePositioningSummaryComponent_Conditional_2_For_32_Conditional_9_Template,
|
|
1984
|
-
i0.ɵɵconditionalCreate(10, CompetitivePositioningSummaryComponent_Conditional_2_For_32_Conditional_10_Template,
|
|
1985
|
-
i0.ɵɵconditionalCreate(11, CompetitivePositioningSummaryComponent_Conditional_2_For_32_Conditional_11_Template,
|
|
2018
|
+
i0.ɵɵelementStart(8, "div", 55);
|
|
2019
|
+
i0.ɵɵconditionalCreate(9, CompetitivePositioningSummaryComponent_Conditional_2_For_32_Conditional_9_Template, 6, 4, "div", 13);
|
|
2020
|
+
i0.ɵɵconditionalCreate(10, CompetitivePositioningSummaryComponent_Conditional_2_For_32_Conditional_10_Template, 6, 4, "div", 13);
|
|
2021
|
+
i0.ɵɵconditionalCreate(11, CompetitivePositioningSummaryComponent_Conditional_2_For_32_Conditional_11_Template, 6, 4, "div", 34);
|
|
1986
2022
|
i0.ɵɵelementEnd()();
|
|
1987
2023
|
} if (rf & 2) {
|
|
1988
2024
|
const category_r5 = ctx.$implicit;
|
|
1989
2025
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
1990
|
-
i0.ɵɵproperty("ngClass", ctx_r1.isLightMode() ? "bg-slate-50 hover:bg-slate-100" : "bg-slate-800/50 hover:bg-slate-800");
|
|
2026
|
+
i0.ɵɵproperty("ngClass", ctx_r1.isLightMode() ? "bg-slate-50 hover:bg-slate-100" : "bg-slate-800/50 hover:bg-slate-800")("libSymphiqTooltip", ctx_r1.getFunnelStageTooltip(category_r5.category))("tooltipPosition", "right");
|
|
1991
2027
|
i0.ɵɵadvance(3);
|
|
1992
2028
|
i0.ɵɵproperty("innerHTML", category_r5.icon, i0.ɵɵsanitizeHtml);
|
|
1993
2029
|
i0.ɵɵadvance();
|
|
@@ -2007,50 +2043,50 @@ function CompetitivePositioningSummaryComponent_Conditional_2_For_32_Template(rf
|
|
|
2007
2043
|
} }
|
|
2008
2044
|
function CompetitivePositioningSummaryComponent_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
2009
2045
|
const _r4 = i0.ɵɵgetCurrentView();
|
|
2010
|
-
i0.ɵɵelementStart(0, "div", 2)(1, "div",
|
|
2046
|
+
i0.ɵɵelementStart(0, "div", 2)(1, "div", 38)(2, "div")(3, "div", 39);
|
|
2011
2047
|
i0.ɵɵnamespaceSVG();
|
|
2012
|
-
i0.ɵɵelementStart(4, "svg",
|
|
2048
|
+
i0.ɵɵelementStart(4, "svg", 40);
|
|
2013
2049
|
i0.ɵɵelement(5, "path", 6);
|
|
2014
2050
|
i0.ɵɵelementEnd();
|
|
2015
2051
|
i0.ɵɵnamespaceHTML();
|
|
2016
|
-
i0.ɵɵelementStart(6, "h3",
|
|
2052
|
+
i0.ɵɵelementStart(6, "h3", 41);
|
|
2017
2053
|
i0.ɵɵtext(7, "Competitive Positioning");
|
|
2018
2054
|
i0.ɵɵelementEnd()()();
|
|
2019
|
-
i0.ɵɵelementStart(8, "div",
|
|
2055
|
+
i0.ɵɵelementStart(8, "div", 42);
|
|
2020
2056
|
i0.ɵɵtext(9);
|
|
2021
2057
|
i0.ɵɵelementEnd()();
|
|
2022
2058
|
i0.ɵɵelementStart(10, "p", 9);
|
|
2023
2059
|
i0.ɵɵtext(11);
|
|
2024
2060
|
i0.ɵɵelementEnd();
|
|
2025
|
-
i0.ɵɵelementStart(12, "div",
|
|
2061
|
+
i0.ɵɵelementStart(12, "div", 43)(13, "div", 44)(14, "div", 45);
|
|
2026
2062
|
i0.ɵɵtext(15);
|
|
2027
2063
|
i0.ɵɵelementEnd();
|
|
2028
|
-
i0.ɵɵelementStart(16, "div",
|
|
2064
|
+
i0.ɵɵelementStart(16, "div", 46);
|
|
2029
2065
|
i0.ɵɵtext(17, "Leading");
|
|
2030
2066
|
i0.ɵɵelementEnd()();
|
|
2031
|
-
i0.ɵɵelementStart(18, "div",
|
|
2067
|
+
i0.ɵɵelementStart(18, "div", 44)(19, "div", 45);
|
|
2032
2068
|
i0.ɵɵtext(20);
|
|
2033
2069
|
i0.ɵɵelementEnd();
|
|
2034
|
-
i0.ɵɵelementStart(21, "div",
|
|
2070
|
+
i0.ɵɵelementStart(21, "div", 46);
|
|
2035
2071
|
i0.ɵɵtext(22, "Competitive");
|
|
2036
2072
|
i0.ɵɵelementEnd()();
|
|
2037
|
-
i0.ɵɵelementStart(23, "div",
|
|
2073
|
+
i0.ɵɵelementStart(23, "div", 44)(24, "div", 45);
|
|
2038
2074
|
i0.ɵɵtext(25);
|
|
2039
2075
|
i0.ɵɵelementEnd();
|
|
2040
|
-
i0.ɵɵelementStart(26, "div",
|
|
2076
|
+
i0.ɵɵelementStart(26, "div", 46);
|
|
2041
2077
|
i0.ɵɵtext(27, "Lagging");
|
|
2042
2078
|
i0.ɵɵelementEnd()()();
|
|
2043
|
-
i0.ɵɵelementStart(28, "div",
|
|
2079
|
+
i0.ɵɵelementStart(28, "div", 47)(29, "h4", 48);
|
|
2044
2080
|
i0.ɵɵtext(30, "By Funnel Stage");
|
|
2045
2081
|
i0.ɵɵelementEnd();
|
|
2046
|
-
i0.ɵɵrepeaterCreate(31, CompetitivePositioningSummaryComponent_Conditional_2_For_32_Template, 12,
|
|
2082
|
+
i0.ɵɵrepeaterCreate(31, CompetitivePositioningSummaryComponent_Conditional_2_For_32_Template, 12, 11, "div", 49, _forTrack0$8);
|
|
2047
2083
|
i0.ɵɵelementEnd();
|
|
2048
|
-
i0.ɵɵelementStart(33, "div",
|
|
2084
|
+
i0.ɵɵelementStart(33, "div", 26)(34, "button", 50);
|
|
2049
2085
|
i0.ɵɵlistener("click", function CompetitivePositioningSummaryComponent_Conditional_2_Template_button_click_34_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.scrollToCompetitive.emit()); });
|
|
2050
2086
|
i0.ɵɵtext(35, " View More ");
|
|
2051
2087
|
i0.ɵɵnamespaceSVG();
|
|
2052
|
-
i0.ɵɵelementStart(36, "svg",
|
|
2053
|
-
i0.ɵɵelement(37, "path",
|
|
2088
|
+
i0.ɵɵelementStart(36, "svg", 51);
|
|
2089
|
+
i0.ɵɵelement(37, "path", 29);
|
|
2054
2090
|
i0.ɵɵelementEnd()()()();
|
|
2055
2091
|
} if (rf & 2) {
|
|
2056
2092
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
@@ -2068,7 +2104,7 @@ function CompetitivePositioningSummaryComponent_Conditional_2_Template(rf, ctx)
|
|
|
2068
2104
|
i0.ɵɵadvance();
|
|
2069
2105
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.narrativeSummary(), " ");
|
|
2070
2106
|
i0.ɵɵadvance(2);
|
|
2071
|
-
i0.ɵɵproperty("ngClass", ctx_r1.isLightMode() ? "bg-emerald-50 border-emerald-200" : "bg-emerald-500/10 border-emerald-500/20");
|
|
2107
|
+
i0.ɵɵproperty("ngClass", ctx_r1.isLightMode() ? "bg-emerald-50 border-emerald-200" : "bg-emerald-500/10 border-emerald-500/20")("libSymphiqTooltip", ctx_r1.leadingTooltip())("tooltipPosition", "bottom");
|
|
2072
2108
|
i0.ɵɵadvance();
|
|
2073
2109
|
i0.ɵɵproperty("ngClass", ctx_r1.isLightMode() ? "text-emerald-700" : "text-emerald-400");
|
|
2074
2110
|
i0.ɵɵadvance();
|
|
@@ -2076,7 +2112,7 @@ function CompetitivePositioningSummaryComponent_Conditional_2_Template(rf, ctx)
|
|
|
2076
2112
|
i0.ɵɵadvance();
|
|
2077
2113
|
i0.ɵɵproperty("ngClass", ctx_r1.isLightMode() ? "text-emerald-600" : "text-emerald-500");
|
|
2078
2114
|
i0.ɵɵadvance(2);
|
|
2079
|
-
i0.ɵɵproperty("ngClass", ctx_r1.isLightMode() ? "bg-blue-50 border-blue-200" : "bg-blue-500/10 border-blue-500/20");
|
|
2115
|
+
i0.ɵɵproperty("ngClass", ctx_r1.isLightMode() ? "bg-blue-50 border-blue-200" : "bg-blue-500/10 border-blue-500/20")("libSymphiqTooltip", ctx_r1.competitiveTooltip())("tooltipPosition", "bottom");
|
|
2080
2116
|
i0.ɵɵadvance();
|
|
2081
2117
|
i0.ɵɵproperty("ngClass", ctx_r1.isLightMode() ? "text-blue-700" : "text-blue-400");
|
|
2082
2118
|
i0.ɵɵadvance();
|
|
@@ -2084,7 +2120,7 @@ function CompetitivePositioningSummaryComponent_Conditional_2_Template(rf, ctx)
|
|
|
2084
2120
|
i0.ɵɵadvance();
|
|
2085
2121
|
i0.ɵɵproperty("ngClass", ctx_r1.isLightMode() ? "text-blue-600" : "text-blue-500");
|
|
2086
2122
|
i0.ɵɵadvance(2);
|
|
2087
|
-
i0.ɵɵproperty("ngClass", ctx_r1.isLightMode() ? "bg-orange-50 border-orange-200" : "bg-orange-500/10 border-orange-500/20");
|
|
2123
|
+
i0.ɵɵproperty("ngClass", ctx_r1.isLightMode() ? "bg-orange-50 border-orange-200" : "bg-orange-500/10 border-orange-500/20")("libSymphiqTooltip", ctx_r1.laggingTooltip())("tooltipPosition", "bottom");
|
|
2088
2124
|
i0.ɵɵadvance();
|
|
2089
2125
|
i0.ɵɵproperty("ngClass", ctx_r1.isLightMode() ? "text-orange-700" : "text-orange-400");
|
|
2090
2126
|
i0.ɵɵadvance();
|
|
@@ -2245,6 +2281,30 @@ class CompetitivePositioningSummaryComponent {
|
|
|
2245
2281
|
keyOpportunities
|
|
2246
2282
|
};
|
|
2247
2283
|
}, ...(ngDevMode ? [{ debugName: "competitiveScoreTooltip" }] : []));
|
|
2284
|
+
this.leadingTooltip = computed(() => {
|
|
2285
|
+
const metrics = this.getMetricsByStatus('LEADING');
|
|
2286
|
+
return {
|
|
2287
|
+
status: 'LEADING',
|
|
2288
|
+
statusDescription: 'Metrics where your performance exceeds industry benchmarks, indicating strong competitive advantage.',
|
|
2289
|
+
metrics: metrics.map(m => this.extractMetricTooltipData(m))
|
|
2290
|
+
};
|
|
2291
|
+
}, ...(ngDevMode ? [{ debugName: "leadingTooltip" }] : []));
|
|
2292
|
+
this.competitiveTooltip = computed(() => {
|
|
2293
|
+
const metrics = this.getMetricsByStatus('COMPETITIVE');
|
|
2294
|
+
return {
|
|
2295
|
+
status: 'COMPETITIVE',
|
|
2296
|
+
statusDescription: 'Metrics where your performance is within the industry benchmark range, showing competitive parity.',
|
|
2297
|
+
metrics: metrics.map(m => this.extractMetricTooltipData(m))
|
|
2298
|
+
};
|
|
2299
|
+
}, ...(ngDevMode ? [{ debugName: "competitiveTooltip" }] : []));
|
|
2300
|
+
this.laggingTooltip = computed(() => {
|
|
2301
|
+
const metrics = this.getMetricsByStatus('LAGGING');
|
|
2302
|
+
return {
|
|
2303
|
+
status: 'LAGGING',
|
|
2304
|
+
statusDescription: 'Metrics where your performance falls below industry benchmarks, representing opportunities for improvement.',
|
|
2305
|
+
metrics: metrics.map(m => this.extractMetricTooltipData(m))
|
|
2306
|
+
};
|
|
2307
|
+
}, ...(ngDevMode ? [{ debugName: "laggingTooltip" }] : []));
|
|
2248
2308
|
}
|
|
2249
2309
|
getHealthScoreBadgeClass() {
|
|
2250
2310
|
const score = this.competitiveStats().healthScore;
|
|
@@ -2278,10 +2338,75 @@ class CompetitivePositioningSummaryComponent {
|
|
|
2278
2338
|
formatCategoryName(category) {
|
|
2279
2339
|
return category.replace(/_/g, ' ').toLowerCase().replace(/\b\w/g, l => l.toUpperCase());
|
|
2280
2340
|
}
|
|
2341
|
+
getMetricsByStatus(status) {
|
|
2342
|
+
return this.metricsWithBenchmarks().filter(m => {
|
|
2343
|
+
const metric = m;
|
|
2344
|
+
return ('competitiveBenchmark' in m) && metric.competitiveBenchmark?.competitiveScore === status;
|
|
2345
|
+
});
|
|
2346
|
+
}
|
|
2347
|
+
getFunnelStageTooltip(funnelStage) {
|
|
2348
|
+
const categoryMetrics = this.funnelOrderService.getMetricsForFunnelStage(this.metricsWithBenchmarks(), funnelStage);
|
|
2349
|
+
// Group metrics by status
|
|
2350
|
+
const leadingMetrics = [];
|
|
2351
|
+
const competitiveMetrics = [];
|
|
2352
|
+
const laggingMetrics = [];
|
|
2353
|
+
categoryMetrics.forEach(m => {
|
|
2354
|
+
const metric = m;
|
|
2355
|
+
const score = ('competitiveBenchmark' in m) ? metric.competitiveBenchmark?.competitiveScore : undefined;
|
|
2356
|
+
if (score === 'LEADING')
|
|
2357
|
+
leadingMetrics.push(metric);
|
|
2358
|
+
else if (score === 'COMPETITIVE')
|
|
2359
|
+
competitiveMetrics.push(metric);
|
|
2360
|
+
else if (score === 'LAGGING')
|
|
2361
|
+
laggingMetrics.push(metric);
|
|
2362
|
+
});
|
|
2363
|
+
return {
|
|
2364
|
+
funnelStage: this.formatCategoryName(funnelStage),
|
|
2365
|
+
totalMetrics: categoryMetrics.length,
|
|
2366
|
+
leading: leadingMetrics.map(m => this.extractMetricTooltipData(m)),
|
|
2367
|
+
competitive: competitiveMetrics.map(m => this.extractMetricTooltipData(m)),
|
|
2368
|
+
lagging: laggingMetrics.map(m => this.extractMetricTooltipData(m))
|
|
2369
|
+
};
|
|
2370
|
+
}
|
|
2371
|
+
extractMetricTooltipData(metric) {
|
|
2372
|
+
// Format metric name from enum or description
|
|
2373
|
+
const metricName = metric.metric
|
|
2374
|
+
? metric.metric.toString().replace(/_/g, ' ').toLowerCase().replace(/\b\w/g, l => l.toUpperCase())
|
|
2375
|
+
: (metric.description || 'Unknown Metric');
|
|
2376
|
+
// Determine unit based on metric type
|
|
2377
|
+
let unit = 'count';
|
|
2378
|
+
if (metric.metric) {
|
|
2379
|
+
const metricStr = metric.metric.toString();
|
|
2380
|
+
if (metricStr.includes('REVENUE') || metricStr.includes('AMOUNT')) {
|
|
2381
|
+
unit = 'currency';
|
|
2382
|
+
}
|
|
2383
|
+
else if (metricStr.includes('RATE') || metricStr.includes('PERCENT')) {
|
|
2384
|
+
unit = 'percentage';
|
|
2385
|
+
}
|
|
2386
|
+
}
|
|
2387
|
+
// Parse benchmark range from metricBenchmark string (e.g., "2.5% - 4.0%")
|
|
2388
|
+
let benchmarkRange = { min: 0, max: 0 };
|
|
2389
|
+
if (metric.competitiveBenchmark?.metricBenchmark) {
|
|
2390
|
+
const benchmarkStr = metric.competitiveBenchmark.metricBenchmark;
|
|
2391
|
+
const rangeMatch = benchmarkStr.match(/([\d.]+)\s*[-–]\s*([\d.]+)/);
|
|
2392
|
+
if (rangeMatch) {
|
|
2393
|
+
benchmarkRange = {
|
|
2394
|
+
min: parseFloat(rangeMatch[1]),
|
|
2395
|
+
max: parseFloat(rangeMatch[2])
|
|
2396
|
+
};
|
|
2397
|
+
}
|
|
2398
|
+
}
|
|
2399
|
+
return {
|
|
2400
|
+
name: metricName,
|
|
2401
|
+
projectedValue: metric.projectedValue || metric.currentValue || 0,
|
|
2402
|
+
benchmarkRange: benchmarkRange,
|
|
2403
|
+
unit: unit
|
|
2404
|
+
};
|
|
2405
|
+
}
|
|
2281
2406
|
static { this.ɵfac = function CompetitivePositioningSummaryComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || CompetitivePositioningSummaryComponent)(); }; }
|
|
2282
|
-
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CompetitivePositioningSummaryComponent, selectors: [["symphiq-competitive-positioning-summary"]], inputs: { metrics: [1, "metrics"], isLightMode: [1, "isLightMode"], isCompactMode: [1, "isCompactMode"] }, outputs: { scrollToCompetitive: "scrollToCompetitive" }, decls: 3, vars: 3, consts: [[1, "rounded-xl", "border", "p-6", "transition-all", "duration-300", "hover:shadow-lg", "hover:scale-[1.02]"], [1, "space-y-4"], [1, "space-y-6"], [1, "flex", "items-center", "justify-between"], [1, "flex", "items-center", "gap-2"], ["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", "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, "text-base", "font-semibold", 3, "ngClass"], ["tooltipType", "competitive", 1, "px-3", "py-1", "rounded-full", "text-sm", "font-bold", "cursor-help", 3, "libSymphiqTooltip", "tooltipPosition"], [1, "text-sm", "leading-relaxed", 3, "ngClass"], [1, "flex", "items-center", "gap-4"], [1, "w-2.5", "h-2.5", "rounded-full", 3, "ngClass"], [1, "flex", "items-center", "gap-1"], [1, "text-xl", "font-bold", 3, "ngClass"], [1, "text-xs", "font-semibold", "uppercase", 3, "ngClass"], [1, "w-2.5", "h-2.5", "rounded-full", "animate-pulse", 3, "ngClass"], [1, "text-xl", "font-bold", "animate-pulse", 3, "ngClass"], [1, "border", "rounded-lg", "p-3", 3, "ngClass"], [1, "w-full", "flex", "items-center", "justify-between", "text-xs", "font-semibold", "uppercase", "tracking-wide", "transition-colors", "cursor-pointer", 3, "click", "ngClass"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-4", "h-4", "transition-transform", "duration-300"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M19 9l-7 7-7-7"], [1, "grid", "transition-[grid-template-rows]", "duration-300", "ease-in-out"], [1, "overflow-hidden"], [1, "space-y-2", "pt-3", "
|
|
2407
|
+
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CompetitivePositioningSummaryComponent, selectors: [["symphiq-competitive-positioning-summary"]], inputs: { metrics: [1, "metrics"], isLightMode: [1, "isLightMode"], isCompactMode: [1, "isCompactMode"] }, outputs: { scrollToCompetitive: "scrollToCompetitive" }, decls: 3, vars: 3, consts: [[1, "rounded-xl", "border", "p-6", "transition-all", "duration-300", "hover:shadow-lg", "hover:scale-[1.02]"], [1, "space-y-4"], [1, "space-y-6"], [1, "flex", "items-center", "justify-between"], [1, "flex", "items-center", "gap-2"], ["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", "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, "text-base", "font-semibold", 3, "ngClass"], ["tooltipType", "competitive", 1, "px-3", "py-1", "rounded-full", "text-sm", "font-bold", "cursor-help", 3, "libSymphiqTooltip", "tooltipPosition"], [1, "text-sm", "leading-relaxed", 3, "ngClass"], [1, "flex", "items-center", "gap-4"], ["tooltipType", "competitiveStatus", 1, "flex", "items-center", "gap-2", "cursor-help", 3, "libSymphiqTooltip", "tooltipPosition"], [1, "w-2.5", "h-2.5", "rounded-full", 3, "ngClass"], [1, "flex", "items-center", "gap-1"], [1, "text-xl", "font-bold", 3, "ngClass"], [1, "text-xs", "font-semibold", "uppercase", 3, "ngClass"], [1, "w-2.5", "h-2.5", "rounded-full", "animate-pulse", 3, "ngClass"], [1, "text-xl", "font-bold", "animate-pulse", 3, "ngClass"], [1, "border", "rounded-lg", "p-3", 3, "ngClass"], [1, "w-full", "flex", "items-center", "justify-between", "text-xs", "font-semibold", "uppercase", "tracking-wide", "transition-colors", "cursor-pointer", 3, "click", "ngClass"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-4", "h-4", "transition-transform", "duration-300"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M19 9l-7 7-7-7"], [1, "grid", "transition-[grid-template-rows]", "duration-300", "ease-in-out"], [1, "overflow-hidden"], [1, "space-y-2", "pt-3"], ["tooltipType", "funnelStageCompetitive", 1, "rounded-lg", "p-2.5", "transition-all", "cursor-help", 3, "ngClass", "libSymphiqTooltip", "tooltipPosition"], [1, "flex", "justify-end"], [1, "flex", "items-center", "gap-1", "px-3", "py-1.5", "rounded-lg", "text-xs", "font-semibold", "transition-all", "cursor-pointer", 3, "click", "ngClass"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-3.5", "h-3.5"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M9 5l7 7-7 7"], [1, "flex", "items-center", "justify-between", "mb-1.5"], [1, "flex-shrink-0", 3, "innerHTML"], [1, "text-xs", "font-medium", 3, "ngClass"], [1, "text-xs", 3, "ngClass"], [1, "flex", "items-center", "gap-1", "animate-pulse"], [1, "w-1.5", "h-1.5", "rounded-full", 3, "ngClass"], [1, "text-xs", "font-semibold", 3, "ngClass"], [1, "text-[10px]", "uppercase", 3, "ngClass"], [1, "flex", "items-start", "justify-between"], [1, "flex", "items-center", "gap-2", "mb-1"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-6", "h-6", 3, "ngClass"], [1, "text-lg", "font-bold", 3, "ngClass"], ["tooltipType", "competitive", 1, "px-4", "py-2", "rounded-full", "text-lg", "font-bold", "cursor-help", 3, "libSymphiqTooltip", "tooltipPosition"], [1, "grid", "grid-cols-3", "gap-4"], ["tooltipType", "competitiveStatus", 1, "border", "rounded-lg", "p-4", "text-center", "transition-all", "hover:scale-105", "cursor-help", 3, "ngClass", "libSymphiqTooltip", "tooltipPosition"], [1, "text-3xl", "font-bold", "mb-1", 3, "ngClass"], [1, "text-xs", "font-semibold", "uppercase", "tracking-wide", 3, "ngClass"], [1, "space-y-2"], [1, "text-xs", "font-semibold", "uppercase", "tracking-wide", "mb-3", 3, "ngClass"], ["tooltipType", "funnelStageCompetitive", 1, "rounded-lg", "p-3", "transition-all", "cursor-help", 3, "ngClass", "libSymphiqTooltip", "tooltipPosition"], [1, "flex", "items-center", "gap-1", "px-3", "py-1.5", "rounded-lg", "text-sm", "font-semibold", "transition-all", "cursor-pointer", 3, "click", "ngClass"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-4", "h-4"], [1, "flex", "items-center", "justify-between", "mb-2"], [3, "innerHTML"], [1, "text-sm", "font-medium", 3, "ngClass"], [1, "flex", "items-center", "gap-3"], [1, "w-2", "h-2", "rounded-full", 3, "ngClass"], [1, "text-xs", "uppercase", 3, "ngClass"]], template: function CompetitivePositioningSummaryComponent_Template(rf, ctx) { if (rf & 1) {
|
|
2283
2408
|
i0.ɵɵelementStart(0, "div", 0);
|
|
2284
|
-
i0.ɵɵconditionalCreate(1, CompetitivePositioningSummaryComponent_Conditional_1_Template, 49,
|
|
2409
|
+
i0.ɵɵconditionalCreate(1, CompetitivePositioningSummaryComponent_Conditional_1_Template, 49, 34, "div", 1)(2, CompetitivePositioningSummaryComponent_Conditional_2_Template, 38, 29, "div", 2);
|
|
2285
2410
|
i0.ɵɵelementEnd();
|
|
2286
2411
|
} if (rf & 2) {
|
|
2287
2412
|
i0.ɵɵclassMap(ctx.containerClass());
|
|
@@ -2326,21 +2451,33 @@ class CompetitivePositioningSummaryComponent {
|
|
|
2326
2451
|
|
|
2327
2452
|
<!-- Distribution Overview -->
|
|
2328
2453
|
<div class="flex items-center gap-4">
|
|
2329
|
-
<div
|
|
2454
|
+
<div
|
|
2455
|
+
class="flex items-center gap-2 cursor-help"
|
|
2456
|
+
[libSymphiqTooltip]="leadingTooltip()"
|
|
2457
|
+
tooltipType="competitiveStatus"
|
|
2458
|
+
[tooltipPosition]="'bottom'">
|
|
2330
2459
|
<div [ngClass]="getScoreDotClass('leading')" class="w-2.5 h-2.5 rounded-full"></div>
|
|
2331
2460
|
<div class="flex items-center gap-1">
|
|
2332
2461
|
<span [ngClass]="isLightMode() ? 'text-emerald-700' : 'text-emerald-400'" class="text-xl font-bold">{{ competitiveStats().leading }}</span>
|
|
2333
2462
|
<span [ngClass]="isLightMode() ? 'text-emerald-600' : 'text-emerald-500'" class="text-xs font-semibold uppercase">Leading</span>
|
|
2334
2463
|
</div>
|
|
2335
2464
|
</div>
|
|
2336
|
-
<div
|
|
2465
|
+
<div
|
|
2466
|
+
class="flex items-center gap-2 cursor-help"
|
|
2467
|
+
[libSymphiqTooltip]="competitiveTooltip()"
|
|
2468
|
+
tooltipType="competitiveStatus"
|
|
2469
|
+
[tooltipPosition]="'bottom'">
|
|
2337
2470
|
<div [ngClass]="getScoreDotClass('competitive')" class="w-2.5 h-2.5 rounded-full"></div>
|
|
2338
2471
|
<div class="flex items-center gap-1">
|
|
2339
2472
|
<span [ngClass]="isLightMode() ? 'text-blue-700' : 'text-blue-400'" class="text-xl font-bold">{{ competitiveStats().competitive }}</span>
|
|
2340
2473
|
<span [ngClass]="isLightMode() ? 'text-blue-600' : 'text-blue-500'" class="text-xs font-semibold uppercase">Competitive</span>
|
|
2341
2474
|
</div>
|
|
2342
2475
|
</div>
|
|
2343
|
-
<div
|
|
2476
|
+
<div
|
|
2477
|
+
class="flex items-center gap-2 cursor-help"
|
|
2478
|
+
[libSymphiqTooltip]="laggingTooltip()"
|
|
2479
|
+
tooltipType="competitiveStatus"
|
|
2480
|
+
[tooltipPosition]="'bottom'">
|
|
2344
2481
|
<div [ngClass]="getScoreDotClass('lagging')" class="w-2.5 h-2.5 rounded-full animate-pulse"></div>
|
|
2345
2482
|
<div class="flex items-center gap-1">
|
|
2346
2483
|
<span [ngClass]="isLightMode() ? 'text-orange-700' : 'text-orange-400'" class="text-xl font-bold animate-pulse">{{ competitiveStats().lagging }}</span>
|
|
@@ -2363,9 +2500,14 @@ class CompetitivePositioningSummaryComponent {
|
|
|
2363
2500
|
|
|
2364
2501
|
<div class="grid transition-[grid-template-rows] duration-300 ease-in-out" [style.grid-template-rows]="isExpanded() ? '1fr' : '0fr'">
|
|
2365
2502
|
<div class="overflow-hidden">
|
|
2366
|
-
<div class="space-y-2 pt-3
|
|
2503
|
+
<div class="space-y-2 pt-3">
|
|
2367
2504
|
@for (category of categoryStats(); track category.category) {
|
|
2368
|
-
<div
|
|
2505
|
+
<div
|
|
2506
|
+
[ngClass]="isLightMode() ? 'bg-slate-50 hover:bg-slate-100' : 'bg-slate-800/50 hover:bg-slate-800'"
|
|
2507
|
+
class="rounded-lg p-2.5 transition-all cursor-help"
|
|
2508
|
+
[libSymphiqTooltip]="getFunnelStageTooltip(category.category)"
|
|
2509
|
+
tooltipType="funnelStageCompetitive"
|
|
2510
|
+
[tooltipPosition]="'auto'">
|
|
2369
2511
|
<div class="flex items-center justify-between mb-1.5">
|
|
2370
2512
|
<div class="flex items-center gap-2">
|
|
2371
2513
|
<div [innerHTML]="category.icon" class="flex-shrink-0"></div>
|
|
@@ -2381,18 +2523,21 @@ class CompetitivePositioningSummaryComponent {
|
|
|
2381
2523
|
<div class="flex items-center gap-1">
|
|
2382
2524
|
<div [ngClass]="getScoreDotClass('leading')" class="w-1.5 h-1.5 rounded-full"></div>
|
|
2383
2525
|
<span [ngClass]="isLightMode() ? 'text-emerald-600' : 'text-emerald-400'" class="text-xs font-semibold">{{ category.leading }}</span>
|
|
2526
|
+
<span [ngClass]="isLightMode() ? 'text-emerald-600' : 'text-emerald-500'" class="text-[10px] uppercase">Leading</span>
|
|
2384
2527
|
</div>
|
|
2385
2528
|
}
|
|
2386
2529
|
@if (category.competitive > 0) {
|
|
2387
2530
|
<div class="flex items-center gap-1">
|
|
2388
2531
|
<div [ngClass]="getScoreDotClass('competitive')" class="w-1.5 h-1.5 rounded-full"></div>
|
|
2389
2532
|
<span [ngClass]="isLightMode() ? 'text-blue-600' : 'text-blue-400'" class="text-xs font-semibold">{{ category.competitive }}</span>
|
|
2533
|
+
<span [ngClass]="isLightMode() ? 'text-blue-600' : 'text-blue-500'" class="text-[10px] uppercase">Competitive</span>
|
|
2390
2534
|
</div>
|
|
2391
2535
|
}
|
|
2392
2536
|
@if (category.lagging > 0) {
|
|
2393
|
-
<div class="flex items-center gap-1">
|
|
2394
|
-
<div [ngClass]="getScoreDotClass('lagging')" class="w-1.5 h-1.5 rounded-full
|
|
2395
|
-
<span [ngClass]="isLightMode() ? 'text-orange-600' : 'text-orange-400'" class="text-xs font-semibold
|
|
2537
|
+
<div class="flex items-center gap-1 animate-pulse">
|
|
2538
|
+
<div [ngClass]="getScoreDotClass('lagging')" class="w-1.5 h-1.5 rounded-full"></div>
|
|
2539
|
+
<span [ngClass]="isLightMode() ? 'text-orange-600' : 'text-orange-400'" class="text-xs font-semibold">{{ category.lagging }}</span>
|
|
2540
|
+
<span [ngClass]="isLightMode() ? 'text-orange-600' : 'text-orange-500'" class="text-[10px] uppercase">Lagging</span>
|
|
2396
2541
|
</div>
|
|
2397
2542
|
}
|
|
2398
2543
|
</div>
|
|
@@ -2445,15 +2590,30 @@ class CompetitivePositioningSummaryComponent {
|
|
|
2445
2590
|
|
|
2446
2591
|
<!-- Distribution Overview -->
|
|
2447
2592
|
<div class="grid grid-cols-3 gap-4">
|
|
2448
|
-
<div
|
|
2593
|
+
<div
|
|
2594
|
+
[ngClass]="isLightMode() ? 'bg-emerald-50 border-emerald-200' : 'bg-emerald-500/10 border-emerald-500/20'"
|
|
2595
|
+
class="border rounded-lg p-4 text-center transition-all hover:scale-105 cursor-help"
|
|
2596
|
+
[libSymphiqTooltip]="leadingTooltip()"
|
|
2597
|
+
tooltipType="competitiveStatus"
|
|
2598
|
+
[tooltipPosition]="'bottom'">
|
|
2449
2599
|
<div [ngClass]="isLightMode() ? 'text-emerald-700' : 'text-emerald-400'" class="text-3xl font-bold mb-1">{{ competitiveStats().leading }}</div>
|
|
2450
2600
|
<div [ngClass]="isLightMode() ? 'text-emerald-600' : 'text-emerald-500'" class="text-xs font-semibold uppercase tracking-wide">Leading</div>
|
|
2451
2601
|
</div>
|
|
2452
|
-
<div
|
|
2602
|
+
<div
|
|
2603
|
+
[ngClass]="isLightMode() ? 'bg-blue-50 border-blue-200' : 'bg-blue-500/10 border-blue-500/20'"
|
|
2604
|
+
class="border rounded-lg p-4 text-center transition-all hover:scale-105 cursor-help"
|
|
2605
|
+
[libSymphiqTooltip]="competitiveTooltip()"
|
|
2606
|
+
tooltipType="competitiveStatus"
|
|
2607
|
+
[tooltipPosition]="'bottom'">
|
|
2453
2608
|
<div [ngClass]="isLightMode() ? 'text-blue-700' : 'text-blue-400'" class="text-3xl font-bold mb-1">{{ competitiveStats().competitive }}</div>
|
|
2454
2609
|
<div [ngClass]="isLightMode() ? 'text-blue-600' : 'text-blue-500'" class="text-xs font-semibold uppercase tracking-wide">Competitive</div>
|
|
2455
2610
|
</div>
|
|
2456
|
-
<div
|
|
2611
|
+
<div
|
|
2612
|
+
[ngClass]="isLightMode() ? 'bg-orange-50 border-orange-200' : 'bg-orange-500/10 border-orange-500/20'"
|
|
2613
|
+
class="border rounded-lg p-4 text-center transition-all hover:scale-105 cursor-help"
|
|
2614
|
+
[libSymphiqTooltip]="laggingTooltip()"
|
|
2615
|
+
tooltipType="competitiveStatus"
|
|
2616
|
+
[tooltipPosition]="'bottom'">
|
|
2457
2617
|
<div [ngClass]="isLightMode() ? 'text-orange-700' : 'text-orange-400'" class="text-3xl font-bold mb-1">{{ competitiveStats().lagging }}</div>
|
|
2458
2618
|
<div [ngClass]="isLightMode() ? 'text-orange-600' : 'text-orange-500'" class="text-xs font-semibold uppercase tracking-wide">Lagging</div>
|
|
2459
2619
|
</div>
|
|
@@ -2463,7 +2623,12 @@ class CompetitivePositioningSummaryComponent {
|
|
|
2463
2623
|
<div class="space-y-2">
|
|
2464
2624
|
<h4 [ngClass]="isLightMode() ? 'text-slate-700' : 'text-slate-300'" class="text-xs font-semibold uppercase tracking-wide mb-3">By Funnel Stage</h4>
|
|
2465
2625
|
@for (category of categoryStats(); track category.category) {
|
|
2466
|
-
<div
|
|
2626
|
+
<div
|
|
2627
|
+
[ngClass]="isLightMode() ? 'bg-slate-50 hover:bg-slate-100' : 'bg-slate-800/50 hover:bg-slate-800'"
|
|
2628
|
+
class="rounded-lg p-3 transition-all cursor-help"
|
|
2629
|
+
[libSymphiqTooltip]="getFunnelStageTooltip(category.category)"
|
|
2630
|
+
tooltipType="funnelStageCompetitive"
|
|
2631
|
+
[tooltipPosition]="'right'">
|
|
2467
2632
|
<div class="flex items-center justify-between mb-2">
|
|
2468
2633
|
<div class="flex items-center gap-2">
|
|
2469
2634
|
<div [innerHTML]="category.icon"></div>
|
|
@@ -2471,23 +2636,26 @@ class CompetitivePositioningSummaryComponent {
|
|
|
2471
2636
|
</div>
|
|
2472
2637
|
<span [ngClass]="isLightMode() ? 'text-slate-500' : 'text-slate-400'" class="text-xs">{{ category.total }} metrics</span>
|
|
2473
2638
|
</div>
|
|
2474
|
-
<div class="flex items-center gap-
|
|
2639
|
+
<div class="flex items-center gap-3">
|
|
2475
2640
|
@if (category.leading > 0) {
|
|
2476
2641
|
<div class="flex items-center gap-1">
|
|
2477
2642
|
<div [ngClass]="getScoreDotClass('leading')" class="w-2 h-2 rounded-full"></div>
|
|
2478
2643
|
<span [ngClass]="isLightMode() ? 'text-emerald-600' : 'text-emerald-400'" class="text-xs font-semibold">{{ category.leading }}</span>
|
|
2644
|
+
<span [ngClass]="isLightMode() ? 'text-emerald-600' : 'text-emerald-500'" class="text-xs uppercase">Leading</span>
|
|
2479
2645
|
</div>
|
|
2480
2646
|
}
|
|
2481
2647
|
@if (category.competitive > 0) {
|
|
2482
2648
|
<div class="flex items-center gap-1">
|
|
2483
2649
|
<div [ngClass]="getScoreDotClass('competitive')" class="w-2 h-2 rounded-full"></div>
|
|
2484
2650
|
<span [ngClass]="isLightMode() ? 'text-blue-600' : 'text-blue-400'" class="text-xs font-semibold">{{ category.competitive }}</span>
|
|
2651
|
+
<span [ngClass]="isLightMode() ? 'text-blue-600' : 'text-blue-500'" class="text-xs uppercase">Competitive</span>
|
|
2485
2652
|
</div>
|
|
2486
2653
|
}
|
|
2487
2654
|
@if (category.lagging > 0) {
|
|
2488
|
-
<div class="flex items-center gap-1">
|
|
2489
|
-
<div [ngClass]="getScoreDotClass('lagging')" class="w-2 h-2 rounded-full
|
|
2490
|
-
<span [ngClass]="isLightMode() ? 'text-orange-600' : 'text-orange-400'" class="text-xs font-semibold
|
|
2655
|
+
<div class="flex items-center gap-1 animate-pulse">
|
|
2656
|
+
<div [ngClass]="getScoreDotClass('lagging')" class="w-2 h-2 rounded-full"></div>
|
|
2657
|
+
<span [ngClass]="isLightMode() ? 'text-orange-600' : 'text-orange-400'" class="text-xs font-semibold">{{ category.lagging }}</span>
|
|
2658
|
+
<span [ngClass]="isLightMode() ? 'text-orange-600' : 'text-orange-500'" class="text-xs uppercase">Lagging</span>
|
|
2491
2659
|
</div>
|
|
2492
2660
|
}
|
|
2493
2661
|
</div>
|
|
@@ -2513,10 +2681,10 @@ class CompetitivePositioningSummaryComponent {
|
|
|
2513
2681
|
`
|
|
2514
2682
|
}]
|
|
2515
2683
|
}], null, { metrics: [{ type: i0.Input, args: [{ isSignal: true, alias: "metrics", required: false }] }], isLightMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "isLightMode", required: false }] }], isCompactMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "isCompactMode", required: false }] }], scrollToCompetitive: [{ type: i0.Output, args: ["scrollToCompetitive"] }] }); })();
|
|
2516
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CompetitivePositioningSummaryComponent, { className: "CompetitivePositioningSummaryComponent", filePath: "lib/components/funnel-analysis-dashboard/competitive-positioning-summary.component.ts", lineNumber:
|
|
2684
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CompetitivePositioningSummaryComponent, { className: "CompetitivePositioningSummaryComponent", filePath: "lib/components/funnel-analysis-dashboard/competitive-positioning-summary.component.ts", lineNumber: 290 }); })();
|
|
2517
2685
|
|
|
2518
2686
|
const _c0$9 = () => [1, 2, 3, 4];
|
|
2519
|
-
function
|
|
2687
|
+
function OverallAssessmentComponent_Conditional_0_For_10_Template(rf, ctx) { if (rf & 1) {
|
|
2520
2688
|
i0.ɵɵelementStart(0, "div", 9);
|
|
2521
2689
|
i0.ɵɵelement(1, "symphiq-skeleton-loader", 6)(2, "symphiq-skeleton-loader", 6);
|
|
2522
2690
|
i0.ɵɵelementEnd();
|
|
@@ -2532,12 +2700,12 @@ function OverallAssessmentComponent_Conditional_0_Template(rf, ctx) { if (rf & 1
|
|
|
2532
2700
|
i0.ɵɵelement(4, "symphiq-skeleton-loader", 6)(5, "symphiq-skeleton-loader", 6);
|
|
2533
2701
|
i0.ɵɵelementEnd();
|
|
2534
2702
|
i0.ɵɵelementStart(6, "div", 7);
|
|
2535
|
-
i0.ɵɵelement(7, "symphiq-skeleton-loader", 6)
|
|
2703
|
+
i0.ɵɵelement(7, "symphiq-skeleton-loader", 6);
|
|
2536
2704
|
i0.ɵɵelementEnd()();
|
|
2537
|
-
i0.ɵɵelementStart(
|
|
2538
|
-
i0.ɵɵrepeaterCreate(
|
|
2705
|
+
i0.ɵɵelementStart(8, "div", 8);
|
|
2706
|
+
i0.ɵɵrepeaterCreate(9, OverallAssessmentComponent_Conditional_0_For_10_Template, 3, 6, "div", 9, i0.ɵɵrepeaterTrackByIdentity);
|
|
2539
2707
|
i0.ɵɵelementEnd();
|
|
2540
|
-
i0.ɵɵelement(
|
|
2708
|
+
i0.ɵɵelement(11, "symphiq-skeleton-loader", 6);
|
|
2541
2709
|
i0.ɵɵelementEnd()();
|
|
2542
2710
|
} if (rf & 2) {
|
|
2543
2711
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
@@ -2548,22 +2716,21 @@ function OverallAssessmentComponent_Conditional_0_Template(rf, ctx) { if (rf & 1
|
|
|
2548
2716
|
i0.ɵɵproperty("width", "80%")("height", "16px")("isLightMode", ctx_r0.isLightMode());
|
|
2549
2717
|
i0.ɵɵadvance(2);
|
|
2550
2718
|
i0.ɵɵproperty("width", "100px")("height", "70px")("isLightMode", ctx_r0.isLightMode());
|
|
2551
|
-
i0.ɵɵadvance();
|
|
2552
|
-
i0.ɵɵproperty("width", "100px")("height", "70px")("isLightMode", ctx_r0.isLightMode());
|
|
2553
2719
|
i0.ɵɵadvance(2);
|
|
2554
|
-
i0.ɵɵrepeater(i0.ɵɵpureFunction0(
|
|
2720
|
+
i0.ɵɵrepeater(i0.ɵɵpureFunction0(14, _c0$9));
|
|
2555
2721
|
i0.ɵɵadvance(2);
|
|
2556
2722
|
i0.ɵɵproperty("width", "100%")("height", "200px")("isLightMode", ctx_r0.isLightMode());
|
|
2557
2723
|
} }
|
|
2558
|
-
function
|
|
2559
|
-
i0.ɵɵelementStart(0, "div",
|
|
2724
|
+
function OverallAssessmentComponent_Conditional_1_Conditional_13_Conditional_1_Conditional_25_Template(rf, ctx) { if (rf & 1) {
|
|
2725
|
+
i0.ɵɵelementStart(0, "div", 53)(1, "span", 49);
|
|
2560
2726
|
i0.ɵɵtext(2, "2025 Pacing: ");
|
|
2561
2727
|
i0.ɵɵelementEnd();
|
|
2562
|
-
i0.ɵɵelementStart(3, "span",
|
|
2728
|
+
i0.ɵɵelementStart(3, "span", 52);
|
|
2563
2729
|
i0.ɵɵtext(4);
|
|
2564
2730
|
i0.ɵɵelementEnd()();
|
|
2565
2731
|
} if (rf & 2) {
|
|
2566
2732
|
const ctx_r0 = i0.ɵɵnextContext(4);
|
|
2733
|
+
i0.ɵɵproperty("libSymphiqTooltip", ctx_r0.revenueStatusTooltip())("tooltipPosition", "top");
|
|
2567
2734
|
i0.ɵɵadvance();
|
|
2568
2735
|
i0.ɵɵclassMap(ctx_r0.badgeLabelClass());
|
|
2569
2736
|
i0.ɵɵadvance(2);
|
|
@@ -2571,41 +2738,41 @@ function OverallAssessmentComponent_Conditional_1_Conditional_21_Conditional_1_C
|
|
|
2571
2738
|
i0.ɵɵadvance();
|
|
2572
2739
|
i0.ɵɵtextInterpolate(ctx_r0.formattedRevenuePacing());
|
|
2573
2740
|
} }
|
|
2574
|
-
function
|
|
2575
|
-
i0.ɵɵelementStart(0, "div",
|
|
2741
|
+
function OverallAssessmentComponent_Conditional_1_Conditional_13_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
2742
|
+
i0.ɵɵelementStart(0, "div", 36)(1, "div", 23)(2, "div", 37);
|
|
2576
2743
|
i0.ɵɵnamespaceSVG();
|
|
2577
|
-
i0.ɵɵelementStart(3, "svg",
|
|
2578
|
-
i0.ɵɵelement(4, "path",
|
|
2744
|
+
i0.ɵɵelementStart(3, "svg", 38);
|
|
2745
|
+
i0.ɵɵelement(4, "path", 39);
|
|
2579
2746
|
i0.ɵɵelementEnd()();
|
|
2580
2747
|
i0.ɵɵnamespaceHTML();
|
|
2581
|
-
i0.ɵɵelementStart(5, "div",
|
|
2748
|
+
i0.ɵɵelementStart(5, "div", 40)(6, "h3", 41);
|
|
2582
2749
|
i0.ɵɵtext(7, "Your Revenue");
|
|
2583
2750
|
i0.ɵɵelementEnd();
|
|
2584
|
-
i0.ɵɵelementStart(8, "p",
|
|
2751
|
+
i0.ɵɵelementStart(8, "p", 42);
|
|
2585
2752
|
i0.ɵɵtext(9);
|
|
2586
2753
|
i0.ɵɵelementEnd()()();
|
|
2587
|
-
i0.ɵɵelementStart(10, "div",
|
|
2754
|
+
i0.ɵɵelementStart(10, "div", 43)(11, "div", 44)(12, "div", 45);
|
|
2588
2755
|
i0.ɵɵnamespaceSVG();
|
|
2589
|
-
i0.ɵɵelementStart(13, "svg",
|
|
2590
|
-
i0.ɵɵelement(14, "path",
|
|
2756
|
+
i0.ɵɵelementStart(13, "svg", 46);
|
|
2757
|
+
i0.ɵɵelement(14, "path", 47);
|
|
2591
2758
|
i0.ɵɵelementEnd();
|
|
2592
2759
|
i0.ɵɵnamespaceHTML();
|
|
2593
|
-
i0.ɵɵelementStart(15, "span",
|
|
2760
|
+
i0.ɵɵelementStart(15, "span", 48);
|
|
2594
2761
|
i0.ɵɵtext(16);
|
|
2595
2762
|
i0.ɵɵelementEnd();
|
|
2596
|
-
i0.ɵɵelementStart(17, "span",
|
|
2763
|
+
i0.ɵɵelementStart(17, "span", 49);
|
|
2597
2764
|
i0.ɵɵtext(18, "vs last year");
|
|
2598
2765
|
i0.ɵɵelementEnd()();
|
|
2599
|
-
i0.ɵɵelement(19, "div",
|
|
2600
|
-
i0.ɵɵelementStart(20, "div")(21, "span",
|
|
2766
|
+
i0.ɵɵelement(19, "div", 50);
|
|
2767
|
+
i0.ɵɵelementStart(20, "div", 51)(21, "span", 49);
|
|
2601
2768
|
i0.ɵɵtext(22, "Target: ");
|
|
2602
2769
|
i0.ɵɵelementEnd();
|
|
2603
|
-
i0.ɵɵelementStart(23, "span",
|
|
2770
|
+
i0.ɵɵelementStart(23, "span", 52);
|
|
2604
2771
|
i0.ɵɵtext(24);
|
|
2605
2772
|
i0.ɵɵelementEnd()()();
|
|
2606
|
-
i0.ɵɵconditionalCreate(25,
|
|
2773
|
+
i0.ɵɵconditionalCreate(25, OverallAssessmentComponent_Conditional_1_Conditional_13_Conditional_1_Conditional_25_Template, 5, 7, "div", 53);
|
|
2607
2774
|
i0.ɵɵelementEnd();
|
|
2608
|
-
i0.ɵɵelementStart(26, "div",
|
|
2775
|
+
i0.ɵɵelementStart(26, "div", 54)(27, "span", 55);
|
|
2609
2776
|
i0.ɵɵtext(28);
|
|
2610
2777
|
i0.ɵɵelementEnd();
|
|
2611
2778
|
i0.ɵɵelementStart(29, "span");
|
|
@@ -2625,7 +2792,9 @@ function OverallAssessmentComponent_Conditional_1_Conditional_21_Conditional_1_T
|
|
|
2625
2792
|
i0.ɵɵproperty("libSymphiqTooltip", ctx_r0.revenueTooltip())("tooltipPosition", "bottom");
|
|
2626
2793
|
i0.ɵɵadvance();
|
|
2627
2794
|
i0.ɵɵtextInterpolate1(" ", ctx_r0.formattedRevenueValue(), " ");
|
|
2628
|
-
i0.ɵɵadvance(
|
|
2795
|
+
i0.ɵɵadvance(3);
|
|
2796
|
+
i0.ɵɵproperty("libSymphiqTooltip", ctx_r0.revenueTrendTooltip())("tooltipPosition", "top");
|
|
2797
|
+
i0.ɵɵadvance();
|
|
2629
2798
|
i0.ɵɵclassMap(ctx_r0.trendIconClass());
|
|
2630
2799
|
i0.ɵɵadvance(2);
|
|
2631
2800
|
i0.ɵɵclassMap(ctx_r0.trendValueClass());
|
|
@@ -2633,7 +2802,9 @@ function OverallAssessmentComponent_Conditional_1_Conditional_21_Conditional_1_T
|
|
|
2633
2802
|
i0.ɵɵtextInterpolate1("", ctx_r0.formattedRevenueTrend(), "%");
|
|
2634
2803
|
i0.ɵɵadvance();
|
|
2635
2804
|
i0.ɵɵclassMap(ctx_r0.badgeLabelClass());
|
|
2636
|
-
i0.ɵɵadvance(
|
|
2805
|
+
i0.ɵɵadvance(3);
|
|
2806
|
+
i0.ɵɵproperty("libSymphiqTooltip", ctx_r0.revenueStatusTooltip())("tooltipPosition", "top");
|
|
2807
|
+
i0.ɵɵadvance();
|
|
2637
2808
|
i0.ɵɵclassMap(ctx_r0.badgeLabelClass());
|
|
2638
2809
|
i0.ɵɵadvance(2);
|
|
2639
2810
|
i0.ɵɵclassMap(ctx_r0.titleClass());
|
|
@@ -2649,10 +2820,10 @@ function OverallAssessmentComponent_Conditional_1_Conditional_21_Conditional_1_T
|
|
|
2649
2820
|
i0.ɵɵadvance(2);
|
|
2650
2821
|
i0.ɵɵtextInterpolate(ctx_r0.revenueStatusLabel());
|
|
2651
2822
|
} }
|
|
2652
|
-
function
|
|
2653
|
-
i0.ɵɵelementStart(0, "div",
|
|
2654
|
-
i0.ɵɵconditionalCreate(1,
|
|
2655
|
-
i0.ɵɵelementStart(2, "div",
|
|
2823
|
+
function OverallAssessmentComponent_Conditional_1_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
2824
|
+
i0.ɵɵelementStart(0, "div", 19);
|
|
2825
|
+
i0.ɵɵconditionalCreate(1, OverallAssessmentComponent_Conditional_1_Conditional_13_Conditional_1_Template, 31, 37, "div", 33);
|
|
2826
|
+
i0.ɵɵelementStart(2, "div", 34)(3, "p", 35);
|
|
2656
2827
|
i0.ɵɵtext(4);
|
|
2657
2828
|
i0.ɵɵelementEnd()()();
|
|
2658
2829
|
} if (rf & 2) {
|
|
@@ -2666,8 +2837,8 @@ function OverallAssessmentComponent_Conditional_1_Conditional_21_Template(rf, ct
|
|
|
2666
2837
|
i0.ɵɵadvance();
|
|
2667
2838
|
i0.ɵɵtextInterpolate(ctx_r0.assessment().narrative);
|
|
2668
2839
|
} }
|
|
2669
|
-
function
|
|
2670
|
-
i0.ɵɵelementStart(0, "div",
|
|
2840
|
+
function OverallAssessmentComponent_Conditional_1_Conditional_14_Conditional_0_Conditional_27_Template(rf, ctx) { if (rf & 1) {
|
|
2841
|
+
i0.ɵɵelementStart(0, "div", 53)(1, "span", 64);
|
|
2671
2842
|
i0.ɵɵtext(2, "2025 Pacing: ");
|
|
2672
2843
|
i0.ɵɵelementEnd();
|
|
2673
2844
|
i0.ɵɵelementStart(3, "span", 65);
|
|
@@ -2675,6 +2846,7 @@ function OverallAssessmentComponent_Conditional_1_Conditional_22_Conditional_0_C
|
|
|
2675
2846
|
i0.ɵɵelementEnd()();
|
|
2676
2847
|
} if (rf & 2) {
|
|
2677
2848
|
const ctx_r0 = i0.ɵɵnextContext(4);
|
|
2849
|
+
i0.ɵɵproperty("libSymphiqTooltip", ctx_r0.revenueStatusTooltip())("tooltipPosition", "top");
|
|
2678
2850
|
i0.ɵɵadvance();
|
|
2679
2851
|
i0.ɵɵclassMap(ctx_r0.badgeLabelClass());
|
|
2680
2852
|
i0.ɵɵadvance(2);
|
|
@@ -2682,23 +2854,23 @@ function OverallAssessmentComponent_Conditional_1_Conditional_22_Conditional_0_C
|
|
|
2682
2854
|
i0.ɵɵadvance();
|
|
2683
2855
|
i0.ɵɵtextInterpolate(ctx_r0.formattedRevenuePacing());
|
|
2684
2856
|
} }
|
|
2685
|
-
function
|
|
2686
|
-
i0.ɵɵelementStart(0, "div", 58)(1, "div", 59)(2, "div", 60)(3, "div",
|
|
2857
|
+
function OverallAssessmentComponent_Conditional_1_Conditional_14_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
2858
|
+
i0.ɵɵelementStart(0, "div", 58)(1, "div", 59)(2, "div", 60)(3, "div", 23)(4, "div", 37);
|
|
2687
2859
|
i0.ɵɵnamespaceSVG();
|
|
2688
|
-
i0.ɵɵelementStart(5, "svg",
|
|
2689
|
-
i0.ɵɵelement(6, "path",
|
|
2860
|
+
i0.ɵɵelementStart(5, "svg", 38);
|
|
2861
|
+
i0.ɵɵelement(6, "path", 39);
|
|
2690
2862
|
i0.ɵɵelementEnd()();
|
|
2691
2863
|
i0.ɵɵnamespaceHTML();
|
|
2692
|
-
i0.ɵɵelementStart(7, "div",
|
|
2864
|
+
i0.ɵɵelementStart(7, "div", 40)(8, "h3", 41);
|
|
2693
2865
|
i0.ɵɵtext(9, "Your Revenue");
|
|
2694
2866
|
i0.ɵɵelementEnd();
|
|
2695
|
-
i0.ɵɵelementStart(10, "p",
|
|
2867
|
+
i0.ɵɵelementStart(10, "p", 42);
|
|
2696
2868
|
i0.ɵɵtext(11);
|
|
2697
2869
|
i0.ɵɵelementEnd()()();
|
|
2698
|
-
i0.ɵɵelementStart(12, "div", 61)(13, "div",
|
|
2870
|
+
i0.ɵɵelementStart(12, "div", 61)(13, "div", 44)(14, "div", 45);
|
|
2699
2871
|
i0.ɵɵnamespaceSVG();
|
|
2700
2872
|
i0.ɵɵelementStart(15, "svg", 62);
|
|
2701
|
-
i0.ɵɵelement(16, "path",
|
|
2873
|
+
i0.ɵɵelement(16, "path", 47);
|
|
2702
2874
|
i0.ɵɵelementEnd();
|
|
2703
2875
|
i0.ɵɵnamespaceHTML();
|
|
2704
2876
|
i0.ɵɵelementStart(17, "span", 63);
|
|
@@ -2707,19 +2879,19 @@ function OverallAssessmentComponent_Conditional_1_Conditional_22_Conditional_0_T
|
|
|
2707
2879
|
i0.ɵɵelementStart(19, "span", 64);
|
|
2708
2880
|
i0.ɵɵtext(20, "vs last year");
|
|
2709
2881
|
i0.ɵɵelementEnd()();
|
|
2710
|
-
i0.ɵɵelement(21, "div",
|
|
2711
|
-
i0.ɵɵelementStart(22, "div")(23, "span", 64);
|
|
2882
|
+
i0.ɵɵelement(21, "div", 50);
|
|
2883
|
+
i0.ɵɵelementStart(22, "div", 51)(23, "span", 64);
|
|
2712
2884
|
i0.ɵɵtext(24, "Target: ");
|
|
2713
2885
|
i0.ɵɵelementEnd();
|
|
2714
2886
|
i0.ɵɵelementStart(25, "span", 65);
|
|
2715
2887
|
i0.ɵɵtext(26);
|
|
2716
2888
|
i0.ɵɵelementEnd()()();
|
|
2717
|
-
i0.ɵɵconditionalCreate(27,
|
|
2889
|
+
i0.ɵɵconditionalCreate(27, OverallAssessmentComponent_Conditional_1_Conditional_14_Conditional_0_Conditional_27_Template, 5, 7, "div", 53);
|
|
2718
2890
|
i0.ɵɵelementEnd()();
|
|
2719
2891
|
i0.ɵɵelementStart(28, "div", 66)(29, "div", 17);
|
|
2720
2892
|
i0.ɵɵtext(30, "Status");
|
|
2721
2893
|
i0.ɵɵelementEnd();
|
|
2722
|
-
i0.ɵɵelementStart(31, "div", 67)(32, "span",
|
|
2894
|
+
i0.ɵɵelementStart(31, "div", 67)(32, "span", 55);
|
|
2723
2895
|
i0.ɵɵtext(33);
|
|
2724
2896
|
i0.ɵɵelementEnd();
|
|
2725
2897
|
i0.ɵɵelementStart(34, "span");
|
|
@@ -2742,7 +2914,9 @@ function OverallAssessmentComponent_Conditional_1_Conditional_22_Conditional_0_T
|
|
|
2742
2914
|
i0.ɵɵproperty("libSymphiqTooltip", ctx_r0.revenueTooltip())("tooltipPosition", "bottom");
|
|
2743
2915
|
i0.ɵɵadvance();
|
|
2744
2916
|
i0.ɵɵtextInterpolate1(" ", ctx_r0.formattedRevenueValue(), " ");
|
|
2745
|
-
i0.ɵɵadvance(
|
|
2917
|
+
i0.ɵɵadvance(3);
|
|
2918
|
+
i0.ɵɵproperty("libSymphiqTooltip", ctx_r0.revenueTrendTooltip())("tooltipPosition", "top");
|
|
2919
|
+
i0.ɵɵadvance();
|
|
2746
2920
|
i0.ɵɵclassMap(ctx_r0.trendIconClass());
|
|
2747
2921
|
i0.ɵɵadvance(2);
|
|
2748
2922
|
i0.ɵɵclassMap(ctx_r0.trendValueClass());
|
|
@@ -2750,7 +2924,9 @@ function OverallAssessmentComponent_Conditional_1_Conditional_22_Conditional_0_T
|
|
|
2750
2924
|
i0.ɵɵtextInterpolate1("", ctx_r0.formattedRevenueTrend(), "%");
|
|
2751
2925
|
i0.ɵɵadvance();
|
|
2752
2926
|
i0.ɵɵclassMap(ctx_r0.badgeLabelClass());
|
|
2753
|
-
i0.ɵɵadvance(
|
|
2927
|
+
i0.ɵɵadvance(3);
|
|
2928
|
+
i0.ɵɵproperty("libSymphiqTooltip", ctx_r0.revenueStatusTooltip())("tooltipPosition", "top");
|
|
2929
|
+
i0.ɵɵadvance();
|
|
2754
2930
|
i0.ɵɵclassMap(ctx_r0.badgeLabelClass());
|
|
2755
2931
|
i0.ɵɵadvance(2);
|
|
2756
2932
|
i0.ɵɵclassMap(ctx_r0.titleClass());
|
|
@@ -2772,9 +2948,9 @@ function OverallAssessmentComponent_Conditional_1_Conditional_22_Conditional_0_T
|
|
|
2772
2948
|
i0.ɵɵadvance();
|
|
2773
2949
|
i0.ɵɵtextInterpolate(ctx_r0.revenueMetric().description);
|
|
2774
2950
|
} }
|
|
2775
|
-
function
|
|
2776
|
-
i0.ɵɵconditionalCreate(0,
|
|
2777
|
-
i0.ɵɵelementStart(1, "div", 57)(2, "p",
|
|
2951
|
+
function OverallAssessmentComponent_Conditional_1_Conditional_14_Template(rf, ctx) { if (rf & 1) {
|
|
2952
|
+
i0.ɵɵconditionalCreate(0, OverallAssessmentComponent_Conditional_1_Conditional_14_Conditional_0_Template, 38, 40, "div", 56);
|
|
2953
|
+
i0.ɵɵelementStart(1, "div", 57)(2, "p", 35);
|
|
2778
2954
|
i0.ɵɵtext(3);
|
|
2779
2955
|
i0.ɵɵelementEnd()();
|
|
2780
2956
|
} if (rf & 2) {
|
|
@@ -2787,29 +2963,29 @@ function OverallAssessmentComponent_Conditional_1_Conditional_22_Template(rf, ct
|
|
|
2787
2963
|
i0.ɵɵadvance();
|
|
2788
2964
|
i0.ɵɵtextInterpolate(ctx_r0.assessment().narrative);
|
|
2789
2965
|
} }
|
|
2790
|
-
function
|
|
2966
|
+
function OverallAssessmentComponent_Conditional_1_Conditional_15_For_3_Template(rf, ctx) { if (rf & 1) {
|
|
2791
2967
|
const _r2 = i0.ɵɵgetCurrentView();
|
|
2792
2968
|
i0.ɵɵelementStart(0, "symphiq-chart-container", 71);
|
|
2793
|
-
i0.ɵɵlistener("chartClick", function
|
|
2969
|
+
i0.ɵɵlistener("chartClick", function OverallAssessmentComponent_Conditional_1_Conditional_15_For_3_Template_symphiq_chart_container_chartClick_0_listener($event) { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.openChartModal($event)); });
|
|
2794
2970
|
i0.ɵɵelementEnd();
|
|
2795
2971
|
} if (rf & 2) {
|
|
2796
2972
|
const chart_r3 = ctx.$implicit;
|
|
2797
2973
|
const ctx_r0 = i0.ɵɵnextContext(3);
|
|
2798
2974
|
i0.ɵɵproperty("chart", chart_r3)("isLightMode", ctx_r0.isLightMode())("isCompactMode", ctx_r0.isCompactMode())("collapsibleIn", "compact")("isLoading", ctx_r0.isChartsLoading());
|
|
2799
2975
|
} }
|
|
2800
|
-
function
|
|
2801
|
-
i0.ɵɵelementStart(0, "div",
|
|
2802
|
-
i0.ɵɵrepeaterCreate(2,
|
|
2976
|
+
function OverallAssessmentComponent_Conditional_1_Conditional_15_Template(rf, ctx) { if (rf & 1) {
|
|
2977
|
+
i0.ɵɵelementStart(0, "div", 20)(1, "div", 69);
|
|
2978
|
+
i0.ɵɵrepeaterCreate(2, OverallAssessmentComponent_Conditional_1_Conditional_15_For_3_Template, 1, 5, "symphiq-chart-container", 70, i0.ɵɵrepeaterTrackByIndex);
|
|
2803
2979
|
i0.ɵɵelementEnd()();
|
|
2804
2980
|
} if (rf & 2) {
|
|
2805
2981
|
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
2806
2982
|
i0.ɵɵadvance(2);
|
|
2807
2983
|
i0.ɵɵrepeater(ctx_r0.charts());
|
|
2808
2984
|
} }
|
|
2809
|
-
function
|
|
2985
|
+
function OverallAssessmentComponent_Conditional_1_Conditional_53_Template(rf, ctx) { if (rf & 1) {
|
|
2810
2986
|
const _r4 = i0.ɵɵgetCurrentView();
|
|
2811
|
-
i0.ɵɵelementStart(0, "div",
|
|
2812
|
-
i0.ɵɵlistener("scrollToCompetitive", function
|
|
2987
|
+
i0.ɵɵelementStart(0, "div", 32)(1, "symphiq-competitive-positioning-summary", 72);
|
|
2988
|
+
i0.ɵɵlistener("scrollToCompetitive", function OverallAssessmentComponent_Conditional_1_Conditional_53_Template_symphiq_competitive_positioning_summary_scrollToCompetitive_1_listener() { i0.ɵɵrestoreView(_r4); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.scrollToCompetitiveSection()); });
|
|
2813
2989
|
i0.ɵɵelementEnd()();
|
|
2814
2990
|
} if (rf & 2) {
|
|
2815
2991
|
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
@@ -2824,71 +3000,62 @@ function OverallAssessmentComponent_Conditional_1_Template(rf, ctx) { if (rf & 1
|
|
|
2824
3000
|
i0.ɵɵtext(6);
|
|
2825
3001
|
i0.ɵɵelementEnd()();
|
|
2826
3002
|
i0.ɵɵelementStart(7, "div", 15)(8, "div", 16)(9, "div", 17);
|
|
2827
|
-
i0.ɵɵtext(10, "
|
|
2828
|
-
i0.ɵɵelementEnd();
|
|
2829
|
-
i0.ɵɵelementStart(11, "div", 18)(12, "span", 19);
|
|
2830
|
-
i0.ɵɵtext(13);
|
|
2831
|
-
i0.ɵɵelementEnd();
|
|
2832
|
-
i0.ɵɵelementStart(14, "span");
|
|
2833
|
-
i0.ɵɵtext(15);
|
|
2834
|
-
i0.ɵɵelementEnd()()();
|
|
2835
|
-
i0.ɵɵelementStart(16, "div", 20)(17, "div", 17);
|
|
2836
|
-
i0.ɵɵtext(18, "Grade");
|
|
3003
|
+
i0.ɵɵtext(10, "Grade");
|
|
2837
3004
|
i0.ɵɵelementEnd();
|
|
2838
|
-
i0.ɵɵelementStart(
|
|
2839
|
-
i0.ɵɵtext(
|
|
3005
|
+
i0.ɵɵelementStart(11, "div", 18);
|
|
3006
|
+
i0.ɵɵtext(12);
|
|
2840
3007
|
i0.ɵɵelementEnd()()()();
|
|
2841
|
-
i0.ɵɵconditionalCreate(
|
|
2842
|
-
i0.ɵɵconditionalCreate(
|
|
2843
|
-
i0.ɵɵelementStart(
|
|
3008
|
+
i0.ɵɵconditionalCreate(13, OverallAssessmentComponent_Conditional_1_Conditional_13_Template, 5, 6, "div", 19)(14, OverallAssessmentComponent_Conditional_1_Conditional_14_Template, 4, 6);
|
|
3009
|
+
i0.ɵɵconditionalCreate(15, OverallAssessmentComponent_Conditional_1_Conditional_15_Template, 4, 0, "div", 20);
|
|
3010
|
+
i0.ɵɵelementStart(16, "div", 21)(17, "div", 22)(18, "div", 23)(19, "div", 24);
|
|
2844
3011
|
i0.ɵɵnamespaceSVG();
|
|
2845
|
-
i0.ɵɵelementStart(
|
|
2846
|
-
i0.ɵɵelement(
|
|
3012
|
+
i0.ɵɵelementStart(20, "svg", 25);
|
|
3013
|
+
i0.ɵɵelement(21, "path", 26);
|
|
2847
3014
|
i0.ɵɵelementEnd()();
|
|
2848
3015
|
i0.ɵɵnamespaceHTML();
|
|
2849
|
-
i0.ɵɵelementStart(
|
|
2850
|
-
i0.ɵɵtext(
|
|
3016
|
+
i0.ɵɵelementStart(22, "h3", 27);
|
|
3017
|
+
i0.ɵɵtext(23, "Key Strengths");
|
|
2851
3018
|
i0.ɵɵelementEnd()();
|
|
2852
|
-
i0.ɵɵelementStart(
|
|
2853
|
-
i0.ɵɵtext(
|
|
3019
|
+
i0.ɵɵelementStart(24, "p", 28);
|
|
3020
|
+
i0.ɵɵtext(25);
|
|
2854
3021
|
i0.ɵɵelementEnd()();
|
|
2855
|
-
i0.ɵɵelementStart(
|
|
3022
|
+
i0.ɵɵelementStart(26, "div", 22)(27, "div", 23)(28, "div", 24);
|
|
2856
3023
|
i0.ɵɵnamespaceSVG();
|
|
2857
|
-
i0.ɵɵelementStart(
|
|
2858
|
-
i0.ɵɵelement(
|
|
3024
|
+
i0.ɵɵelementStart(29, "svg", 25);
|
|
3025
|
+
i0.ɵɵelement(30, "path", 29);
|
|
2859
3026
|
i0.ɵɵelementEnd()();
|
|
2860
3027
|
i0.ɵɵnamespaceHTML();
|
|
2861
|
-
i0.ɵɵelementStart(
|
|
2862
|
-
i0.ɵɵtext(
|
|
3028
|
+
i0.ɵɵelementStart(31, "h3", 27);
|
|
3029
|
+
i0.ɵɵtext(32, "Areas for Improvement");
|
|
2863
3030
|
i0.ɵɵelementEnd()();
|
|
2864
|
-
i0.ɵɵelementStart(
|
|
2865
|
-
i0.ɵɵtext(
|
|
3031
|
+
i0.ɵɵelementStart(33, "p", 28);
|
|
3032
|
+
i0.ɵɵtext(34);
|
|
2866
3033
|
i0.ɵɵelementEnd()();
|
|
2867
|
-
i0.ɵɵelementStart(
|
|
3034
|
+
i0.ɵɵelementStart(35, "div", 22)(36, "div", 23)(37, "div", 24);
|
|
2868
3035
|
i0.ɵɵnamespaceSVG();
|
|
2869
|
-
i0.ɵɵelementStart(
|
|
2870
|
-
i0.ɵɵelement(
|
|
3036
|
+
i0.ɵɵelementStart(38, "svg", 25);
|
|
3037
|
+
i0.ɵɵelement(39, "path", 30);
|
|
2871
3038
|
i0.ɵɵelementEnd()();
|
|
2872
3039
|
i0.ɵɵnamespaceHTML();
|
|
2873
|
-
i0.ɵɵelementStart(
|
|
2874
|
-
i0.ɵɵtext(
|
|
3040
|
+
i0.ɵɵelementStart(40, "h3", 27);
|
|
3041
|
+
i0.ɵɵtext(41, "Prior Year Trend");
|
|
2875
3042
|
i0.ɵɵelementEnd()();
|
|
2876
|
-
i0.ɵɵelementStart(
|
|
2877
|
-
i0.ɵɵtext(
|
|
3043
|
+
i0.ɵɵelementStart(42, "p", 28);
|
|
3044
|
+
i0.ɵɵtext(43);
|
|
2878
3045
|
i0.ɵɵelementEnd()();
|
|
2879
|
-
i0.ɵɵelementStart(
|
|
3046
|
+
i0.ɵɵelementStart(44, "div", 22)(45, "div", 23)(46, "div", 24);
|
|
2880
3047
|
i0.ɵɵnamespaceSVG();
|
|
2881
|
-
i0.ɵɵelementStart(
|
|
2882
|
-
i0.ɵɵelement(
|
|
3048
|
+
i0.ɵɵelementStart(47, "svg", 25);
|
|
3049
|
+
i0.ɵɵelement(48, "path", 31);
|
|
2883
3050
|
i0.ɵɵelementEnd()();
|
|
2884
3051
|
i0.ɵɵnamespaceHTML();
|
|
2885
|
-
i0.ɵɵelementStart(
|
|
2886
|
-
i0.ɵɵtext(
|
|
3052
|
+
i0.ɵɵelementStart(49, "h3", 27);
|
|
3053
|
+
i0.ɵɵtext(50, "Recommended Actions");
|
|
2887
3054
|
i0.ɵɵelementEnd()();
|
|
2888
|
-
i0.ɵɵelementStart(
|
|
2889
|
-
i0.ɵɵtext(
|
|
3055
|
+
i0.ɵɵelementStart(51, "p", 28);
|
|
3056
|
+
i0.ɵɵtext(52);
|
|
2890
3057
|
i0.ɵɵelementEnd()()();
|
|
2891
|
-
i0.ɵɵconditionalCreate(
|
|
3058
|
+
i0.ɵɵconditionalCreate(53, OverallAssessmentComponent_Conditional_1_Conditional_53_Template, 2, 3, "div", 32);
|
|
2892
3059
|
i0.ɵɵelementEnd();
|
|
2893
3060
|
} if (rf & 2) {
|
|
2894
3061
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
@@ -2900,15 +3067,6 @@ function OverallAssessmentComponent_Conditional_1_Template(rf, ctx) { if (rf & 1
|
|
|
2900
3067
|
i0.ɵɵadvance();
|
|
2901
3068
|
i0.ɵɵtextInterpolate(ctx_r0.assessment().targetPacingStatus);
|
|
2902
3069
|
i0.ɵɵadvance(2);
|
|
2903
|
-
i0.ɵɵclassMap(ctx_r0.statusBadgeClass());
|
|
2904
|
-
i0.ɵɵproperty("ngStyle", ctx_r0.getStatusBadgeStyle())("libSymphiqTooltip", ctx_r0.statusBadgeTooltip())("tooltipPosition", "bottom");
|
|
2905
|
-
i0.ɵɵadvance();
|
|
2906
|
-
i0.ɵɵclassMap(ctx_r0.badgeLabelClass());
|
|
2907
|
-
i0.ɵɵadvance(4);
|
|
2908
|
-
i0.ɵɵtextInterpolate(ctx_r0.getStatusIcon());
|
|
2909
|
-
i0.ɵɵadvance(2);
|
|
2910
|
-
i0.ɵɵtextInterpolate(ctx_r0.statusLabel());
|
|
2911
|
-
i0.ɵɵadvance();
|
|
2912
3070
|
i0.ɵɵclassMap(ctx_r0.gradeBadgeClass());
|
|
2913
3071
|
i0.ɵɵclassProp("animate-pulse", ctx_r0.shouldPulseGrade());
|
|
2914
3072
|
i0.ɵɵproperty("libSymphiqTooltip", ctx_r0.gradeTooltip())("tooltipPosition", "bottom");
|
|
@@ -2917,9 +3075,9 @@ function OverallAssessmentComponent_Conditional_1_Template(rf, ctx) { if (rf & 1
|
|
|
2917
3075
|
i0.ɵɵadvance(3);
|
|
2918
3076
|
i0.ɵɵtextInterpolate(ctx_r0.assessment().grade);
|
|
2919
3077
|
i0.ɵɵadvance();
|
|
2920
|
-
i0.ɵɵconditional(ctx_r0.isCompactMode() ?
|
|
3078
|
+
i0.ɵɵconditional(ctx_r0.isCompactMode() ? 13 : 14);
|
|
2921
3079
|
i0.ɵɵadvance(2);
|
|
2922
|
-
i0.ɵɵconditional(ctx_r0.charts() && ctx_r0.charts().length > 0 ?
|
|
3080
|
+
i0.ɵɵconditional(ctx_r0.charts() && ctx_r0.charts().length > 0 ? 15 : -1);
|
|
2923
3081
|
i0.ɵɵadvance(2);
|
|
2924
3082
|
i0.ɵɵclassMap(ctx_r0.strengthsCardClass());
|
|
2925
3083
|
i0.ɵɵadvance(2);
|
|
@@ -2969,7 +3127,7 @@ function OverallAssessmentComponent_Conditional_1_Template(rf, ctx) { if (rf & 1
|
|
|
2969
3127
|
i0.ɵɵadvance();
|
|
2970
3128
|
i0.ɵɵtextInterpolate(ctx_r0.assessment().recommendedActions);
|
|
2971
3129
|
i0.ɵɵadvance();
|
|
2972
|
-
i0.ɵɵconditional(ctx_r0.hasCompetitiveData() ?
|
|
3130
|
+
i0.ɵɵconditional(ctx_r0.hasCompetitiveData() ? 53 : -1);
|
|
2973
3131
|
} }
|
|
2974
3132
|
class OverallAssessmentComponent {
|
|
2975
3133
|
constructor() {
|
|
@@ -3009,8 +3167,6 @@ class OverallAssessmentComponent {
|
|
|
3009
3167
|
this.lightModeBadgeLabelClass = computed(() => 'text-slate-600', ...(ngDevMode ? [{ debugName: "lightModeBadgeLabelClass" }] : []));
|
|
3010
3168
|
this.darkModeBadgeLabelClass = computed(() => 'text-slate-400', ...(ngDevMode ? [{ debugName: "darkModeBadgeLabelClass" }] : []));
|
|
3011
3169
|
this.badgeLabelClass = computed(() => this.isLightMode() ? this.lightModeBadgeLabelClass() : this.darkModeBadgeLabelClass(), ...(ngDevMode ? [{ debugName: "badgeLabelClass" }] : []));
|
|
3012
|
-
this.statusBadgeClass = computed(() => this.getStatusBadgeClass(), ...(ngDevMode ? [{ debugName: "statusBadgeClass" }] : []));
|
|
3013
|
-
this.statusLabel = computed(() => this.getStatusLabel(), ...(ngDevMode ? [{ debugName: "statusLabel" }] : []));
|
|
3014
3170
|
this.gradeBadgeClass = computed(() => this.getGradeBadgeClass(), ...(ngDevMode ? [{ debugName: "gradeBadgeClass" }] : []));
|
|
3015
3171
|
this.shouldPulseGrade = computed(() => {
|
|
3016
3172
|
const grade = this.assessment().grade || 'B';
|
|
@@ -3140,22 +3296,22 @@ class OverallAssessmentComponent {
|
|
|
3140
3296
|
}, ...(ngDevMode ? [{ debugName: "revenueTooltip" }] : []));
|
|
3141
3297
|
this.revenueStatusTooltip = computed(() => {
|
|
3142
3298
|
const metric = this.revenueMetric();
|
|
3143
|
-
|
|
3144
|
-
|
|
3145
|
-
|
|
3146
|
-
description: metric?.description || ''
|
|
3147
|
-
};
|
|
3299
|
+
if (!metric)
|
|
3300
|
+
return undefined;
|
|
3301
|
+
return this.tooltipDataService.extractStatusTooltipData(metric);
|
|
3148
3302
|
}, ...(ngDevMode ? [{ debugName: "revenueStatusTooltip" }] : []));
|
|
3149
|
-
this.statusBadgeTooltip = computed(() => ({
|
|
3150
|
-
status: this.assessment().overallStatus || 'ON_TRACK',
|
|
3151
|
-
pacingPercentage: this.calculateOverallPacing(),
|
|
3152
|
-
progressPercent: this.calculateOverallPacing()
|
|
3153
|
-
}), ...(ngDevMode ? [{ debugName: "statusBadgeTooltip" }] : []));
|
|
3154
3303
|
this.gradeTooltip = computed(() => ({
|
|
3155
3304
|
title: 'Performance Grade',
|
|
3156
3305
|
grade: this.assessment().grade || 'B',
|
|
3157
|
-
explanation: this.getGradeExplanation()
|
|
3306
|
+
explanation: this.assessment().gradeDescription || this.getGradeExplanation()
|
|
3158
3307
|
}), ...(ngDevMode ? [{ debugName: "gradeTooltip" }] : []));
|
|
3308
|
+
this.revenueTrendTooltip = computed(() => {
|
|
3309
|
+
const metric = this.revenueMetric();
|
|
3310
|
+
if (!metric)
|
|
3311
|
+
return undefined;
|
|
3312
|
+
const chart = this.charts().find(c => c.title?.includes('Revenue'));
|
|
3313
|
+
return this.tooltipDataService.extractTrendTooltipData(metric, chart);
|
|
3314
|
+
}, ...(ngDevMode ? [{ debugName: "revenueTrendTooltip" }] : []));
|
|
3159
3315
|
}
|
|
3160
3316
|
openChartModal(chart) {
|
|
3161
3317
|
this.modalService.openChartModal(chart);
|
|
@@ -3219,64 +3375,6 @@ class OverallAssessmentComponent {
|
|
|
3219
3375
|
}
|
|
3220
3376
|
return {};
|
|
3221
3377
|
}
|
|
3222
|
-
// Memoized status badge light mode classes
|
|
3223
|
-
getStatusBadgeClassLight() {
|
|
3224
|
-
const baseClass = 'px-4 py-2 rounded-xl border transition-all duration-300 backdrop-blur-md';
|
|
3225
|
-
const status = this.assessment().overallStatus || 'ON_TRACK';
|
|
3226
|
-
switch (status) {
|
|
3227
|
-
case 'ON_TRACK':
|
|
3228
|
-
return `${baseClass} bg-gradient-to-br from-blue-100/90 to-blue-50/90 text-blue-700 border-blue-200/50 shadow-[3px_3px_6px_rgba(163,163,163,0.25),-3px_-3px_6px_rgba(255,255,255,0.75)]`;
|
|
3229
|
-
case 'OVERACHIEVING':
|
|
3230
|
-
return `${baseClass} bg-gradient-to-br from-emerald-100/90 to-emerald-50/90 text-emerald-700 border-emerald-200/50 shadow-[3px_3px_6px_rgba(163,163,163,0.25),-3px_-3px_6px_rgba(255,255,255,0.75)]`;
|
|
3231
|
-
case 'AT_RISK':
|
|
3232
|
-
return `${baseClass} bg-gradient-to-br from-amber-100/90 to-amber-50/90 text-amber-700 border-amber-200/50 shadow-[3px_3px_6px_rgba(163,163,163,0.25),-3px_-3px_6px_rgba(255,255,255,0.75)]`;
|
|
3233
|
-
default:
|
|
3234
|
-
return `${baseClass} bg-gradient-to-br from-slate-100/90 to-slate-50/90 text-slate-700 border-slate-200/50 shadow-[3px_3px_6px_rgba(163,163,163,0.25),-3px_-3px_6px_rgba(255,255,255,0.75)]`;
|
|
3235
|
-
}
|
|
3236
|
-
}
|
|
3237
|
-
// Memoized status badge dark mode classes
|
|
3238
|
-
getStatusBadgeClassDark() {
|
|
3239
|
-
const baseClass = 'px-4 py-2 rounded-xl border transition-all duration-300 backdrop-blur-md';
|
|
3240
|
-
const status = this.assessment().overallStatus || 'ON_TRACK';
|
|
3241
|
-
switch (status) {
|
|
3242
|
-
case 'ON_TRACK':
|
|
3243
|
-
return `${baseClass} bg-gradient-to-r from-blue-500/20 to-blue-500/10 text-blue-400 border-blue-500/30 shadow-lg shadow-blue-500/20`;
|
|
3244
|
-
case 'OVERACHIEVING':
|
|
3245
|
-
return `${baseClass} bg-gradient-to-r from-emerald-500/20 to-emerald-500/10 text-emerald-400 border-emerald-500/30 shadow-lg shadow-emerald-500/20`;
|
|
3246
|
-
case 'AT_RISK':
|
|
3247
|
-
return `${baseClass} bg-gradient-to-r from-amber-500/20 to-amber-500/10 text-amber-400 border-amber-500/30 shadow-lg shadow-amber-500/20`;
|
|
3248
|
-
default:
|
|
3249
|
-
return `${baseClass} bg-gradient-to-r from-slate-500/20 to-slate-500/10 text-slate-400 border-slate-500/30 shadow-lg shadow-slate-500/20`;
|
|
3250
|
-
}
|
|
3251
|
-
}
|
|
3252
|
-
getStatusBadgeClass() {
|
|
3253
|
-
return this.isLightMode() ? this.getStatusBadgeClassLight() : this.getStatusBadgeClassDark();
|
|
3254
|
-
}
|
|
3255
|
-
getStatusBadgeStyle() {
|
|
3256
|
-
const status = this.assessment().overallStatus || 'ON_TRACK';
|
|
3257
|
-
if (status === 'AT_RISK') {
|
|
3258
|
-
return {
|
|
3259
|
-
animation: 'pulseSubtle 2s ease-in-out infinite'
|
|
3260
|
-
};
|
|
3261
|
-
}
|
|
3262
|
-
return {};
|
|
3263
|
-
}
|
|
3264
|
-
getStatusLabel() {
|
|
3265
|
-
return (this.assessment().overallStatus || '').replace(/_/g, ' ');
|
|
3266
|
-
}
|
|
3267
|
-
getStatusIcon() {
|
|
3268
|
-
const status = this.assessment().overallStatus || 'ON_TRACK';
|
|
3269
|
-
switch (status) {
|
|
3270
|
-
case 'OVERACHIEVING':
|
|
3271
|
-
return '↑';
|
|
3272
|
-
case 'ON_TRACK':
|
|
3273
|
-
return '→';
|
|
3274
|
-
case 'AT_RISK':
|
|
3275
|
-
return '⚠';
|
|
3276
|
-
default:
|
|
3277
|
-
return '•';
|
|
3278
|
-
}
|
|
3279
|
-
}
|
|
3280
3378
|
getRevenueStatusIcon() {
|
|
3281
3379
|
const metric = this.revenueMetric();
|
|
3282
3380
|
const status = metric?.status || 'ON_TRACK';
|
|
@@ -3352,8 +3450,8 @@ class OverallAssessmentComponent {
|
|
|
3352
3450
|
}
|
|
3353
3451
|
}
|
|
3354
3452
|
static { this.ɵfac = function OverallAssessmentComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || OverallAssessmentComponent)(); }; }
|
|
3355
|
-
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: OverallAssessmentComponent, selectors: [["symphiq-funnel-analysis-overall-assessment"]], inputs: { assessment: [1, "assessment"], revenueMetric: [1, "revenueMetric"], charts: [1, "charts"], metrics: [1, "metrics"], isLightMode: [1, "isLightMode"], isLoading: [1, "isLoading"], isCompactMode: [1, "isCompactMode"], isChartsLoading: [1, "isChartsLoading"] }, outputs: { scrollToSection: "scrollToSection" }, decls: 2, vars: 1, consts: [[1, "rounded-2xl", "p-4", "sm:p-6", "lg:p-8", "border", "shadow-xl", "backdrop-blur-lg", 3, "class"], [1, "rounded-2xl", "p-4", "sm:p-6", "lg:p-8", "border", "shadow-xl", "transition-all", "duration-500", "hover:shadow-2xl", "group", "backdrop-blur-lg", 3, "class"], [1, "rounded-2xl", "p-4", "sm:p-6", "lg:p-8", "border", "shadow-xl", "backdrop-blur-lg"], [1, "space-y-6"], [1, "flex", "items-start", "justify-between", "gap-4"], [1, "flex-1", "space-y-3"], [3, "width", "height", "isLightMode"], [1, "flex", "gap-3"], [1, "grid", "grid-cols-2", "gap-4"], [1, "space-y-2"], [1, "rounded-2xl", "p-4", "sm:p-6", "lg:p-8", "border", "shadow-xl", "transition-all", "duration-500", "hover:shadow-2xl", "group", "backdrop-blur-lg"], [1, "flex", "flex-col", "sm:flex-row", "items-start", "justify-between", "gap-4", "mb-4", "sm:mb-6"], [1, "flex-1"], [1, "text-2xl", "sm:text-3xl", "font-bold", "mb-2"], [1, "text-sm", "sm:text-base"], [1, "flex", "items-center", "gap-3", "sm:gap-4", "w-full", "sm:w-auto"], ["tooltipType", "
|
|
3356
|
-
i0.ɵɵconditionalCreate(0, OverallAssessmentComponent_Conditional_0_Template,
|
|
3453
|
+
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: OverallAssessmentComponent, selectors: [["symphiq-funnel-analysis-overall-assessment"]], inputs: { assessment: [1, "assessment"], revenueMetric: [1, "revenueMetric"], charts: [1, "charts"], metrics: [1, "metrics"], isLightMode: [1, "isLightMode"], isLoading: [1, "isLoading"], isCompactMode: [1, "isCompactMode"], isChartsLoading: [1, "isChartsLoading"] }, outputs: { scrollToSection: "scrollToSection" }, decls: 2, vars: 1, consts: [[1, "rounded-2xl", "p-4", "sm:p-6", "lg:p-8", "border", "shadow-xl", "backdrop-blur-lg", 3, "class"], [1, "rounded-2xl", "p-4", "sm:p-6", "lg:p-8", "border", "shadow-xl", "transition-all", "duration-500", "hover:shadow-2xl", "group", "backdrop-blur-lg", 3, "class"], [1, "rounded-2xl", "p-4", "sm:p-6", "lg:p-8", "border", "shadow-xl", "backdrop-blur-lg"], [1, "space-y-6"], [1, "flex", "items-start", "justify-between", "gap-4"], [1, "flex-1", "space-y-3"], [3, "width", "height", "isLightMode"], [1, "flex", "gap-3", "justify-end"], [1, "grid", "grid-cols-2", "gap-4"], [1, "space-y-2"], [1, "rounded-2xl", "p-4", "sm:p-6", "lg:p-8", "border", "shadow-xl", "transition-all", "duration-500", "hover:shadow-2xl", "group", "backdrop-blur-lg"], [1, "flex", "flex-col", "sm:flex-row", "items-start", "justify-between", "gap-4", "mb-4", "sm:mb-6"], [1, "flex-1"], [1, "text-2xl", "sm:text-3xl", "font-bold", "mb-2"], [1, "text-sm", "sm:text-base"], [1, "flex", "items-center", "gap-3", "sm:gap-4", "w-full", "sm:w-auto", "justify-end"], ["tooltipType", "badge", 1, "flex-1", "sm:flex-initial", "transition-all", "duration-300", "hover:scale-110", 3, "libSymphiqTooltip", "tooltipPosition"], [1, "text-xs", "font-semibold", "uppercase", "tracking-wider", "mb-1"], [1, "text-3xl", "sm:text-4xl", "font-bold"], [1, "flex", "flex-wrap", "gap-4", "mb-6", "sm:mb-8"], [1, "mb-4", "sm:mb-6"], [1, "grid", "grid-cols-1", "md:grid-cols-2", "gap-4", "sm:gap-6"], [1, "rounded-xl", "p-4", "sm:p-6", "border", "transition-all", "duration-300", "hover:scale-105", "hover:shadow-xl"], [1, "flex", "items-center", "gap-3", "mb-3"], [1, "w-8", "h-8", "sm:w-10", "sm:h-10", "rounded-lg", "flex", "items-center", "justify-center", "flex-shrink-0"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-5", "h-5", "sm:w-6", "sm:h-6"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"], [1, "text-base", "sm:text-lg", "font-semibold"], [1, "text-xs", "sm:text-sm", "leading-relaxed"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M13 7h8m0 0v8m0-8l-8 8-4-4-6 6"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"], [1, "mt-6", "sm:mt-8"], [1, "flex-shrink-0", "rounded-xl", "p-6", "sm:p-8", "border-2", "transition-all", "duration-500", "hover:scale-[1.01]", 3, "class"], [1, "flex-1", "min-w-[300px]", "rounded-xl", "p-4", "sm:p-6", "border", "transition-all", "duration-300", "hover:shadow-xl", "hover:scale-[1.01]", "group"], [1, "text-sm", "sm:text-base", "leading-relaxed"], [1, "flex-shrink-0", "rounded-xl", "p-6", "sm:p-8", "border-2", "transition-all", "duration-500", "hover:scale-[1.01]"], [1, "w-10", "h-10", "sm:w-12", "sm:h-12", "rounded-lg", "flex", "items-center", "justify-center", "flex-shrink-0"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-6", "h-6", "sm:w-7", "sm:h-7"], ["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, "min-w-0", "flex-1"], [1, "text-xs", "sm:text-sm", "font-semibold", "uppercase", "tracking-wider"], ["tooltipType", "metric", 1, "text-2xl", "sm:text-3xl", "lg:text-4xl", "font-bold", "truncate", "transition-all", "duration-300", "hover:scale-105", 3, "libSymphiqTooltip", "tooltipPosition"], [1, "flex", "flex-col", "gap-2", "mb-3"], [1, "flex", "flex-col", "sm:flex-row", "sm:items-center", "gap-2", "sm:gap-4"], ["tooltipType", "trend", 1, "flex", "items-center", "gap-2", 3, "libSymphiqTooltip", "tooltipPosition"], ["fill", "currentColor", "viewBox", "0 0 20 20", 1, "w-4", "h-4", "flex-shrink-0"], ["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"], [1, "font-semibold", "text-base"], [1, "text-xs"], [1, "hidden", "sm:block", "h-6", "w-px", "bg-slate-600"], ["tooltipType", "status", 3, "libSymphiqTooltip", "tooltipPosition"], [1, "font-semibold", "text-sm"], ["tooltipType", "status", 1, "flex", "items-center", "gap-2", 3, "libSymphiqTooltip", "tooltipPosition"], ["tooltipType", "status", 1, "inline-flex", "items-center", "gap-2", "px-3", "sm:px-4", "py-1.5", "sm:py-2", "rounded-lg", "font-bold", "text-base", "sm:text-lg", "transition-all", "duration-300", 3, "ngStyle", "libSymphiqTooltip", "tooltipPosition"], [1, "text-lg"], [1, "rounded-xl", "p-6", "sm:p-8", "mb-6", "sm:mb-8", "border-2", "transition-all", "duration-500", "hover:scale-[1.01]", 3, "class"], [1, "rounded-xl", "p-4", "sm:p-6", "mb-4", "sm:mb-6", "border", "transition-all", "duration-300", "hover:shadow-xl", "hover:scale-[1.01]", "group"], [1, "rounded-xl", "p-6", "sm:p-8", "mb-6", "sm:mb-8", "border-2", "transition-all", "duration-500", "hover:scale-[1.01]"], [1, "flex", "flex-col", "md:flex-row", "items-start", "md:items-center", "gap-4", "md:gap-0"], [1, "flex-1", "w-full"], [1, "flex", "flex-col", "gap-2", "mt-4"], ["fill", "currentColor", "viewBox", "0 0 20 20", 1, "w-4", "h-4", "sm:w-5", "sm:h-5", "flex-shrink-0"], [1, "font-semibold", "text-base", "sm:text-lg"], [1, "text-xs", "sm:text-sm"], [1, "font-semibold", "text-sm", "sm:text-base"], [1, "w-full", "md:w-auto", "md:text-right", "md:ml-4"], [1, "inline-flex", "items-center", "gap-2", "px-3", "sm:px-4", "py-1.5", "sm:py-2", "rounded-lg", "font-bold", "text-base", "sm:text-lg", "transition-all", "duration-300", 3, "ngStyle"], [1, "mt-2", "text-xs", "sm:text-sm"], [1, "grid", "grid-cols-1", "lg:grid-cols-2", "gap-4"], [3, "chart", "isLightMode", "isCompactMode", "collapsibleIn", "isLoading"], [3, "chartClick", "chart", "isLightMode", "isCompactMode", "collapsibleIn", "isLoading"], [3, "scrollToCompetitive", "metrics", "isLightMode", "isCompactMode"]], template: function OverallAssessmentComponent_Template(rf, ctx) { if (rf & 1) {
|
|
3454
|
+
i0.ɵɵconditionalCreate(0, OverallAssessmentComponent_Conditional_0_Template, 12, 15, "div", 0)(1, OverallAssessmentComponent_Conditional_1_Template, 54, 63, "div", 1);
|
|
3357
3455
|
} if (rf & 2) {
|
|
3358
3456
|
i0.ɵɵconditional(ctx.isLoading() ? 0 : 1);
|
|
3359
3457
|
} }, dependencies: [CommonModule, i1.NgStyle, ChartContainerComponent, TooltipDirective, SkeletonLoaderComponent, CompetitivePositioningSummaryComponent], encapsulation: 2, changeDetection: 0 }); }
|
|
@@ -3374,8 +3472,7 @@ class OverallAssessmentComponent {
|
|
|
3374
3472
|
<symphiq-skeleton-loader [width]="'60%'" [height]="'32px'" [isLightMode]="isLightMode()"></symphiq-skeleton-loader>
|
|
3375
3473
|
<symphiq-skeleton-loader [width]="'80%'" [height]="'16px'" [isLightMode]="isLightMode()"></symphiq-skeleton-loader>
|
|
3376
3474
|
</div>
|
|
3377
|
-
<div class="flex gap-3">
|
|
3378
|
-
<symphiq-skeleton-loader [width]="'100px'" [height]="'70px'" [isLightMode]="isLightMode()"></symphiq-skeleton-loader>
|
|
3475
|
+
<div class="flex gap-3 justify-end">
|
|
3379
3476
|
<symphiq-skeleton-loader [width]="'100px'" [height]="'70px'" [isLightMode]="isLightMode()"></symphiq-skeleton-loader>
|
|
3380
3477
|
</div>
|
|
3381
3478
|
</div>
|
|
@@ -3397,20 +3494,7 @@ class OverallAssessmentComponent {
|
|
|
3397
3494
|
<h2 [class]="titleClass()" class="text-2xl sm:text-3xl font-bold mb-2">Overall Performance</h2>
|
|
3398
3495
|
<p [class]="subtitleClass()" class="text-sm sm:text-base">{{ assessment().targetPacingStatus }}</p>
|
|
3399
3496
|
</div>
|
|
3400
|
-
<div class="flex items-center gap-3 sm:gap-4 w-full sm:w-auto">
|
|
3401
|
-
<div
|
|
3402
|
-
[class]="statusBadgeClass()"
|
|
3403
|
-
[ngStyle]="getStatusBadgeStyle()"
|
|
3404
|
-
class="text-center flex-1 sm:flex-initial transition-all duration-300 hover:scale-105"
|
|
3405
|
-
[libSymphiqTooltip]="statusBadgeTooltip()"
|
|
3406
|
-
tooltipType="status"
|
|
3407
|
-
[tooltipPosition]="'bottom'">
|
|
3408
|
-
<div [class]="badgeLabelClass()" class="text-xs font-semibold uppercase tracking-wider mb-1">Status</div>
|
|
3409
|
-
<div class="text-base sm:text-lg font-bold flex items-center justify-center gap-2">
|
|
3410
|
-
<span class="text-lg">{{ getStatusIcon() }}</span>
|
|
3411
|
-
<span>{{ statusLabel() }}</span>
|
|
3412
|
-
</div>
|
|
3413
|
-
</div>
|
|
3497
|
+
<div class="flex items-center gap-3 sm:gap-4 w-full sm:w-auto justify-end">
|
|
3414
3498
|
<div
|
|
3415
3499
|
[class]="gradeBadgeClass()"
|
|
3416
3500
|
[class.animate-pulse]="shouldPulseGrade()"
|
|
@@ -3448,7 +3532,11 @@ class OverallAssessmentComponent {
|
|
|
3448
3532
|
</div>
|
|
3449
3533
|
<div class="flex flex-col gap-2 mb-3">
|
|
3450
3534
|
<div class="flex flex-col sm:flex-row sm:items-center gap-2 sm:gap-4">
|
|
3451
|
-
<div
|
|
3535
|
+
<div
|
|
3536
|
+
class="flex items-center gap-2"
|
|
3537
|
+
[libSymphiqTooltip]="revenueTrendTooltip()"
|
|
3538
|
+
tooltipType="trend"
|
|
3539
|
+
[tooltipPosition]="'top'">
|
|
3452
3540
|
<svg [class]="trendIconClass()" class="w-4 h-4 flex-shrink-0" fill="currentColor" viewBox="0 0 20 20">
|
|
3453
3541
|
<path 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" />
|
|
3454
3542
|
</svg>
|
|
@@ -3456,13 +3544,20 @@ class OverallAssessmentComponent {
|
|
|
3456
3544
|
<span [class]="badgeLabelClass()" class="text-xs">vs last year</span>
|
|
3457
3545
|
</div>
|
|
3458
3546
|
<div class="hidden sm:block h-6 w-px bg-slate-600"></div>
|
|
3459
|
-
<div
|
|
3547
|
+
<div
|
|
3548
|
+
[libSymphiqTooltip]="revenueStatusTooltip()"
|
|
3549
|
+
tooltipType="status"
|
|
3550
|
+
[tooltipPosition]="'top'">
|
|
3460
3551
|
<span [class]="badgeLabelClass()" class="text-xs">Target: </span>
|
|
3461
3552
|
<span [class]="titleClass()" class="font-semibold text-sm">{{ formattedRevenueTarget() }}</span>
|
|
3462
3553
|
</div>
|
|
3463
3554
|
</div>
|
|
3464
3555
|
@if (hasRevenuePacing()) {
|
|
3465
|
-
<div
|
|
3556
|
+
<div
|
|
3557
|
+
class="flex items-center gap-2"
|
|
3558
|
+
[libSymphiqTooltip]="revenueStatusTooltip()"
|
|
3559
|
+
tooltipType="status"
|
|
3560
|
+
[tooltipPosition]="'top'">
|
|
3466
3561
|
<span [class]="badgeLabelClass()" class="text-xs">2025 Pacing: </span>
|
|
3467
3562
|
<span [class]="titleClass()" class="font-semibold text-sm">{{ formattedRevenuePacing() }}</span>
|
|
3468
3563
|
</div>
|
|
@@ -3511,7 +3606,11 @@ class OverallAssessmentComponent {
|
|
|
3511
3606
|
</div>
|
|
3512
3607
|
<div class="flex flex-col gap-2 mt-4">
|
|
3513
3608
|
<div class="flex flex-col sm:flex-row sm:items-center gap-2 sm:gap-4">
|
|
3514
|
-
<div
|
|
3609
|
+
<div
|
|
3610
|
+
class="flex items-center gap-2"
|
|
3611
|
+
[libSymphiqTooltip]="revenueTrendTooltip()"
|
|
3612
|
+
tooltipType="trend"
|
|
3613
|
+
[tooltipPosition]="'top'">
|
|
3515
3614
|
<svg [class]="trendIconClass()" class="w-4 h-4 sm:w-5 sm:h-5 flex-shrink-0" fill="currentColor" viewBox="0 0 20 20">
|
|
3516
3615
|
<path 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" />
|
|
3517
3616
|
</svg>
|
|
@@ -3519,13 +3618,20 @@ class OverallAssessmentComponent {
|
|
|
3519
3618
|
<span [class]="badgeLabelClass()" class="text-xs sm:text-sm">vs last year</span>
|
|
3520
3619
|
</div>
|
|
3521
3620
|
<div class="hidden sm:block h-6 w-px bg-slate-600"></div>
|
|
3522
|
-
<div
|
|
3621
|
+
<div
|
|
3622
|
+
[libSymphiqTooltip]="revenueStatusTooltip()"
|
|
3623
|
+
tooltipType="status"
|
|
3624
|
+
[tooltipPosition]="'top'">
|
|
3523
3625
|
<span [class]="badgeLabelClass()" class="text-xs sm:text-sm">Target: </span>
|
|
3524
3626
|
<span [class]="titleClass()" class="font-semibold text-sm sm:text-base">{{ formattedRevenueTarget() }}</span>
|
|
3525
3627
|
</div>
|
|
3526
3628
|
</div>
|
|
3527
3629
|
@if (hasRevenuePacing()) {
|
|
3528
|
-
<div
|
|
3630
|
+
<div
|
|
3631
|
+
class="flex items-center gap-2"
|
|
3632
|
+
[libSymphiqTooltip]="revenueStatusTooltip()"
|
|
3633
|
+
tooltipType="status"
|
|
3634
|
+
[tooltipPosition]="'top'">
|
|
3529
3635
|
<span [class]="badgeLabelClass()" class="text-xs sm:text-sm">2025 Pacing: </span>
|
|
3530
3636
|
<span [class]="titleClass()" class="font-semibold text-sm sm:text-base">{{ formattedRevenuePacing() }}</span>
|
|
3531
3637
|
</div>
|
|
@@ -3624,7 +3730,7 @@ class OverallAssessmentComponent {
|
|
|
3624
3730
|
`,
|
|
3625
3731
|
}]
|
|
3626
3732
|
}], null, { assessment: [{ type: i0.Input, args: [{ isSignal: true, alias: "assessment", required: false }] }], revenueMetric: [{ type: i0.Input, args: [{ isSignal: true, alias: "revenueMetric", required: false }] }], charts: [{ type: i0.Input, args: [{ isSignal: true, alias: "charts", required: false }] }], metrics: [{ type: i0.Input, args: [{ isSignal: true, alias: "metrics", required: false }] }], isLightMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "isLightMode", required: false }] }], isLoading: [{ type: i0.Input, args: [{ isSignal: true, alias: "isLoading", required: false }] }], isCompactMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "isCompactMode", required: false }] }], isChartsLoading: [{ type: i0.Input, args: [{ isSignal: true, alias: "isChartsLoading", required: false }] }], scrollToSection: [{ type: i0.Output, args: ["scrollToSection"] }] }); })();
|
|
3627
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(OverallAssessmentComponent, { className: "OverallAssessmentComponent", filePath: "lib/components/funnel-analysis-dashboard/overall-assessment.component.ts", lineNumber:
|
|
3733
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(OverallAssessmentComponent, { className: "OverallAssessmentComponent", filePath: "lib/components/funnel-analysis-dashboard/overall-assessment.component.ts", lineNumber: 282 }); })();
|
|
3628
3734
|
|
|
3629
3735
|
const _c0$8 = () => [1, 2, 3];
|
|
3630
3736
|
const _c1$2 = () => [1, 2, 3, 4];
|
|
@@ -6206,7 +6312,7 @@ class MetricCardComponent {
|
|
|
6206
6312
|
const _c0$7 = () => [1, 2, 3];
|
|
6207
6313
|
const _c1$1 = (a0, a1, a2) => [a0, a1, a2];
|
|
6208
6314
|
const _c2$1 = (a0, a1) => [a0, a1];
|
|
6209
|
-
const _forTrack0$
|
|
6315
|
+
const _forTrack0$7 = ($index, $item) => $item.metric;
|
|
6210
6316
|
const _forTrack1$1 = ($index, $item) => $item.dimensionValue;
|
|
6211
6317
|
function BreakdownSectionComponent_Conditional_0_For_7_For_4_Template(rf, ctx) { if (rf & 1) {
|
|
6212
6318
|
i0.ɵɵelementStart(0, "div", 7);
|
|
@@ -6529,7 +6635,7 @@ function BreakdownSectionComponent_Conditional_1_Template(rf, ctx) { if (rf & 1)
|
|
|
6529
6635
|
i0.ɵɵelementEnd()();
|
|
6530
6636
|
i0.ɵɵconditionalCreate(6, BreakdownSectionComponent_Conditional_1_Conditional_6_Template, 3, 0, "div", 11);
|
|
6531
6637
|
i0.ɵɵelementStart(7, "div", 12);
|
|
6532
|
-
i0.ɵɵrepeaterCreate(8, BreakdownSectionComponent_Conditional_1_For_9_Template, 28, 18, "div", 13, _forTrack0$
|
|
6638
|
+
i0.ɵɵrepeaterCreate(8, BreakdownSectionComponent_Conditional_1_For_9_Template, 28, 18, "div", 13, _forTrack0$7);
|
|
6533
6639
|
i0.ɵɵelementEnd()();
|
|
6534
6640
|
} if (rf & 2) {
|
|
6535
6641
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
@@ -10857,63 +10963,697 @@ class NarrativeTooltipComponent {
|
|
|
10857
10963
|
}], null, { content: [{ type: i0.Input, args: [{ isSignal: true, alias: "content", required: true }] }], isLightMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "isLightMode", required: false }] }] }); })();
|
|
10858
10964
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(NarrativeTooltipComponent, { className: "NarrativeTooltipComponent", filePath: "lib/components/funnel-analysis-dashboard/tooltip/narrative-tooltip.component.ts", lineNumber: 25 }); })();
|
|
10859
10965
|
|
|
10860
|
-
const
|
|
10861
|
-
function
|
|
10862
|
-
i0.ɵɵ
|
|
10863
|
-
|
|
10864
|
-
|
|
10865
|
-
i0.ɵɵ
|
|
10866
|
-
|
|
10867
|
-
|
|
10868
|
-
i0.ɵɵ
|
|
10869
|
-
|
|
10870
|
-
|
|
10871
|
-
i0.ɵɵ
|
|
10872
|
-
|
|
10873
|
-
|
|
10874
|
-
i0.ɵɵ
|
|
10875
|
-
|
|
10876
|
-
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
10877
|
-
i0.ɵɵproperty("content", ctx_r1.statusContent())("isLightMode", ctx_r1.isLightMode());
|
|
10878
|
-
} }
|
|
10879
|
-
function TooltipContainerComponent_Conditional_0_Case_4_Template(rf, ctx) { if (rf & 1) {
|
|
10880
|
-
i0.ɵɵconditionalCreate(0, TooltipContainerComponent_Conditional_0_Case_4_Conditional_0_Template, 1, 2, "symphiq-status-badge-tooltip", 6);
|
|
10881
|
-
} if (rf & 2) {
|
|
10882
|
-
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
10883
|
-
i0.ɵɵconditional(ctx_r1.statusContent() ? 0 : -1);
|
|
10884
|
-
} }
|
|
10885
|
-
function TooltipContainerComponent_Conditional_0_Case_5_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
10886
|
-
i0.ɵɵelement(0, "symphiq-trend-indicator-tooltip", 6);
|
|
10887
|
-
} if (rf & 2) {
|
|
10888
|
-
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
10889
|
-
i0.ɵɵproperty("content", ctx_r1.trendContent())("isLightMode", ctx_r1.isLightMode());
|
|
10890
|
-
} }
|
|
10891
|
-
function TooltipContainerComponent_Conditional_0_Case_5_Template(rf, ctx) { if (rf & 1) {
|
|
10892
|
-
i0.ɵɵconditionalCreate(0, TooltipContainerComponent_Conditional_0_Case_5_Conditional_0_Template, 1, 2, "symphiq-trend-indicator-tooltip", 6);
|
|
10893
|
-
} if (rf & 2) {
|
|
10894
|
-
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
10895
|
-
i0.ɵɵconditional(ctx_r1.trendContent() ? 0 : -1);
|
|
10896
|
-
} }
|
|
10897
|
-
function TooltipContainerComponent_Conditional_0_Case_6_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
10898
|
-
i0.ɵɵelement(0, "symphiq-priority-badge-tooltip", 6);
|
|
10899
|
-
} if (rf & 2) {
|
|
10900
|
-
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
10901
|
-
i0.ɵɵproperty("content", ctx_r1.priorityContent())("isLightMode", ctx_r1.isLightMode());
|
|
10902
|
-
} }
|
|
10903
|
-
function TooltipContainerComponent_Conditional_0_Case_6_Template(rf, ctx) { if (rf & 1) {
|
|
10904
|
-
i0.ɵɵconditionalCreate(0, TooltipContainerComponent_Conditional_0_Case_6_Conditional_0_Template, 1, 2, "symphiq-priority-badge-tooltip", 6);
|
|
10966
|
+
const _forTrack0$6 = ($index, $item) => $item.name;
|
|
10967
|
+
function CompetitiveStatusTooltipComponent_Conditional_6_For_6_Template(rf, ctx) { if (rf & 1) {
|
|
10968
|
+
i0.ɵɵelementStart(0, "div", 7)(1, "div", 8)(2, "div", 9);
|
|
10969
|
+
i0.ɵɵelement(3, "div", 10);
|
|
10970
|
+
i0.ɵɵelementStart(4, "span", 11);
|
|
10971
|
+
i0.ɵɵtext(5);
|
|
10972
|
+
i0.ɵɵelementEnd()();
|
|
10973
|
+
i0.ɵɵelementStart(6, "span", 12);
|
|
10974
|
+
i0.ɵɵtext(7);
|
|
10975
|
+
i0.ɵɵelementEnd()();
|
|
10976
|
+
i0.ɵɵelementStart(8, "div", 13)(9, "span", 14);
|
|
10977
|
+
i0.ɵɵtext(10, "Benchmark:");
|
|
10978
|
+
i0.ɵɵelementEnd();
|
|
10979
|
+
i0.ɵɵelementStart(11, "span", 15);
|
|
10980
|
+
i0.ɵɵtext(12);
|
|
10981
|
+
i0.ɵɵelementEnd()()();
|
|
10905
10982
|
} if (rf & 2) {
|
|
10983
|
+
const metric_r1 = ctx.$implicit;
|
|
10906
10984
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
10907
|
-
i0.ɵɵ
|
|
10985
|
+
i0.ɵɵclassProp("animate-pulse", metric_r1.status === "LAGGING");
|
|
10986
|
+
i0.ɵɵproperty("ngClass", ctx_r1.getMetricCardClass(metric_r1.status));
|
|
10987
|
+
i0.ɵɵadvance(3);
|
|
10988
|
+
i0.ɵɵproperty("ngClass", ctx_r1.getStatusDotClass(metric_r1.status));
|
|
10989
|
+
i0.ɵɵadvance();
|
|
10990
|
+
i0.ɵɵproperty("ngClass", ctx_r1.getMetricNameClass(metric_r1.status));
|
|
10991
|
+
i0.ɵɵadvance();
|
|
10992
|
+
i0.ɵɵtextInterpolate1(" ", metric_r1.name, " ");
|
|
10993
|
+
i0.ɵɵadvance();
|
|
10994
|
+
i0.ɵɵproperty("ngClass", ctx_r1.getValueClass(metric_r1.status));
|
|
10995
|
+
i0.ɵɵadvance();
|
|
10996
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.formatValue(metric_r1.projectedValue, metric_r1.unit), " ");
|
|
10997
|
+
i0.ɵɵadvance(2);
|
|
10998
|
+
i0.ɵɵproperty("ngClass", ctx_r1.labelClass());
|
|
10999
|
+
i0.ɵɵadvance(2);
|
|
11000
|
+
i0.ɵɵproperty("ngClass", ctx_r1.subValueClass());
|
|
11001
|
+
i0.ɵɵadvance();
|
|
11002
|
+
i0.ɵɵtextInterpolate2(" ", ctx_r1.formatValue(metric_r1.benchmarkRange.min, metric_r1.unit), " - ", ctx_r1.formatValue(metric_r1.benchmarkRange.max, metric_r1.unit), " ");
|
|
10908
11003
|
} }
|
|
10909
|
-
function
|
|
10910
|
-
i0.ɵɵelement(0, "
|
|
11004
|
+
function CompetitiveStatusTooltipComponent_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
11005
|
+
i0.ɵɵelement(0, "div", 3);
|
|
11006
|
+
i0.ɵɵelementStart(1, "div")(2, "div", 4);
|
|
11007
|
+
i0.ɵɵtext(3);
|
|
11008
|
+
i0.ɵɵelementEnd();
|
|
11009
|
+
i0.ɵɵelementStart(4, "div", 5);
|
|
11010
|
+
i0.ɵɵrepeaterCreate(5, CompetitiveStatusTooltipComponent_Conditional_6_For_6_Template, 13, 12, "div", 6, _forTrack0$6);
|
|
11011
|
+
i0.ɵɵelementEnd()();
|
|
10911
11012
|
} if (rf & 2) {
|
|
10912
|
-
const ctx_r1 = i0.ɵɵnextContext(
|
|
10913
|
-
i0.ɵɵproperty("
|
|
11013
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
11014
|
+
i0.ɵɵproperty("ngClass", ctx_r1.separatorClass());
|
|
11015
|
+
i0.ɵɵadvance(2);
|
|
11016
|
+
i0.ɵɵproperty("ngClass", ctx_r1.labelClass());
|
|
11017
|
+
i0.ɵɵadvance();
|
|
11018
|
+
i0.ɵɵtextInterpolate2(" ", ctx_r1.content().metrics.length, " Metric", ctx_r1.content().metrics.length > 1 ? "s" : "", " ");
|
|
11019
|
+
i0.ɵɵadvance(2);
|
|
11020
|
+
i0.ɵɵrepeater(ctx_r1.content().metrics);
|
|
10914
11021
|
} }
|
|
10915
|
-
|
|
10916
|
-
|
|
11022
|
+
class CompetitiveStatusTooltipComponent {
|
|
11023
|
+
constructor() {
|
|
11024
|
+
this.content = input.required(...(ngDevMode ? [{ debugName: "content" }] : []));
|
|
11025
|
+
this.isLightMode = input(false, ...(ngDevMode ? [{ debugName: "isLightMode" }] : []));
|
|
11026
|
+
this.titleClass = computed(() => this.isLightMode() ? 'text-slate-700' : 'text-slate-200', ...(ngDevMode ? [{ debugName: "titleClass" }] : []));
|
|
11027
|
+
this.labelClass = computed(() => this.isLightMode() ? 'text-slate-500' : 'text-slate-400', ...(ngDevMode ? [{ debugName: "labelClass" }] : []));
|
|
11028
|
+
this.textClass = computed(() => this.isLightMode() ? 'text-slate-600' : 'text-slate-300', ...(ngDevMode ? [{ debugName: "textClass" }] : []));
|
|
11029
|
+
this.valueClass = computed(() => this.isLightMode() ? 'text-slate-900' : 'text-white', ...(ngDevMode ? [{ debugName: "valueClass" }] : []));
|
|
11030
|
+
this.subValueClass = computed(() => this.isLightMode() ? 'text-slate-700' : 'text-slate-200', ...(ngDevMode ? [{ debugName: "subValueClass" }] : []));
|
|
11031
|
+
this.metricNameClass = computed(() => this.isLightMode() ? 'text-slate-800' : 'text-slate-100', ...(ngDevMode ? [{ debugName: "metricNameClass" }] : []));
|
|
11032
|
+
this.metricCardClass = computed(() => this.isLightMode() ? 'bg-slate-50 border border-slate-200' : 'bg-slate-700/50 border border-slate-600', ...(ngDevMode ? [{ debugName: "metricCardClass" }] : []));
|
|
11033
|
+
this.separatorClass = computed(() => this.isLightMode() ? 'bg-slate-200' : 'bg-slate-600', ...(ngDevMode ? [{ debugName: "separatorClass" }] : []));
|
|
11034
|
+
this.statusLabel = computed(() => {
|
|
11035
|
+
const status = this.content().status;
|
|
11036
|
+
switch (status) {
|
|
11037
|
+
case 'LEADING':
|
|
11038
|
+
return 'Leading';
|
|
11039
|
+
case 'COMPETITIVE':
|
|
11040
|
+
return 'Competitive';
|
|
11041
|
+
case 'LAGGING':
|
|
11042
|
+
return 'Lagging';
|
|
11043
|
+
default:
|
|
11044
|
+
return status;
|
|
11045
|
+
}
|
|
11046
|
+
}, ...(ngDevMode ? [{ debugName: "statusLabel" }] : []));
|
|
11047
|
+
}
|
|
11048
|
+
getStatusDotClass(status) {
|
|
11049
|
+
if (!status)
|
|
11050
|
+
return this.isLightMode() ? 'bg-slate-400' : 'bg-slate-500';
|
|
11051
|
+
switch (status) {
|
|
11052
|
+
case 'LEADING':
|
|
11053
|
+
return this.isLightMode() ? 'bg-emerald-500' : 'bg-emerald-400';
|
|
11054
|
+
case 'COMPETITIVE':
|
|
11055
|
+
return this.isLightMode() ? 'bg-blue-500' : 'bg-blue-400';
|
|
11056
|
+
case 'LAGGING':
|
|
11057
|
+
return this.isLightMode() ? 'bg-orange-500' : 'bg-orange-400';
|
|
11058
|
+
default:
|
|
11059
|
+
return this.isLightMode() ? 'bg-slate-400' : 'bg-slate-500';
|
|
11060
|
+
}
|
|
11061
|
+
}
|
|
11062
|
+
getMetricCardClass(status) {
|
|
11063
|
+
if (!status)
|
|
11064
|
+
return this.metricCardClass();
|
|
11065
|
+
if (this.isLightMode()) {
|
|
11066
|
+
switch (status) {
|
|
11067
|
+
case 'LEADING':
|
|
11068
|
+
return 'bg-emerald-50/50 border border-emerald-200/50';
|
|
11069
|
+
case 'COMPETITIVE':
|
|
11070
|
+
return 'bg-blue-50/50 border border-blue-200/50';
|
|
11071
|
+
case 'LAGGING':
|
|
11072
|
+
return 'bg-orange-50/50 border border-orange-200/50';
|
|
11073
|
+
default:
|
|
11074
|
+
return 'bg-slate-50 border border-slate-200';
|
|
11075
|
+
}
|
|
11076
|
+
}
|
|
11077
|
+
else {
|
|
11078
|
+
switch (status) {
|
|
11079
|
+
case 'LEADING':
|
|
11080
|
+
return 'bg-emerald-500/10 border border-emerald-500/20';
|
|
11081
|
+
case 'COMPETITIVE':
|
|
11082
|
+
return 'bg-blue-500/10 border border-blue-500/20';
|
|
11083
|
+
case 'LAGGING':
|
|
11084
|
+
return 'bg-orange-500/10 border border-orange-500/20';
|
|
11085
|
+
default:
|
|
11086
|
+
return 'bg-slate-700/50 border border-slate-600';
|
|
11087
|
+
}
|
|
11088
|
+
}
|
|
11089
|
+
}
|
|
11090
|
+
getMetricNameClass(status) {
|
|
11091
|
+
if (!status)
|
|
11092
|
+
return this.metricNameClass();
|
|
11093
|
+
if (this.isLightMode()) {
|
|
11094
|
+
switch (status) {
|
|
11095
|
+
case 'LEADING':
|
|
11096
|
+
return 'text-emerald-800';
|
|
11097
|
+
case 'COMPETITIVE':
|
|
11098
|
+
return 'text-blue-800';
|
|
11099
|
+
case 'LAGGING':
|
|
11100
|
+
return 'text-orange-800';
|
|
11101
|
+
default:
|
|
11102
|
+
return 'text-slate-800';
|
|
11103
|
+
}
|
|
11104
|
+
}
|
|
11105
|
+
else {
|
|
11106
|
+
switch (status) {
|
|
11107
|
+
case 'LEADING':
|
|
11108
|
+
return 'text-emerald-100';
|
|
11109
|
+
case 'COMPETITIVE':
|
|
11110
|
+
return 'text-blue-100';
|
|
11111
|
+
case 'LAGGING':
|
|
11112
|
+
return 'text-orange-100';
|
|
11113
|
+
default:
|
|
11114
|
+
return 'text-slate-100';
|
|
11115
|
+
}
|
|
11116
|
+
}
|
|
11117
|
+
}
|
|
11118
|
+
getValueClass(status) {
|
|
11119
|
+
if (!status)
|
|
11120
|
+
return this.valueClass();
|
|
11121
|
+
if (this.isLightMode()) {
|
|
11122
|
+
switch (status) {
|
|
11123
|
+
case 'LEADING':
|
|
11124
|
+
return 'text-emerald-900';
|
|
11125
|
+
case 'COMPETITIVE':
|
|
11126
|
+
return 'text-blue-900';
|
|
11127
|
+
case 'LAGGING':
|
|
11128
|
+
return 'text-orange-900';
|
|
11129
|
+
default:
|
|
11130
|
+
return 'text-slate-900';
|
|
11131
|
+
}
|
|
11132
|
+
}
|
|
11133
|
+
else {
|
|
11134
|
+
switch (status) {
|
|
11135
|
+
case 'LEADING':
|
|
11136
|
+
return 'text-emerald-50';
|
|
11137
|
+
case 'COMPETITIVE':
|
|
11138
|
+
return 'text-blue-50';
|
|
11139
|
+
case 'LAGGING':
|
|
11140
|
+
return 'text-orange-50';
|
|
11141
|
+
default:
|
|
11142
|
+
return 'text-white';
|
|
11143
|
+
}
|
|
11144
|
+
}
|
|
11145
|
+
}
|
|
11146
|
+
formatValue(value, unit) {
|
|
11147
|
+
// Handle currency
|
|
11148
|
+
if (unit === 'currency') {
|
|
11149
|
+
if (value >= 1000000) {
|
|
11150
|
+
return `$${(value / 1000000).toFixed(1)}M`;
|
|
11151
|
+
}
|
|
11152
|
+
else if (value >= 1000) {
|
|
11153
|
+
return `$${(value / 1000).toFixed(1)}K`;
|
|
11154
|
+
}
|
|
11155
|
+
return `$${value.toLocaleString('en-US', { maximumFractionDigits: 0 })}`;
|
|
11156
|
+
}
|
|
11157
|
+
// Handle percentage
|
|
11158
|
+
if (unit === 'percentage') {
|
|
11159
|
+
if (value < 1) {
|
|
11160
|
+
return `${(value * 100).toFixed(2)}%`;
|
|
11161
|
+
}
|
|
11162
|
+
return `${value.toFixed(2)}%`;
|
|
11163
|
+
}
|
|
11164
|
+
// Handle count (default)
|
|
11165
|
+
if (value >= 1000000) {
|
|
11166
|
+
return `${(value / 1000000).toFixed(1)}M`;
|
|
11167
|
+
}
|
|
11168
|
+
else if (value >= 1000) {
|
|
11169
|
+
return `${(value / 1000).toFixed(1)}K`;
|
|
11170
|
+
}
|
|
11171
|
+
return value.toLocaleString();
|
|
11172
|
+
}
|
|
11173
|
+
static { this.ɵfac = function CompetitiveStatusTooltipComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || CompetitiveStatusTooltipComponent)(); }; }
|
|
11174
|
+
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CompetitiveStatusTooltipComponent, selectors: [["symphiq-competitive-status-tooltip"]], inputs: { content: [1, "content"], isLightMode: [1, "isLightMode"] }, decls: 7, vars: 5, consts: [[1, "space-y-2"], [1, "font-semibold", "text-xs", "uppercase", "tracking-wide", "mb-0.5", 3, "ngClass"], [1, "text-xs", "leading-snug", 3, "ngClass"], [1, "h-px", 3, "ngClass"], [1, "text-xs", "font-semibold", "mb-1.5", 3, "ngClass"], [1, "space-y-1", "max-h-48", "overflow-y-auto"], [1, "rounded", "px-2", "py-1", 3, "ngClass", "animate-pulse"], [1, "rounded", "px-2", "py-1", 3, "ngClass"], [1, "flex", "items-baseline", "justify-between", "gap-2", "mb-0.5"], [1, "flex", "items-center", "gap-1", "flex-1", "min-w-0"], [1, "w-1.5", "h-1.5", "rounded-full", "flex-shrink-0", 3, "ngClass"], [1, "text-xs", "font-medium", "truncate", 3, "ngClass"], [1, "text-xs", "font-semibold", "whitespace-nowrap", 3, "ngClass"], [1, "flex", "items-baseline", "justify-between", "gap-2", "ml-3.5"], [1, "text-[10px]", 3, "ngClass"], [1, "text-[10px]", "whitespace-nowrap", 3, "ngClass"]], template: function CompetitiveStatusTooltipComponent_Template(rf, ctx) { if (rf & 1) {
|
|
11175
|
+
i0.ɵɵelementStart(0, "div", 0)(1, "div")(2, "div", 1);
|
|
11176
|
+
i0.ɵɵtext(3);
|
|
11177
|
+
i0.ɵɵelementEnd();
|
|
11178
|
+
i0.ɵɵelementStart(4, "div", 2);
|
|
11179
|
+
i0.ɵɵtext(5);
|
|
11180
|
+
i0.ɵɵelementEnd()();
|
|
11181
|
+
i0.ɵɵconditionalCreate(6, CompetitiveStatusTooltipComponent_Conditional_6_Template, 7, 4);
|
|
11182
|
+
i0.ɵɵelementEnd();
|
|
11183
|
+
} if (rf & 2) {
|
|
11184
|
+
i0.ɵɵadvance(2);
|
|
11185
|
+
i0.ɵɵproperty("ngClass", ctx.titleClass());
|
|
11186
|
+
i0.ɵɵadvance();
|
|
11187
|
+
i0.ɵɵtextInterpolate1(" ", ctx.statusLabel(), " ");
|
|
11188
|
+
i0.ɵɵadvance();
|
|
11189
|
+
i0.ɵɵproperty("ngClass", ctx.textClass());
|
|
11190
|
+
i0.ɵɵadvance();
|
|
11191
|
+
i0.ɵɵtextInterpolate1(" ", ctx.content().statusDescription, " ");
|
|
11192
|
+
i0.ɵɵadvance();
|
|
11193
|
+
i0.ɵɵconditional(ctx.content().metrics.length > 0 ? 6 : -1);
|
|
11194
|
+
} }, dependencies: [CommonModule, i1.NgClass], encapsulation: 2, changeDetection: 0 }); }
|
|
11195
|
+
}
|
|
11196
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CompetitiveStatusTooltipComponent, [{
|
|
11197
|
+
type: Component,
|
|
11198
|
+
args: [{
|
|
11199
|
+
selector: 'symphiq-competitive-status-tooltip',
|
|
11200
|
+
standalone: true,
|
|
11201
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
11202
|
+
imports: [CommonModule],
|
|
11203
|
+
template: `
|
|
11204
|
+
<div class="space-y-2">
|
|
11205
|
+
<div>
|
|
11206
|
+
<div [ngClass]="titleClass()" class="font-semibold text-xs uppercase tracking-wide mb-0.5">
|
|
11207
|
+
{{ statusLabel() }}
|
|
11208
|
+
</div>
|
|
11209
|
+
<div [ngClass]="textClass()" class="text-xs leading-snug">
|
|
11210
|
+
{{ content().statusDescription }}
|
|
11211
|
+
</div>
|
|
11212
|
+
</div>
|
|
11213
|
+
|
|
11214
|
+
@if (content().metrics.length > 0) {
|
|
11215
|
+
<div [ngClass]="separatorClass()" class="h-px"></div>
|
|
11216
|
+
|
|
11217
|
+
<div>
|
|
11218
|
+
<div [ngClass]="labelClass()" class="text-xs font-semibold mb-1.5">
|
|
11219
|
+
{{ content().metrics.length }} Metric{{ content().metrics.length > 1 ? 's' : '' }}
|
|
11220
|
+
</div>
|
|
11221
|
+
<div class="space-y-1 max-h-48 overflow-y-auto">
|
|
11222
|
+
@for (metric of content().metrics; track metric.name) {
|
|
11223
|
+
<div
|
|
11224
|
+
[ngClass]="getMetricCardClass(metric.status)"
|
|
11225
|
+
[class.animate-pulse]="metric.status === 'LAGGING'"
|
|
11226
|
+
class="rounded px-2 py-1">
|
|
11227
|
+
<div class="flex items-baseline justify-between gap-2 mb-0.5">
|
|
11228
|
+
<div class="flex items-center gap-1 flex-1 min-w-0">
|
|
11229
|
+
<div [ngClass]="getStatusDotClass(metric.status)" class="w-1.5 h-1.5 rounded-full flex-shrink-0"></div>
|
|
11230
|
+
<span [ngClass]="getMetricNameClass(metric.status)" class="text-xs font-medium truncate">
|
|
11231
|
+
{{ metric.name }}
|
|
11232
|
+
</span>
|
|
11233
|
+
</div>
|
|
11234
|
+
<span [ngClass]="getValueClass(metric.status)" class="text-xs font-semibold whitespace-nowrap">
|
|
11235
|
+
{{ formatValue(metric.projectedValue, metric.unit) }}
|
|
11236
|
+
</span>
|
|
11237
|
+
</div>
|
|
11238
|
+
<div class="flex items-baseline justify-between gap-2 ml-3.5">
|
|
11239
|
+
<span [ngClass]="labelClass()" class="text-[10px]">Benchmark:</span>
|
|
11240
|
+
<span [ngClass]="subValueClass()" class="text-[10px] whitespace-nowrap">
|
|
11241
|
+
{{ formatValue(metric.benchmarkRange.min, metric.unit) }} - {{ formatValue(metric.benchmarkRange.max, metric.unit) }}
|
|
11242
|
+
</span>
|
|
11243
|
+
</div>
|
|
11244
|
+
</div>
|
|
11245
|
+
}
|
|
11246
|
+
</div>
|
|
11247
|
+
</div>
|
|
11248
|
+
}
|
|
11249
|
+
</div>
|
|
11250
|
+
`
|
|
11251
|
+
}]
|
|
11252
|
+
}], null, { content: [{ type: i0.Input, args: [{ isSignal: true, alias: "content", required: true }] }], isLightMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "isLightMode", required: false }] }] }); })();
|
|
11253
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CompetitiveStatusTooltipComponent, { className: "CompetitiveStatusTooltipComponent", filePath: "lib/components/funnel-analysis-dashboard/tooltip/competitive-status-tooltip.component.ts", lineNumber: 59 }); })();
|
|
11254
|
+
|
|
11255
|
+
const _forTrack0$5 = ($index, $item) => $item.name;
|
|
11256
|
+
function FunnelStageCompetitiveTooltipComponent_Conditional_8_For_7_Template(rf, ctx) { if (rf & 1) {
|
|
11257
|
+
i0.ɵɵelementStart(0, "div", 9)(1, "div", 10)(2, "span", 11);
|
|
11258
|
+
i0.ɵɵtext(3);
|
|
11259
|
+
i0.ɵɵelementEnd();
|
|
11260
|
+
i0.ɵɵelementStart(4, "span", 12);
|
|
11261
|
+
i0.ɵɵtext(5);
|
|
11262
|
+
i0.ɵɵelementEnd()();
|
|
11263
|
+
i0.ɵɵelementStart(6, "div", 13)(7, "span", 14);
|
|
11264
|
+
i0.ɵɵtext(8, "Benchmark:");
|
|
11265
|
+
i0.ɵɵelementEnd();
|
|
11266
|
+
i0.ɵɵelementStart(9, "span", 15);
|
|
11267
|
+
i0.ɵɵtext(10);
|
|
11268
|
+
i0.ɵɵelementEnd()()();
|
|
11269
|
+
} if (rf & 2) {
|
|
11270
|
+
const metric_r1 = ctx.$implicit;
|
|
11271
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
11272
|
+
i0.ɵɵproperty("ngClass", ctx_r1.leadingCardClass());
|
|
11273
|
+
i0.ɵɵadvance(2);
|
|
11274
|
+
i0.ɵɵproperty("ngClass", ctx_r1.metricNameClass());
|
|
11275
|
+
i0.ɵɵadvance();
|
|
11276
|
+
i0.ɵɵtextInterpolate1(" ", metric_r1.name, " ");
|
|
11277
|
+
i0.ɵɵadvance();
|
|
11278
|
+
i0.ɵɵproperty("ngClass", ctx_r1.valueClass());
|
|
11279
|
+
i0.ɵɵadvance();
|
|
11280
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.formatValue(metric_r1.projectedValue, metric_r1.unit), " ");
|
|
11281
|
+
i0.ɵɵadvance(2);
|
|
11282
|
+
i0.ɵɵproperty("ngClass", ctx_r1.labelClass());
|
|
11283
|
+
i0.ɵɵadvance(2);
|
|
11284
|
+
i0.ɵɵproperty("ngClass", ctx_r1.subValueClass());
|
|
11285
|
+
i0.ɵɵadvance();
|
|
11286
|
+
i0.ɵɵtextInterpolate2(" ", ctx_r1.formatValue(metric_r1.benchmarkRange.min, metric_r1.unit), " - ", ctx_r1.formatValue(metric_r1.benchmarkRange.max, metric_r1.unit), " ");
|
|
11287
|
+
} }
|
|
11288
|
+
function FunnelStageCompetitiveTooltipComponent_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
11289
|
+
i0.ɵɵelementStart(0, "div")(1, "div", 5);
|
|
11290
|
+
i0.ɵɵelement(2, "div", 6);
|
|
11291
|
+
i0.ɵɵelementStart(3, "span", 7);
|
|
11292
|
+
i0.ɵɵtext(4);
|
|
11293
|
+
i0.ɵɵelementEnd()();
|
|
11294
|
+
i0.ɵɵelementStart(5, "div", 8);
|
|
11295
|
+
i0.ɵɵrepeaterCreate(6, FunnelStageCompetitiveTooltipComponent_Conditional_8_For_7_Template, 11, 9, "div", 9, _forTrack0$5);
|
|
11296
|
+
i0.ɵɵelementEnd()();
|
|
11297
|
+
} if (rf & 2) {
|
|
11298
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
11299
|
+
i0.ɵɵadvance(3);
|
|
11300
|
+
i0.ɵɵproperty("ngClass", ctx_r1.leadingTitleClass());
|
|
11301
|
+
i0.ɵɵadvance();
|
|
11302
|
+
i0.ɵɵtextInterpolate1(" Leading (", ctx_r1.content().leading.length, ") ");
|
|
11303
|
+
i0.ɵɵadvance(2);
|
|
11304
|
+
i0.ɵɵrepeater(ctx_r1.content().leading);
|
|
11305
|
+
} }
|
|
11306
|
+
function FunnelStageCompetitiveTooltipComponent_Conditional_9_For_7_Template(rf, ctx) { if (rf & 1) {
|
|
11307
|
+
i0.ɵɵelementStart(0, "div", 9)(1, "div", 10)(2, "span", 11);
|
|
11308
|
+
i0.ɵɵtext(3);
|
|
11309
|
+
i0.ɵɵelementEnd();
|
|
11310
|
+
i0.ɵɵelementStart(4, "span", 12);
|
|
11311
|
+
i0.ɵɵtext(5);
|
|
11312
|
+
i0.ɵɵelementEnd()();
|
|
11313
|
+
i0.ɵɵelementStart(6, "div", 13)(7, "span", 14);
|
|
11314
|
+
i0.ɵɵtext(8, "Benchmark:");
|
|
11315
|
+
i0.ɵɵelementEnd();
|
|
11316
|
+
i0.ɵɵelementStart(9, "span", 15);
|
|
11317
|
+
i0.ɵɵtext(10);
|
|
11318
|
+
i0.ɵɵelementEnd()()();
|
|
11319
|
+
} if (rf & 2) {
|
|
11320
|
+
const metric_r3 = ctx.$implicit;
|
|
11321
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
11322
|
+
i0.ɵɵproperty("ngClass", ctx_r1.competitiveCardClass());
|
|
11323
|
+
i0.ɵɵadvance(2);
|
|
11324
|
+
i0.ɵɵproperty("ngClass", ctx_r1.metricNameClass());
|
|
11325
|
+
i0.ɵɵadvance();
|
|
11326
|
+
i0.ɵɵtextInterpolate1(" ", metric_r3.name, " ");
|
|
11327
|
+
i0.ɵɵadvance();
|
|
11328
|
+
i0.ɵɵproperty("ngClass", ctx_r1.valueClass());
|
|
11329
|
+
i0.ɵɵadvance();
|
|
11330
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.formatValue(metric_r3.projectedValue, metric_r3.unit), " ");
|
|
11331
|
+
i0.ɵɵadvance(2);
|
|
11332
|
+
i0.ɵɵproperty("ngClass", ctx_r1.labelClass());
|
|
11333
|
+
i0.ɵɵadvance(2);
|
|
11334
|
+
i0.ɵɵproperty("ngClass", ctx_r1.subValueClass());
|
|
11335
|
+
i0.ɵɵadvance();
|
|
11336
|
+
i0.ɵɵtextInterpolate2(" ", ctx_r1.formatValue(metric_r3.benchmarkRange.min, metric_r3.unit), " - ", ctx_r1.formatValue(metric_r3.benchmarkRange.max, metric_r3.unit), " ");
|
|
11337
|
+
} }
|
|
11338
|
+
function FunnelStageCompetitiveTooltipComponent_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
11339
|
+
i0.ɵɵelementStart(0, "div")(1, "div", 5);
|
|
11340
|
+
i0.ɵɵelement(2, "div", 16);
|
|
11341
|
+
i0.ɵɵelementStart(3, "span", 7);
|
|
11342
|
+
i0.ɵɵtext(4);
|
|
11343
|
+
i0.ɵɵelementEnd()();
|
|
11344
|
+
i0.ɵɵelementStart(5, "div", 8);
|
|
11345
|
+
i0.ɵɵrepeaterCreate(6, FunnelStageCompetitiveTooltipComponent_Conditional_9_For_7_Template, 11, 9, "div", 9, _forTrack0$5);
|
|
11346
|
+
i0.ɵɵelementEnd()();
|
|
11347
|
+
} if (rf & 2) {
|
|
11348
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
11349
|
+
i0.ɵɵadvance(3);
|
|
11350
|
+
i0.ɵɵproperty("ngClass", ctx_r1.competitiveTitleClass());
|
|
11351
|
+
i0.ɵɵadvance();
|
|
11352
|
+
i0.ɵɵtextInterpolate1(" Competitive (", ctx_r1.content().competitive.length, ") ");
|
|
11353
|
+
i0.ɵɵadvance(2);
|
|
11354
|
+
i0.ɵɵrepeater(ctx_r1.content().competitive);
|
|
11355
|
+
} }
|
|
11356
|
+
function FunnelStageCompetitiveTooltipComponent_Conditional_10_For_7_Template(rf, ctx) { if (rf & 1) {
|
|
11357
|
+
i0.ɵɵelementStart(0, "div", 9)(1, "div", 10)(2, "span", 11);
|
|
11358
|
+
i0.ɵɵtext(3);
|
|
11359
|
+
i0.ɵɵelementEnd();
|
|
11360
|
+
i0.ɵɵelementStart(4, "span", 12);
|
|
11361
|
+
i0.ɵɵtext(5);
|
|
11362
|
+
i0.ɵɵelementEnd()();
|
|
11363
|
+
i0.ɵɵelementStart(6, "div", 13)(7, "span", 14);
|
|
11364
|
+
i0.ɵɵtext(8, "Benchmark:");
|
|
11365
|
+
i0.ɵɵelementEnd();
|
|
11366
|
+
i0.ɵɵelementStart(9, "span", 15);
|
|
11367
|
+
i0.ɵɵtext(10);
|
|
11368
|
+
i0.ɵɵelementEnd()()();
|
|
11369
|
+
} if (rf & 2) {
|
|
11370
|
+
const metric_r4 = ctx.$implicit;
|
|
11371
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
11372
|
+
i0.ɵɵproperty("ngClass", ctx_r1.laggingCardClass());
|
|
11373
|
+
i0.ɵɵadvance(2);
|
|
11374
|
+
i0.ɵɵproperty("ngClass", ctx_r1.metricNameClass());
|
|
11375
|
+
i0.ɵɵadvance();
|
|
11376
|
+
i0.ɵɵtextInterpolate1(" ", metric_r4.name, " ");
|
|
11377
|
+
i0.ɵɵadvance();
|
|
11378
|
+
i0.ɵɵproperty("ngClass", ctx_r1.valueClass());
|
|
11379
|
+
i0.ɵɵadvance();
|
|
11380
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.formatValue(metric_r4.projectedValue, metric_r4.unit), " ");
|
|
11381
|
+
i0.ɵɵadvance(2);
|
|
11382
|
+
i0.ɵɵproperty("ngClass", ctx_r1.labelClass());
|
|
11383
|
+
i0.ɵɵadvance(2);
|
|
11384
|
+
i0.ɵɵproperty("ngClass", ctx_r1.subValueClass());
|
|
11385
|
+
i0.ɵɵadvance();
|
|
11386
|
+
i0.ɵɵtextInterpolate2(" ", ctx_r1.formatValue(metric_r4.benchmarkRange.min, metric_r4.unit), " - ", ctx_r1.formatValue(metric_r4.benchmarkRange.max, metric_r4.unit), " ");
|
|
11387
|
+
} }
|
|
11388
|
+
function FunnelStageCompetitiveTooltipComponent_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
11389
|
+
i0.ɵɵelementStart(0, "div")(1, "div", 5);
|
|
11390
|
+
i0.ɵɵelement(2, "div", 17);
|
|
11391
|
+
i0.ɵɵelementStart(3, "span", 7);
|
|
11392
|
+
i0.ɵɵtext(4);
|
|
11393
|
+
i0.ɵɵelementEnd()();
|
|
11394
|
+
i0.ɵɵelementStart(5, "div", 8);
|
|
11395
|
+
i0.ɵɵrepeaterCreate(6, FunnelStageCompetitiveTooltipComponent_Conditional_10_For_7_Template, 11, 9, "div", 9, _forTrack0$5);
|
|
11396
|
+
i0.ɵɵelementEnd()();
|
|
11397
|
+
} if (rf & 2) {
|
|
11398
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
11399
|
+
i0.ɵɵadvance(3);
|
|
11400
|
+
i0.ɵɵproperty("ngClass", ctx_r1.laggingTitleClass());
|
|
11401
|
+
i0.ɵɵadvance();
|
|
11402
|
+
i0.ɵɵtextInterpolate1(" Lagging (", ctx_r1.content().lagging.length, ") ");
|
|
11403
|
+
i0.ɵɵadvance(2);
|
|
11404
|
+
i0.ɵɵrepeater(ctx_r1.content().lagging);
|
|
11405
|
+
} }
|
|
11406
|
+
class FunnelStageCompetitiveTooltipComponent {
|
|
11407
|
+
constructor() {
|
|
11408
|
+
this.content = input.required(...(ngDevMode ? [{ debugName: "content" }] : []));
|
|
11409
|
+
this.isLightMode = input(false, ...(ngDevMode ? [{ debugName: "isLightMode" }] : []));
|
|
11410
|
+
this.titleClass = computed(() => this.isLightMode() ? 'text-slate-800' : 'text-white', ...(ngDevMode ? [{ debugName: "titleClass" }] : []));
|
|
11411
|
+
this.labelClass = computed(() => this.isLightMode() ? 'text-slate-500' : 'text-slate-400', ...(ngDevMode ? [{ debugName: "labelClass" }] : []));
|
|
11412
|
+
this.valueClass = computed(() => this.isLightMode() ? 'text-slate-900' : 'text-white', ...(ngDevMode ? [{ debugName: "valueClass" }] : []));
|
|
11413
|
+
this.subValueClass = computed(() => this.isLightMode() ? 'text-slate-700' : 'text-slate-200', ...(ngDevMode ? [{ debugName: "subValueClass" }] : []));
|
|
11414
|
+
this.metricNameClass = computed(() => this.isLightMode() ? 'text-slate-800' : 'text-slate-100', ...(ngDevMode ? [{ debugName: "metricNameClass" }] : []));
|
|
11415
|
+
this.separatorClass = computed(() => this.isLightMode() ? 'bg-slate-200' : 'bg-slate-600', ...(ngDevMode ? [{ debugName: "separatorClass" }] : []));
|
|
11416
|
+
this.leadingTitleClass = computed(() => this.isLightMode() ? 'text-emerald-700' : 'text-emerald-400', ...(ngDevMode ? [{ debugName: "leadingTitleClass" }] : []));
|
|
11417
|
+
this.leadingCardClass = computed(() => this.isLightMode() ? 'bg-emerald-50 border border-emerald-200' : 'bg-emerald-500/10 border border-emerald-500/30', ...(ngDevMode ? [{ debugName: "leadingCardClass" }] : []));
|
|
11418
|
+
this.competitiveTitleClass = computed(() => this.isLightMode() ? 'text-blue-700' : 'text-blue-400', ...(ngDevMode ? [{ debugName: "competitiveTitleClass" }] : []));
|
|
11419
|
+
this.competitiveCardClass = computed(() => this.isLightMode() ? 'bg-blue-50 border border-blue-200' : 'bg-blue-500/10 border border-blue-500/30', ...(ngDevMode ? [{ debugName: "competitiveCardClass" }] : []));
|
|
11420
|
+
this.laggingTitleClass = computed(() => this.isLightMode() ? 'text-orange-700' : 'text-orange-400', ...(ngDevMode ? [{ debugName: "laggingTitleClass" }] : []));
|
|
11421
|
+
this.laggingCardClass = computed(() => this.isLightMode() ? 'bg-orange-50 border border-orange-200' : 'bg-orange-500/10 border border-orange-500/30', ...(ngDevMode ? [{ debugName: "laggingCardClass" }] : []));
|
|
11422
|
+
}
|
|
11423
|
+
formatValue(value, unit) {
|
|
11424
|
+
if (unit === 'currency') {
|
|
11425
|
+
if (value >= 1000000) {
|
|
11426
|
+
return `$${(value / 1000000).toFixed(1)}M`;
|
|
11427
|
+
}
|
|
11428
|
+
else if (value >= 1000) {
|
|
11429
|
+
return `$${(value / 1000).toFixed(1)}K`;
|
|
11430
|
+
}
|
|
11431
|
+
return `$${value.toLocaleString('en-US', { maximumFractionDigits: 0 })}`;
|
|
11432
|
+
}
|
|
11433
|
+
if (unit === 'percentage') {
|
|
11434
|
+
if (value < 1) {
|
|
11435
|
+
return `${(value * 100).toFixed(2)}%`;
|
|
11436
|
+
}
|
|
11437
|
+
return `${value.toFixed(2)}%`;
|
|
11438
|
+
}
|
|
11439
|
+
if (value >= 1000000) {
|
|
11440
|
+
return `${(value / 1000000).toFixed(1)}M`;
|
|
11441
|
+
}
|
|
11442
|
+
else if (value >= 1000) {
|
|
11443
|
+
return `${(value / 1000).toFixed(1)}K`;
|
|
11444
|
+
}
|
|
11445
|
+
return value.toLocaleString();
|
|
11446
|
+
}
|
|
11447
|
+
static { this.ɵfac = function FunnelStageCompetitiveTooltipComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || FunnelStageCompetitiveTooltipComponent)(); }; }
|
|
11448
|
+
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: FunnelStageCompetitiveTooltipComponent, selectors: [["symphiq-funnel-stage-competitive-tooltip"]], inputs: { content: [1, "content"], isLightMode: [1, "isLightMode"] }, decls: 11, vars: 9, consts: [[1, "space-y-2"], [1, "font-semibold", "text-sm", "mb-0.5", 3, "ngClass"], [1, "text-xs", 3, "ngClass"], [1, "h-px", 3, "ngClass"], [1, "space-y-2", "max-h-64", "overflow-y-auto"], [1, "flex", "items-center", "gap-1.5", "mb-1.5"], [1, "w-2", "h-2", "rounded-full", "bg-emerald-500"], [1, "text-xs", "font-semibold", "uppercase", "tracking-wide", 3, "ngClass"], [1, "space-y-1"], [1, "rounded", "px-2", "py-1", 3, "ngClass"], [1, "flex", "items-baseline", "justify-between", "gap-2", "mb-0.5"], [1, "text-xs", "font-medium", "truncate", "flex-1", 3, "ngClass"], [1, "text-xs", "font-semibold", "whitespace-nowrap", 3, "ngClass"], [1, "flex", "items-baseline", "justify-between", "gap-2"], [1, "text-[10px]", 3, "ngClass"], [1, "text-[10px]", "whitespace-nowrap", 3, "ngClass"], [1, "w-2", "h-2", "rounded-full", "bg-blue-500"], [1, "w-2", "h-2", "rounded-full", "bg-orange-500"]], template: function FunnelStageCompetitiveTooltipComponent_Template(rf, ctx) { if (rf & 1) {
|
|
11449
|
+
i0.ɵɵelementStart(0, "div", 0)(1, "div")(2, "div", 1);
|
|
11450
|
+
i0.ɵɵtext(3);
|
|
11451
|
+
i0.ɵɵelementEnd();
|
|
11452
|
+
i0.ɵɵelementStart(4, "div", 2);
|
|
11453
|
+
i0.ɵɵtext(5);
|
|
11454
|
+
i0.ɵɵelementEnd()();
|
|
11455
|
+
i0.ɵɵelement(6, "div", 3);
|
|
11456
|
+
i0.ɵɵelementStart(7, "div", 4);
|
|
11457
|
+
i0.ɵɵconditionalCreate(8, FunnelStageCompetitiveTooltipComponent_Conditional_8_Template, 8, 2, "div");
|
|
11458
|
+
i0.ɵɵconditionalCreate(9, FunnelStageCompetitiveTooltipComponent_Conditional_9_Template, 8, 2, "div");
|
|
11459
|
+
i0.ɵɵconditionalCreate(10, FunnelStageCompetitiveTooltipComponent_Conditional_10_Template, 8, 2, "div");
|
|
11460
|
+
i0.ɵɵelementEnd()();
|
|
11461
|
+
} if (rf & 2) {
|
|
11462
|
+
i0.ɵɵadvance(2);
|
|
11463
|
+
i0.ɵɵproperty("ngClass", ctx.titleClass());
|
|
11464
|
+
i0.ɵɵadvance();
|
|
11465
|
+
i0.ɵɵtextInterpolate1(" ", ctx.content().funnelStage, " ");
|
|
11466
|
+
i0.ɵɵadvance();
|
|
11467
|
+
i0.ɵɵproperty("ngClass", ctx.labelClass());
|
|
11468
|
+
i0.ɵɵadvance();
|
|
11469
|
+
i0.ɵɵtextInterpolate2(" ", ctx.content().totalMetrics, " Total Metric", ctx.content().totalMetrics > 1 ? "s" : "", " ");
|
|
11470
|
+
i0.ɵɵadvance();
|
|
11471
|
+
i0.ɵɵproperty("ngClass", ctx.separatorClass());
|
|
11472
|
+
i0.ɵɵadvance(2);
|
|
11473
|
+
i0.ɵɵconditional(ctx.content().leading.length > 0 ? 8 : -1);
|
|
11474
|
+
i0.ɵɵadvance();
|
|
11475
|
+
i0.ɵɵconditional(ctx.content().competitive.length > 0 ? 9 : -1);
|
|
11476
|
+
i0.ɵɵadvance();
|
|
11477
|
+
i0.ɵɵconditional(ctx.content().lagging.length > 0 ? 10 : -1);
|
|
11478
|
+
} }, dependencies: [CommonModule, i1.NgClass], encapsulation: 2, changeDetection: 0 }); }
|
|
11479
|
+
}
|
|
11480
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(FunnelStageCompetitiveTooltipComponent, [{
|
|
11481
|
+
type: Component,
|
|
11482
|
+
args: [{
|
|
11483
|
+
selector: 'symphiq-funnel-stage-competitive-tooltip',
|
|
11484
|
+
standalone: true,
|
|
11485
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
11486
|
+
imports: [CommonModule],
|
|
11487
|
+
template: `
|
|
11488
|
+
<div class="space-y-2">
|
|
11489
|
+
<div>
|
|
11490
|
+
<div [ngClass]="titleClass()" class="font-semibold text-sm mb-0.5">
|
|
11491
|
+
{{ content().funnelStage }}
|
|
11492
|
+
</div>
|
|
11493
|
+
<div [ngClass]="labelClass()" class="text-xs">
|
|
11494
|
+
{{ content().totalMetrics }} Total Metric{{ content().totalMetrics > 1 ? 's' : '' }}
|
|
11495
|
+
</div>
|
|
11496
|
+
</div>
|
|
11497
|
+
|
|
11498
|
+
<div [ngClass]="separatorClass()" class="h-px"></div>
|
|
11499
|
+
|
|
11500
|
+
<div class="space-y-2 max-h-64 overflow-y-auto">
|
|
11501
|
+
@if (content().leading.length > 0) {
|
|
11502
|
+
<div>
|
|
11503
|
+
<div class="flex items-center gap-1.5 mb-1.5">
|
|
11504
|
+
<div class="w-2 h-2 rounded-full bg-emerald-500"></div>
|
|
11505
|
+
<span [ngClass]="leadingTitleClass()" class="text-xs font-semibold uppercase tracking-wide">
|
|
11506
|
+
Leading ({{ content().leading.length }})
|
|
11507
|
+
</span>
|
|
11508
|
+
</div>
|
|
11509
|
+
<div class="space-y-1">
|
|
11510
|
+
@for (metric of content().leading; track metric.name) {
|
|
11511
|
+
<div [ngClass]="leadingCardClass()" class="rounded px-2 py-1">
|
|
11512
|
+
<div class="flex items-baseline justify-between gap-2 mb-0.5">
|
|
11513
|
+
<span [ngClass]="metricNameClass()" class="text-xs font-medium truncate flex-1">
|
|
11514
|
+
{{ metric.name }}
|
|
11515
|
+
</span>
|
|
11516
|
+
<span [ngClass]="valueClass()" class="text-xs font-semibold whitespace-nowrap">
|
|
11517
|
+
{{ formatValue(metric.projectedValue, metric.unit) }}
|
|
11518
|
+
</span>
|
|
11519
|
+
</div>
|
|
11520
|
+
<div class="flex items-baseline justify-between gap-2">
|
|
11521
|
+
<span [ngClass]="labelClass()" class="text-[10px]">Benchmark:</span>
|
|
11522
|
+
<span [ngClass]="subValueClass()" class="text-[10px] whitespace-nowrap">
|
|
11523
|
+
{{ formatValue(metric.benchmarkRange.min, metric.unit) }} - {{ formatValue(metric.benchmarkRange.max, metric.unit) }}
|
|
11524
|
+
</span>
|
|
11525
|
+
</div>
|
|
11526
|
+
</div>
|
|
11527
|
+
}
|
|
11528
|
+
</div>
|
|
11529
|
+
</div>
|
|
11530
|
+
}
|
|
11531
|
+
|
|
11532
|
+
@if (content().competitive.length > 0) {
|
|
11533
|
+
<div>
|
|
11534
|
+
<div class="flex items-center gap-1.5 mb-1.5">
|
|
11535
|
+
<div class="w-2 h-2 rounded-full bg-blue-500"></div>
|
|
11536
|
+
<span [ngClass]="competitiveTitleClass()" class="text-xs font-semibold uppercase tracking-wide">
|
|
11537
|
+
Competitive ({{ content().competitive.length }})
|
|
11538
|
+
</span>
|
|
11539
|
+
</div>
|
|
11540
|
+
<div class="space-y-1">
|
|
11541
|
+
@for (metric of content().competitive; track metric.name) {
|
|
11542
|
+
<div [ngClass]="competitiveCardClass()" class="rounded px-2 py-1">
|
|
11543
|
+
<div class="flex items-baseline justify-between gap-2 mb-0.5">
|
|
11544
|
+
<span [ngClass]="metricNameClass()" class="text-xs font-medium truncate flex-1">
|
|
11545
|
+
{{ metric.name }}
|
|
11546
|
+
</span>
|
|
11547
|
+
<span [ngClass]="valueClass()" class="text-xs font-semibold whitespace-nowrap">
|
|
11548
|
+
{{ formatValue(metric.projectedValue, metric.unit) }}
|
|
11549
|
+
</span>
|
|
11550
|
+
</div>
|
|
11551
|
+
<div class="flex items-baseline justify-between gap-2">
|
|
11552
|
+
<span [ngClass]="labelClass()" class="text-[10px]">Benchmark:</span>
|
|
11553
|
+
<span [ngClass]="subValueClass()" class="text-[10px] whitespace-nowrap">
|
|
11554
|
+
{{ formatValue(metric.benchmarkRange.min, metric.unit) }} - {{ formatValue(metric.benchmarkRange.max, metric.unit) }}
|
|
11555
|
+
</span>
|
|
11556
|
+
</div>
|
|
11557
|
+
</div>
|
|
11558
|
+
}
|
|
11559
|
+
</div>
|
|
11560
|
+
</div>
|
|
11561
|
+
}
|
|
11562
|
+
|
|
11563
|
+
@if (content().lagging.length > 0) {
|
|
11564
|
+
<div>
|
|
11565
|
+
<div class="flex items-center gap-1.5 mb-1.5">
|
|
11566
|
+
<div class="w-2 h-2 rounded-full bg-orange-500"></div>
|
|
11567
|
+
<span [ngClass]="laggingTitleClass()" class="text-xs font-semibold uppercase tracking-wide">
|
|
11568
|
+
Lagging ({{ content().lagging.length }})
|
|
11569
|
+
</span>
|
|
11570
|
+
</div>
|
|
11571
|
+
<div class="space-y-1">
|
|
11572
|
+
@for (metric of content().lagging; track metric.name) {
|
|
11573
|
+
<div [ngClass]="laggingCardClass()" class="rounded px-2 py-1">
|
|
11574
|
+
<div class="flex items-baseline justify-between gap-2 mb-0.5">
|
|
11575
|
+
<span [ngClass]="metricNameClass()" class="text-xs font-medium truncate flex-1">
|
|
11576
|
+
{{ metric.name }}
|
|
11577
|
+
</span>
|
|
11578
|
+
<span [ngClass]="valueClass()" class="text-xs font-semibold whitespace-nowrap">
|
|
11579
|
+
{{ formatValue(metric.projectedValue, metric.unit) }}
|
|
11580
|
+
</span>
|
|
11581
|
+
</div>
|
|
11582
|
+
<div class="flex items-baseline justify-between gap-2">
|
|
11583
|
+
<span [ngClass]="labelClass()" class="text-[10px]">Benchmark:</span>
|
|
11584
|
+
<span [ngClass]="subValueClass()" class="text-[10px] whitespace-nowrap">
|
|
11585
|
+
{{ formatValue(metric.benchmarkRange.min, metric.unit) }} - {{ formatValue(metric.benchmarkRange.max, metric.unit) }}
|
|
11586
|
+
</span>
|
|
11587
|
+
</div>
|
|
11588
|
+
</div>
|
|
11589
|
+
}
|
|
11590
|
+
</div>
|
|
11591
|
+
</div>
|
|
11592
|
+
}
|
|
11593
|
+
</div>
|
|
11594
|
+
</div>
|
|
11595
|
+
`
|
|
11596
|
+
}]
|
|
11597
|
+
}], null, { content: [{ type: i0.Input, args: [{ isSignal: true, alias: "content", required: true }] }], isLightMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "isLightMode", required: false }] }] }); })();
|
|
11598
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(FunnelStageCompetitiveTooltipComponent, { className: "FunnelStageCompetitiveTooltipComponent", filePath: "lib/components/funnel-analysis-dashboard/tooltip/funnel-stage-competitive-tooltip.component.ts", lineNumber: 120 }); })();
|
|
11599
|
+
|
|
11600
|
+
const _c0$6 = () => [];
|
|
11601
|
+
function TooltipContainerComponent_Conditional_0_Case_3_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
11602
|
+
i0.ɵɵelement(0, "symphiq-metric-value-tooltip", 6);
|
|
11603
|
+
} if (rf & 2) {
|
|
11604
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
11605
|
+
i0.ɵɵproperty("content", ctx_r1.metricContent())("isLightMode", ctx_r1.isLightMode());
|
|
11606
|
+
} }
|
|
11607
|
+
function TooltipContainerComponent_Conditional_0_Case_3_Template(rf, ctx) { if (rf & 1) {
|
|
11608
|
+
i0.ɵɵconditionalCreate(0, TooltipContainerComponent_Conditional_0_Case_3_Conditional_0_Template, 1, 2, "symphiq-metric-value-tooltip", 6);
|
|
11609
|
+
} if (rf & 2) {
|
|
11610
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
11611
|
+
i0.ɵɵconditional(ctx_r1.metricContent() ? 0 : -1);
|
|
11612
|
+
} }
|
|
11613
|
+
function TooltipContainerComponent_Conditional_0_Case_4_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
11614
|
+
i0.ɵɵelement(0, "symphiq-status-badge-tooltip", 6);
|
|
11615
|
+
} if (rf & 2) {
|
|
11616
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
11617
|
+
i0.ɵɵproperty("content", ctx_r1.statusContent())("isLightMode", ctx_r1.isLightMode());
|
|
11618
|
+
} }
|
|
11619
|
+
function TooltipContainerComponent_Conditional_0_Case_4_Template(rf, ctx) { if (rf & 1) {
|
|
11620
|
+
i0.ɵɵconditionalCreate(0, TooltipContainerComponent_Conditional_0_Case_4_Conditional_0_Template, 1, 2, "symphiq-status-badge-tooltip", 6);
|
|
11621
|
+
} if (rf & 2) {
|
|
11622
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
11623
|
+
i0.ɵɵconditional(ctx_r1.statusContent() ? 0 : -1);
|
|
11624
|
+
} }
|
|
11625
|
+
function TooltipContainerComponent_Conditional_0_Case_5_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
11626
|
+
i0.ɵɵelement(0, "symphiq-trend-indicator-tooltip", 6);
|
|
11627
|
+
} if (rf & 2) {
|
|
11628
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
11629
|
+
i0.ɵɵproperty("content", ctx_r1.trendContent())("isLightMode", ctx_r1.isLightMode());
|
|
11630
|
+
} }
|
|
11631
|
+
function TooltipContainerComponent_Conditional_0_Case_5_Template(rf, ctx) { if (rf & 1) {
|
|
11632
|
+
i0.ɵɵconditionalCreate(0, TooltipContainerComponent_Conditional_0_Case_5_Conditional_0_Template, 1, 2, "symphiq-trend-indicator-tooltip", 6);
|
|
11633
|
+
} if (rf & 2) {
|
|
11634
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
11635
|
+
i0.ɵɵconditional(ctx_r1.trendContent() ? 0 : -1);
|
|
11636
|
+
} }
|
|
11637
|
+
function TooltipContainerComponent_Conditional_0_Case_6_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
11638
|
+
i0.ɵɵelement(0, "symphiq-priority-badge-tooltip", 6);
|
|
11639
|
+
} if (rf & 2) {
|
|
11640
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
11641
|
+
i0.ɵɵproperty("content", ctx_r1.priorityContent())("isLightMode", ctx_r1.isLightMode());
|
|
11642
|
+
} }
|
|
11643
|
+
function TooltipContainerComponent_Conditional_0_Case_6_Template(rf, ctx) { if (rf & 1) {
|
|
11644
|
+
i0.ɵɵconditionalCreate(0, TooltipContainerComponent_Conditional_0_Case_6_Conditional_0_Template, 1, 2, "symphiq-priority-badge-tooltip", 6);
|
|
11645
|
+
} if (rf & 2) {
|
|
11646
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
11647
|
+
i0.ɵɵconditional(ctx_r1.priorityContent() ? 0 : -1);
|
|
11648
|
+
} }
|
|
11649
|
+
function TooltipContainerComponent_Conditional_0_Case_7_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
11650
|
+
i0.ɵɵelement(0, "symphiq-badge-tooltip", 6);
|
|
11651
|
+
} if (rf & 2) {
|
|
11652
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
11653
|
+
i0.ɵɵproperty("content", ctx_r1.badgeContent())("isLightMode", ctx_r1.isLightMode());
|
|
11654
|
+
} }
|
|
11655
|
+
function TooltipContainerComponent_Conditional_0_Case_7_Template(rf, ctx) { if (rf & 1) {
|
|
11656
|
+
i0.ɵɵconditionalCreate(0, TooltipContainerComponent_Conditional_0_Case_7_Conditional_0_Template, 1, 2, "symphiq-badge-tooltip", 6);
|
|
10917
11657
|
} if (rf & 2) {
|
|
10918
11658
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
10919
11659
|
i0.ɵɵconditional(ctx_r1.badgeContent() ? 0 : -1);
|
|
@@ -10966,7 +11706,31 @@ function TooltipContainerComponent_Conditional_0_Case_11_Template(rf, ctx) { if
|
|
|
10966
11706
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
10967
11707
|
i0.ɵɵconditional(ctx_r1.narrativeContent() ? 0 : -1);
|
|
10968
11708
|
} }
|
|
10969
|
-
function
|
|
11709
|
+
function TooltipContainerComponent_Conditional_0_Case_12_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
11710
|
+
i0.ɵɵelement(0, "symphiq-competitive-status-tooltip", 6);
|
|
11711
|
+
} if (rf & 2) {
|
|
11712
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
11713
|
+
i0.ɵɵproperty("content", ctx_r1.competitiveStatusContent())("isLightMode", ctx_r1.isLightMode());
|
|
11714
|
+
} }
|
|
11715
|
+
function TooltipContainerComponent_Conditional_0_Case_12_Template(rf, ctx) { if (rf & 1) {
|
|
11716
|
+
i0.ɵɵconditionalCreate(0, TooltipContainerComponent_Conditional_0_Case_12_Conditional_0_Template, 1, 2, "symphiq-competitive-status-tooltip", 6);
|
|
11717
|
+
} if (rf & 2) {
|
|
11718
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
11719
|
+
i0.ɵɵconditional(ctx_r1.competitiveStatusContent() ? 0 : -1);
|
|
11720
|
+
} }
|
|
11721
|
+
function TooltipContainerComponent_Conditional_0_Case_13_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
11722
|
+
i0.ɵɵelement(0, "symphiq-funnel-stage-competitive-tooltip", 6);
|
|
11723
|
+
} if (rf & 2) {
|
|
11724
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
11725
|
+
i0.ɵɵproperty("content", ctx_r1.funnelStageCompetitiveContent())("isLightMode", ctx_r1.isLightMode());
|
|
11726
|
+
} }
|
|
11727
|
+
function TooltipContainerComponent_Conditional_0_Case_13_Template(rf, ctx) { if (rf & 1) {
|
|
11728
|
+
i0.ɵɵconditionalCreate(0, TooltipContainerComponent_Conditional_0_Case_13_Conditional_0_Template, 1, 2, "symphiq-funnel-stage-competitive-tooltip", 6);
|
|
11729
|
+
} if (rf & 2) {
|
|
11730
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
11731
|
+
i0.ɵɵconditional(ctx_r1.funnelStageCompetitiveContent() ? 0 : -1);
|
|
11732
|
+
} }
|
|
11733
|
+
function TooltipContainerComponent_Conditional_0_Case_14_Conditional_1_For_1_Template(rf, ctx) { if (rf & 1) {
|
|
10970
11734
|
i0.ɵɵelementStart(0, "div", 7)(1, "div", 8);
|
|
10971
11735
|
i0.ɵɵtext(2);
|
|
10972
11736
|
i0.ɵɵelementEnd();
|
|
@@ -10980,16 +11744,16 @@ function TooltipContainerComponent_Conditional_0_Case_12_Conditional_1_For_1_Tem
|
|
|
10980
11744
|
i0.ɵɵadvance(2);
|
|
10981
11745
|
i0.ɵɵtextInterpolate(section_r3.content);
|
|
10982
11746
|
} }
|
|
10983
|
-
function
|
|
10984
|
-
i0.ɵɵrepeaterCreate(0,
|
|
11747
|
+
function TooltipContainerComponent_Conditional_0_Case_14_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
11748
|
+
i0.ɵɵrepeaterCreate(0, TooltipContainerComponent_Conditional_0_Case_14_Conditional_1_For_1_Template, 5, 2, "div", 7, i0.ɵɵrepeaterTrackByIndex);
|
|
10985
11749
|
} if (rf & 2) {
|
|
10986
11750
|
i0.ɵɵnextContext(2);
|
|
10987
11751
|
const content_r4 = i0.ɵɵreadContextLet(2);
|
|
10988
11752
|
i0.ɵɵrepeater(content_r4["sections"] || i0.ɵɵpureFunction0(0, _c0$6));
|
|
10989
11753
|
} }
|
|
10990
|
-
function
|
|
11754
|
+
function TooltipContainerComponent_Conditional_0_Case_14_Template(rf, ctx) { if (rf & 1) {
|
|
10991
11755
|
i0.ɵɵelementStart(0, "div", 3);
|
|
10992
|
-
i0.ɵɵconditionalCreate(1,
|
|
11756
|
+
i0.ɵɵconditionalCreate(1, TooltipContainerComponent_Conditional_0_Case_14_Conditional_1_Template, 2, 1);
|
|
10993
11757
|
i0.ɵɵelementEnd();
|
|
10994
11758
|
} if (rf & 2) {
|
|
10995
11759
|
i0.ɵɵnextContext();
|
|
@@ -10999,23 +11763,23 @@ function TooltipContainerComponent_Conditional_0_Case_12_Template(rf, ctx) { if
|
|
|
10999
11763
|
i0.ɵɵadvance();
|
|
11000
11764
|
i0.ɵɵconditional(content_r4 && typeof content_r4 === "object" && "sections" in content_r4 ? 1 : -1);
|
|
11001
11765
|
} }
|
|
11002
|
-
function
|
|
11766
|
+
function TooltipContainerComponent_Conditional_0_Case_15_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
11003
11767
|
i0.ɵɵtext(0);
|
|
11004
11768
|
} if (rf & 2) {
|
|
11005
11769
|
i0.ɵɵnextContext(2);
|
|
11006
11770
|
const content_r4 = i0.ɵɵreadContextLet(2);
|
|
11007
11771
|
i0.ɵɵtextInterpolate1(" ", content_r4["text"], " ");
|
|
11008
11772
|
} }
|
|
11009
|
-
function
|
|
11773
|
+
function TooltipContainerComponent_Conditional_0_Case_15_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
11010
11774
|
i0.ɵɵtext(0);
|
|
11011
11775
|
} if (rf & 2) {
|
|
11012
11776
|
i0.ɵɵnextContext(2);
|
|
11013
11777
|
const content_r4 = i0.ɵɵreadContextLet(2);
|
|
11014
11778
|
i0.ɵɵtextInterpolate1(" ", content_r4, " ");
|
|
11015
11779
|
} }
|
|
11016
|
-
function
|
|
11780
|
+
function TooltipContainerComponent_Conditional_0_Case_15_Template(rf, ctx) { if (rf & 1) {
|
|
11017
11781
|
i0.ɵɵelementStart(0, "div", 4);
|
|
11018
|
-
i0.ɵɵconditionalCreate(1,
|
|
11782
|
+
i0.ɵɵconditionalCreate(1, TooltipContainerComponent_Conditional_0_Case_15_Conditional_1_Template, 1, 1)(2, TooltipContainerComponent_Conditional_0_Case_15_Conditional_2_Template, 1, 1);
|
|
11019
11783
|
i0.ɵɵelementEnd();
|
|
11020
11784
|
} if (rf & 2) {
|
|
11021
11785
|
i0.ɵɵnextContext();
|
|
@@ -11025,7 +11789,7 @@ function TooltipContainerComponent_Conditional_0_Case_13_Template(rf, ctx) { if
|
|
|
11025
11789
|
i0.ɵɵadvance();
|
|
11026
11790
|
i0.ɵɵconditional(content_r4 && typeof content_r4 === "object" && "text" in content_r4 ? 1 : 2);
|
|
11027
11791
|
} }
|
|
11028
|
-
function
|
|
11792
|
+
function TooltipContainerComponent_Conditional_0_Case_16_Template(rf, ctx) { if (rf & 1) {
|
|
11029
11793
|
i0.ɵɵelementStart(0, "div", 5);
|
|
11030
11794
|
i0.ɵɵtext(1);
|
|
11031
11795
|
i0.ɵɵelementEnd();
|
|
@@ -11042,7 +11806,7 @@ function TooltipContainerComponent_Conditional_0_Template(rf, ctx) { if (rf & 1)
|
|
|
11042
11806
|
i0.ɵɵelementStart(0, "div", 1)(1, "div", 2);
|
|
11043
11807
|
i0.ɵɵlistener("mouseenter", function TooltipContainerComponent_Conditional_0_Template_div_mouseenter_1_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onTooltipMouseEnter()); })("mouseleave", function TooltipContainerComponent_Conditional_0_Template_div_mouseleave_1_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onTooltipMouseLeave()); });
|
|
11044
11808
|
i0.ɵɵdeclareLet(2);
|
|
11045
|
-
i0.ɵɵconditionalCreate(3, TooltipContainerComponent_Conditional_0_Case_3_Template, 1, 1)(4, TooltipContainerComponent_Conditional_0_Case_4_Template, 1, 1)(5, TooltipContainerComponent_Conditional_0_Case_5_Template, 1, 1)(6, TooltipContainerComponent_Conditional_0_Case_6_Template, 1, 1)(7, TooltipContainerComponent_Conditional_0_Case_7_Template, 1, 1)(8, TooltipContainerComponent_Conditional_0_Case_8_Template, 1, 1)(9, TooltipContainerComponent_Conditional_0_Case_9_Template, 1, 1)(10, TooltipContainerComponent_Conditional_0_Case_10_Template, 1, 1)(11, TooltipContainerComponent_Conditional_0_Case_11_Template, 1, 1)(12, TooltipContainerComponent_Conditional_0_Case_12_Template, 2, 2, "div", 3)(
|
|
11809
|
+
i0.ɵɵconditionalCreate(3, TooltipContainerComponent_Conditional_0_Case_3_Template, 1, 1)(4, TooltipContainerComponent_Conditional_0_Case_4_Template, 1, 1)(5, TooltipContainerComponent_Conditional_0_Case_5_Template, 1, 1)(6, TooltipContainerComponent_Conditional_0_Case_6_Template, 1, 1)(7, TooltipContainerComponent_Conditional_0_Case_7_Template, 1, 1)(8, TooltipContainerComponent_Conditional_0_Case_8_Template, 1, 1)(9, TooltipContainerComponent_Conditional_0_Case_9_Template, 1, 1)(10, TooltipContainerComponent_Conditional_0_Case_10_Template, 1, 1)(11, TooltipContainerComponent_Conditional_0_Case_11_Template, 1, 1)(12, TooltipContainerComponent_Conditional_0_Case_12_Template, 1, 1)(13, TooltipContainerComponent_Conditional_0_Case_13_Template, 1, 1)(14, TooltipContainerComponent_Conditional_0_Case_14_Template, 2, 2, "div", 3)(15, TooltipContainerComponent_Conditional_0_Case_15_Template, 3, 2, "div", 4)(16, TooltipContainerComponent_Conditional_0_Case_16_Template, 2, 2, "div", 5);
|
|
11046
11810
|
i0.ɵɵelementEnd()();
|
|
11047
11811
|
} if (rf & 2) {
|
|
11048
11812
|
let tmp_6_0;
|
|
@@ -11055,7 +11819,7 @@ function TooltipContainerComponent_Conditional_0_Template(rf, ctx) { if (rf & 1)
|
|
|
11055
11819
|
i0.ɵɵadvance();
|
|
11056
11820
|
i0.ɵɵstoreLet(ctx_r1.tooltipContent());
|
|
11057
11821
|
i0.ɵɵadvance();
|
|
11058
|
-
i0.ɵɵconditional((tmp_6_0 = ctx_r1.tooltipType()) === "metric" ? 3 : tmp_6_0 === "status" ? 4 : tmp_6_0 === "trend" ? 5 : tmp_6_0 === "priority" ? 6 : tmp_6_0 === "badge" ? 7 : tmp_6_0 === "breakdown" ? 8 : tmp_6_0 === "competitive" ? 9 : tmp_6_0 === "insightsList" ? 10 : tmp_6_0 === "narrative" ? 11 : tmp_6_0 === "
|
|
11822
|
+
i0.ɵɵconditional((tmp_6_0 = ctx_r1.tooltipType()) === "metric" ? 3 : tmp_6_0 === "status" ? 4 : tmp_6_0 === "trend" ? 5 : tmp_6_0 === "priority" ? 6 : tmp_6_0 === "badge" ? 7 : tmp_6_0 === "breakdown" ? 8 : tmp_6_0 === "competitive" ? 9 : tmp_6_0 === "insightsList" ? 10 : tmp_6_0 === "narrative" ? 11 : tmp_6_0 === "competitiveStatus" ? 12 : tmp_6_0 === "funnelStageCompetitive" ? 13 : tmp_6_0 === "insight" ? 14 : tmp_6_0 === "text" ? 15 : 16);
|
|
11059
11823
|
} }
|
|
11060
11824
|
class TooltipContainerComponent {
|
|
11061
11825
|
constructor() {
|
|
@@ -11118,6 +11882,14 @@ class TooltipContainerComponent {
|
|
|
11118
11882
|
const content = this.tooltipContent();
|
|
11119
11883
|
return this.tooltipType() === 'narrative' ? content : null;
|
|
11120
11884
|
}, ...(ngDevMode ? [{ debugName: "narrativeContent" }] : []));
|
|
11885
|
+
this.competitiveStatusContent = computed(() => {
|
|
11886
|
+
const content = this.tooltipContent();
|
|
11887
|
+
return this.tooltipType() === 'competitiveStatus' ? content : null;
|
|
11888
|
+
}, ...(ngDevMode ? [{ debugName: "competitiveStatusContent" }] : []));
|
|
11889
|
+
this.funnelStageCompetitiveContent = computed(() => {
|
|
11890
|
+
const content = this.tooltipContent();
|
|
11891
|
+
return this.tooltipType() === 'funnelStageCompetitive' ? content : null;
|
|
11892
|
+
}, ...(ngDevMode ? [{ debugName: "funnelStageCompetitiveContent" }] : []));
|
|
11121
11893
|
this.tooltipLeft = computed(() => {
|
|
11122
11894
|
return this.calculateLeft();
|
|
11123
11895
|
}, ...(ngDevMode ? [{ debugName: "tooltipLeft" }] : []));
|
|
@@ -11375,7 +12147,7 @@ class TooltipContainerComponent {
|
|
|
11375
12147
|
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TooltipContainerComponent, selectors: [["symphiq-tooltip-container"]], hostVars: 2, hostBindings: function TooltipContainerComponent_HostBindings(rf, ctx) { if (rf & 2) {
|
|
11376
12148
|
i0.ɵɵstyleProp("display", "contents");
|
|
11377
12149
|
} }, decls: 1, vars: 1, consts: [[1, "z-[100]", "pointer-events-none", 3, "style"], [1, "z-[100]", "pointer-events-none"], [1, "rounded-lg", "shadow-2xl", "border", "backdrop-blur-xl", "px-4", "py-3", "pointer-events-auto", 3, "mouseenter", "mouseleave", "ngClass"], [1, "text-sm", "space-y-3", 3, "ngClass"], [1, "text-sm", "whitespace-pre-line", "leading-relaxed", 3, "ngClass"], [1, "text-sm", "whitespace-pre-line", 3, "ngClass"], [3, "content", "isLightMode"], [1, "space-y-2"], [1, "font-semibold"], [1, "whitespace-pre-line", "leading-relaxed"]], template: function TooltipContainerComponent_Template(rf, ctx) { if (rf & 1) {
|
|
11378
|
-
i0.ɵɵconditionalCreate(0, TooltipContainerComponent_Conditional_0_Template,
|
|
12150
|
+
i0.ɵɵconditionalCreate(0, TooltipContainerComponent_Conditional_0_Template, 17, 8, "div", 0);
|
|
11379
12151
|
} if (rf & 2) {
|
|
11380
12152
|
i0.ɵɵconditional(ctx.isVisible() ? 0 : -1);
|
|
11381
12153
|
} }, dependencies: [CommonModule, i1.NgClass, MetricValueTooltipComponent,
|
|
@@ -11386,7 +12158,9 @@ class TooltipContainerComponent {
|
|
|
11386
12158
|
BreakdownRowTooltipComponent,
|
|
11387
12159
|
CompetitiveBenchmarkTooltipComponent,
|
|
11388
12160
|
InsightsListTooltipComponent,
|
|
11389
|
-
NarrativeTooltipComponent
|
|
12161
|
+
NarrativeTooltipComponent,
|
|
12162
|
+
CompetitiveStatusTooltipComponent,
|
|
12163
|
+
FunnelStageCompetitiveTooltipComponent], encapsulation: 2, data: { animation: [
|
|
11390
12164
|
trigger('fadeInScale', [
|
|
11391
12165
|
transition(':enter', [
|
|
11392
12166
|
style({ opacity: 0 }),
|
|
@@ -11417,7 +12191,9 @@ class TooltipContainerComponent {
|
|
|
11417
12191
|
BreakdownRowTooltipComponent,
|
|
11418
12192
|
CompetitiveBenchmarkTooltipComponent,
|
|
11419
12193
|
InsightsListTooltipComponent,
|
|
11420
|
-
NarrativeTooltipComponent
|
|
12194
|
+
NarrativeTooltipComponent,
|
|
12195
|
+
CompetitiveStatusTooltipComponent,
|
|
12196
|
+
FunnelStageCompetitiveTooltipComponent
|
|
11421
12197
|
],
|
|
11422
12198
|
animations: [
|
|
11423
12199
|
trigger('fadeInScale', [
|
|
@@ -11507,6 +12283,20 @@ class TooltipContainerComponent {
|
|
|
11507
12283
|
[isLightMode]="isLightMode()" />
|
|
11508
12284
|
}
|
|
11509
12285
|
}
|
|
12286
|
+
@case ('competitiveStatus') {
|
|
12287
|
+
@if (competitiveStatusContent()) {
|
|
12288
|
+
<symphiq-competitive-status-tooltip
|
|
12289
|
+
[content]="competitiveStatusContent()!"
|
|
12290
|
+
[isLightMode]="isLightMode()" />
|
|
12291
|
+
}
|
|
12292
|
+
}
|
|
12293
|
+
@case ('funnelStageCompetitive') {
|
|
12294
|
+
@if (funnelStageCompetitiveContent()) {
|
|
12295
|
+
<symphiq-funnel-stage-competitive-tooltip
|
|
12296
|
+
[content]="funnelStageCompetitiveContent()!"
|
|
12297
|
+
[isLightMode]="isLightMode()" />
|
|
12298
|
+
}
|
|
12299
|
+
}
|
|
11510
12300
|
@case ('insight') {
|
|
11511
12301
|
<div [ngClass]="textClass()" class="text-sm space-y-3">
|
|
11512
12302
|
@if (content && typeof content === 'object' && 'sections' in content) {
|
|
@@ -11540,7 +12330,7 @@ class TooltipContainerComponent {
|
|
|
11540
12330
|
`
|
|
11541
12331
|
}]
|
|
11542
12332
|
}], () => [], null); })();
|
|
11543
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TooltipContainerComponent, { className: "TooltipContainerComponent", filePath: "lib/components/funnel-analysis-dashboard/tooltip/tooltip-container.component.ts", lineNumber:
|
|
12333
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TooltipContainerComponent, { className: "TooltipContainerComponent", filePath: "lib/components/funnel-analysis-dashboard/tooltip/tooltip-container.component.ts", lineNumber: 195 }); })();
|
|
11544
12334
|
|
|
11545
12335
|
function MobileFABComponent_Conditional_1_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
11546
12336
|
i0.ɵɵnamespaceSVG();
|
|
@@ -11777,7 +12567,9 @@ const FUNNEL_ANALYSIS = ({
|
|
|
11777
12567
|
"overallAssessment": {
|
|
11778
12568
|
"performanceItemId": "OVERALL_ASSESSMENT",
|
|
11779
12569
|
"grade": "C",
|
|
12570
|
+
"gradeDescription": "This is an example grade description",
|
|
11780
12571
|
"overallStatus": "AT_RISK",
|
|
12572
|
+
"overallStatusDescription": "This is an example overall description",
|
|
11781
12573
|
"narrative": "The business is experiencing robust growth in traffic and revenue, with desktop and organic channels leading performance. However, conversion rates have declined, and the funnel is leaking at multiple stages, particularly on mobile. Addressing conversion bottlenecks and optimizing the mobile experience are critical to unlocking further revenue growth.",
|
|
11782
12574
|
"priorYearTrend": "Strong growth in traffic and revenue compared to prior year, but conversion rates have declined.",
|
|
11783
12575
|
"targetPacingStatus": "Falling behind target pace for purchases and conversion rates, but overachieving in traffic and average order value. Immediate action needed to address conversion bottlenecks and mobile performance.",
|
|
@@ -23836,7 +24628,7 @@ class SymphiqFunnelAnalysisPreviewComponent {
|
|
|
23836
24628
|
this.gradeTooltip = computed(() => ({
|
|
23837
24629
|
title: 'Performance Grade',
|
|
23838
24630
|
grade: this.overallAssessment().grade || 'B',
|
|
23839
|
-
explanation: this.getGradeExplanation()
|
|
24631
|
+
explanation: this.overallAssessment().gradeDescription || this.getGradeExplanation()
|
|
23840
24632
|
}), ...(ngDevMode ? [{ debugName: "gradeTooltip" }] : []));
|
|
23841
24633
|
this.revenueTooltip = computed(() => {
|
|
23842
24634
|
const metric = this.revenueMetric();
|
|
@@ -24657,8 +25449,8 @@ class LineChartComponent {
|
|
|
24657
25449
|
const valueX = dataItem.get('valueX');
|
|
24658
25450
|
if (valueX) {
|
|
24659
25451
|
const date = new Date(valueX);
|
|
24660
|
-
const month = date.toLocaleString('default', { month: 'long' });
|
|
24661
|
-
const year = date.
|
|
25452
|
+
const month = date.toLocaleString('default', { month: 'long', timeZone: 'UTC' });
|
|
25453
|
+
const year = date.toLocaleString('default', { year: 'numeric', timeZone: 'UTC' });
|
|
24662
25454
|
monthText = `${month} ${year}`;
|
|
24663
25455
|
}
|
|
24664
25456
|
}
|
|
@@ -24701,7 +25493,7 @@ class LineChartComponent {
|
|
|
24701
25493
|
}
|
|
24702
25494
|
chartData.series?.forEach((seriesData, index) => {
|
|
24703
25495
|
const parsedData = (seriesData.data || []).map(d => ({
|
|
24704
|
-
date: new Date(d.date
|
|
25496
|
+
date: new Date(`${d.date}T00:00:00Z`).getTime(),
|
|
24705
25497
|
value: d.value
|
|
24706
25498
|
}));
|
|
24707
25499
|
// Get the Y-axis for this series, or use the first one as default
|