@anas_hameed/edly-saas-widget 0.1.4 → 0.1.6
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.
|
@@ -39,14 +39,14 @@ const FooterWidget = () => {
|
|
|
39
39
|
}, [footerData]);
|
|
40
40
|
(0, _react.useEffect)(() => {
|
|
41
41
|
const fetchData = async () => {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
42
|
+
if (!config?.MARKETING_SITE_BASE_URL) {
|
|
43
|
+
console.error("No url found for discovery", config);
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
46
|
try {
|
|
47
|
-
const response = await fetch(
|
|
47
|
+
const response = await fetch(`${config.MARKETING_SITE_BASE_URL}/wp-json/edly-wp-routes/footer`,
|
|
48
48
|
// `https://venus.discover.multitenantsdev.edly.io/wp-json/edly-wp-routes/footer`,
|
|
49
|
-
|
|
49
|
+
{
|
|
50
50
|
credentials: "include"
|
|
51
51
|
});
|
|
52
52
|
if (!response.ok) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["_frontendPlatform","require","_react","_dompurify","_interopRequireDefault","_jsxRuntime","e","__esModule","default","FooterWidget","footerData","setFooterData","useState","config","getConfig","useEffect","scrollBtn","document","getElementById","scrollToTop","window","scrollTo","top","behavior","toggleVisibility","scrollY","classList","add","remove","addEventListener","removeEventListener","fetchData","
|
|
1
|
+
{"version":3,"file":"index.js","names":["_frontendPlatform","require","_react","_dompurify","_interopRequireDefault","_jsxRuntime","e","__esModule","default","FooterWidget","footerData","setFooterData","useState","config","getConfig","useEffect","scrollBtn","document","getElementById","scrollToTop","window","scrollTo","top","behavior","toggleVisibility","scrollY","classList","add","remove","addEventListener","removeEventListener","fetchData","MARKETING_SITE_BASE_URL","console","error","response","fetch","credentials","ok","Error","status","jsonData","json","cleanHtml","DOMPurify","sanitize","ADD_ATTR","jsx","className","dangerouslySetInnerHTML","__html","_default","exports"],"sources":["../../src/FooterWidget/index.jsx"],"sourcesContent":["import { getConfig } from \"@edx/frontend-platform\";\nimport { useEffect, useState } from \"react\";\nimport DOMPurify from \"dompurify\";\nimport \"./main.scss\";\n\nconst FooterWidget = () => {\n const [footerData, setFooterData] = useState(\"\");\n const config = getConfig();\n\n useEffect(() => {\n const scrollBtn = document.getElementById(\"scrollToTop\");\n if (scrollBtn) {\n const scrollToTop = () => {\n window.scrollTo({ top: 0, behavior: \"smooth\" });\n };\n\n const toggleVisibility = () => {\n if (window.scrollY > 300) {\n scrollBtn.classList.add(\"show-btn\"); // We will style this class in SCSS\n } else {\n scrollBtn.classList.remove(\"show-btn\");\n }\n };\n\n scrollBtn.addEventListener(\"click\", scrollToTop);\n window.addEventListener(\"scroll\", toggleVisibility);\n\n return () => {\n scrollBtn.removeEventListener(\"click\", scrollToTop);\n window.removeEventListener(\"scroll\", toggleVisibility);\n };\n }\n }, [footerData]);\n\n useEffect(() => {\n const fetchData = async () => {\n if (!config?.MARKETING_SITE_BASE_URL) {\n console.error(\"No url found for discovery\", config);\n return;\n }\n try {\n const response = await fetch(\n `${config.MARKETING_SITE_BASE_URL}/wp-json/edly-wp-routes/footer`,\n // `https://venus.discover.multitenantsdev.edly.io/wp-json/edly-wp-routes/footer`,\n { credentials: \"include\" }\n );\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`);\n }\n\n const jsonData = await response.json();\n const cleanHtml = DOMPurify.sanitize(jsonData, {\n ADD_ATTR: [\"target\", \"class\"],\n });\n setFooterData(cleanHtml);\n } catch (error) {\n console.error(error);\n }\n };\n\n fetchData();\n }, []);\n\n return (\n <footer\n className=\"site-header\"\n dangerouslySetInnerHTML={{ __html: footerData }}\n />\n );\n};\n\nexport default FooterWidget;\n"],"mappings":";;;;;;AAAA,IAAAA,iBAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,UAAA,GAAAC,sBAAA,CAAAH,OAAA;AACAA,OAAA;AAAqB,IAAAI,WAAA,GAAAJ,OAAA;AAAA,SAAAG,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAErB,MAAMG,YAAY,GAAGA,CAAA,KAAM;EACzB,MAAM,CAACC,UAAU,EAAEC,aAAa,CAAC,GAAG,IAAAC,eAAQ,EAAC,EAAE,CAAC;EAChD,MAAMC,MAAM,GAAG,IAAAC,2BAAS,EAAC,CAAC;EAE1B,IAAAC,gBAAS,EAAC,MAAM;IACd,MAAMC,SAAS,GAAGC,QAAQ,CAACC,cAAc,CAAC,aAAa,CAAC;IACxD,IAAIF,SAAS,EAAE;MACb,MAAMG,WAAW,GAAGA,CAAA,KAAM;QACxBC,MAAM,CAACC,QAAQ,CAAC;UAAEC,GAAG,EAAE,CAAC;UAAEC,QAAQ,EAAE;QAAS,CAAC,CAAC;MACjD,CAAC;MAED,MAAMC,gBAAgB,GAAGA,CAAA,KAAM;QAC7B,IAAIJ,MAAM,CAACK,OAAO,GAAG,GAAG,EAAE;UACxBT,SAAS,CAACU,SAAS,CAACC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;QACvC,CAAC,MAAM;UACLX,SAAS,CAACU,SAAS,CAACE,MAAM,CAAC,UAAU,CAAC;QACxC;MACF,CAAC;MAEDZ,SAAS,CAACa,gBAAgB,CAAC,OAAO,EAAEV,WAAW,CAAC;MAChDC,MAAM,CAACS,gBAAgB,CAAC,QAAQ,EAAEL,gBAAgB,CAAC;MAEnD,OAAO,MAAM;QACXR,SAAS,CAACc,mBAAmB,CAAC,OAAO,EAAEX,WAAW,CAAC;QACnDC,MAAM,CAACU,mBAAmB,CAAC,QAAQ,EAAEN,gBAAgB,CAAC;MACxD,CAAC;IACH;EACF,CAAC,EAAE,CAACd,UAAU,CAAC,CAAC;EAEhB,IAAAK,gBAAS,EAAC,MAAM;IACd,MAAMgB,SAAS,GAAG,MAAAA,CAAA,KAAY;MAC5B,IAAI,CAAClB,MAAM,EAAEmB,uBAAuB,EAAE;QACpCC,OAAO,CAACC,KAAK,CAAC,4BAA4B,EAAErB,MAAM,CAAC;QACnD;MACF;MACA,IAAI;QACF,MAAMsB,QAAQ,GAAG,MAAMC,KAAK,CAC1B,GAAGvB,MAAM,CAACmB,uBAAuB,gCAAgC;QACjE;QACA;UAAEK,WAAW,EAAE;QAAU,CAC3B,CAAC;QACD,IAAI,CAACF,QAAQ,CAACG,EAAE,EAAE;UAChB,MAAM,IAAIC,KAAK,CAAC,uBAAuBJ,QAAQ,CAACK,MAAM,EAAE,CAAC;QAC3D;QAEA,MAAMC,QAAQ,GAAG,MAAMN,QAAQ,CAACO,IAAI,CAAC,CAAC;QACtC,MAAMC,SAAS,GAAGC,kBAAS,CAACC,QAAQ,CAACJ,QAAQ,EAAE;UAC7CK,QAAQ,EAAE,CAAC,QAAQ,EAAE,OAAO;QAC9B,CAAC,CAAC;QACFnC,aAAa,CAACgC,SAAS,CAAC;MAC1B,CAAC,CAAC,OAAOT,KAAK,EAAE;QACdD,OAAO,CAACC,KAAK,CAACA,KAAK,CAAC;MACtB;IACF,CAAC;IAEDH,SAAS,CAAC,CAAC;EACb,CAAC,EAAE,EAAE,CAAC;EAEN,oBACE,IAAA1B,WAAA,CAAA0C,GAAA;IACEC,SAAS,EAAC,aAAa;IACvBC,uBAAuB,EAAE;MAAEC,MAAM,EAAExC;IAAW;EAAE,CACjD,CAAC;AAEN,CAAC;AAAC,IAAAyC,QAAA,GAAAC,OAAA,CAAA5C,OAAA,GAEaC,YAAY","ignoreList":[]}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
$primary-color: var(--primary-color);
|
|
2
|
+
$text-color: #fff;
|
|
3
|
+
$background-color: #ffffff;
|
|
4
|
+
$submenu-bg: #ffffff;
|
|
5
|
+
$submenu-border: #d1d5db;
|
|
6
|
+
$submenu-shadow: 0 8px 20px rgba(0, 0, 0, 0.08);
|
|
7
|
+
$hover-bg: color-mix(in srgb, var(--primary-color) 5%, white 94%);
|
|
8
|
+
$transition-speed: 0.25s;
|
|
9
|
+
$font-family: 'Inter', sans-serif;
|
|
10
|
+
$mobile-breakpoint: 1230px;
|
|
11
|
+
$icon-size: 0.95em;
|
|
12
|
+
$font-size: 1em;
|
|
13
|
+
|
|
14
|
+
.site-footer {
|
|
15
|
+
background-color: $primary-color;
|
|
16
|
+
padding: 40px 15px;
|
|
17
|
+
color:$text-color ;
|
|
18
|
+
p {
|
|
19
|
+
font-size: $font-size;
|
|
20
|
+
}
|
|
21
|
+
h2, h3 {
|
|
22
|
+
margin-bottom: 20px;
|
|
23
|
+
color: white;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.widget {
|
|
28
|
+
&.widget_block {
|
|
29
|
+
&.widget_text {
|
|
30
|
+
font-size:$font-size ;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.wp-block-image {
|
|
36
|
+
img {
|
|
37
|
+
max-width: 80px;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
#menu-footer-menu {
|
|
42
|
+
padding: 0;
|
|
43
|
+
margin: 0;
|
|
44
|
+
list-style: none;
|
|
45
|
+
li {
|
|
46
|
+
margin-bottom: 5px;
|
|
47
|
+
list-style: none;
|
|
48
|
+
a {
|
|
49
|
+
text-decoration: none;
|
|
50
|
+
color: $text-color;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
.social-link {
|
|
56
|
+
padding: 0;
|
|
57
|
+
margin: 0;
|
|
58
|
+
list-style: none;
|
|
59
|
+
display: flex;
|
|
60
|
+
li {
|
|
61
|
+
margin: 0 10px 10px 0;
|
|
62
|
+
a{
|
|
63
|
+
color: white;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
#scrollToTop {
|
|
69
|
+
position: fixed;
|
|
70
|
+
bottom: 40px;
|
|
71
|
+
right: 20px;
|
|
72
|
+
background-color: $submenu-bg;
|
|
73
|
+
color: $primary-color;
|
|
74
|
+
border: 1px solid $primary-color;
|
|
75
|
+
border-radius: 6px;
|
|
76
|
+
svg {
|
|
77
|
+
width: 40px;
|
|
78
|
+
height: 40px;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
.copyright-area {
|
|
83
|
+
padding-top: 20px;
|
|
84
|
+
p {
|
|
85
|
+
margin: 0;
|
|
86
|
+
font-size: 12px;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/* Mobile Menu */
|
|
91
|
+
@media (max-width: $mobile-breakpoint) {
|
|
92
|
+
#menu-footer-menu {
|
|
93
|
+
margin-bottom: 20px;
|
|
94
|
+
}
|
|
95
|
+
.site-footer {
|
|
96
|
+
padding: 30px 0;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
@@ -7,6 +7,7 @@ exports.default = void 0;
|
|
|
7
7
|
var _frontendPlatform = require("@edx/frontend-platform");
|
|
8
8
|
var _react = require("react");
|
|
9
9
|
var _dompurify = _interopRequireDefault(require("dompurify"));
|
|
10
|
+
var _reactHelmet = require("react-helmet");
|
|
10
11
|
require("./main.scss");
|
|
11
12
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
12
13
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
@@ -17,7 +18,19 @@ const HeaderWidget = () => {
|
|
|
17
18
|
const [isMobile, setIsMobile] = (0, _react.useState)(window.innerWidth < WIDTH);
|
|
18
19
|
const [isLoading, setIsLoading] = (0, _react.useState)(true);
|
|
19
20
|
const config = (0, _frontendPlatform.getConfig)();
|
|
21
|
+
|
|
22
|
+
// useEffect(() => {
|
|
23
|
+
// if (isLoading) {
|
|
24
|
+
// document.body.classList.add("loader");
|
|
25
|
+
// }
|
|
26
|
+
// return () => {
|
|
27
|
+
// document.body.classList.remove("loader");
|
|
28
|
+
// };
|
|
29
|
+
// }, [isLoading]);
|
|
30
|
+
|
|
20
31
|
(0, _react.useEffect)(() => {
|
|
32
|
+
console.log("color: ", config.COLORS);
|
|
33
|
+
document.documentElement.style.setProperty("--primary-color", config?.COLORS?.primary || "#de2025");
|
|
21
34
|
const handleResize = () => {
|
|
22
35
|
setIsMobile(window.innerWidth < WIDTH);
|
|
23
36
|
if (window.innerWidth >= WIDTH) {
|
|
@@ -25,18 +38,20 @@ const HeaderWidget = () => {
|
|
|
25
38
|
}
|
|
26
39
|
};
|
|
27
40
|
window.addEventListener("resize", handleResize);
|
|
28
|
-
return () =>
|
|
41
|
+
return () => {
|
|
42
|
+
window.removeEventListener("resize", handleResize);
|
|
43
|
+
};
|
|
29
44
|
}, []);
|
|
30
45
|
(0, _react.useEffect)(() => {
|
|
31
46
|
const fetchData = async () => {
|
|
32
|
-
if (!config?.
|
|
47
|
+
if (!config?.MARKETING_SITE_BASE_URL) {
|
|
33
48
|
console.error("No url found for discovery", config);
|
|
34
49
|
return;
|
|
35
50
|
}
|
|
36
51
|
try {
|
|
37
|
-
const response = await fetch(
|
|
52
|
+
const response = await fetch(`${config.MARKETING_SITE_BASE_URL}/wp-json/edly-wp-routes/nav-menu`,
|
|
38
53
|
// "https://venus.discover.multitenantsdev.edly.io/wp-json/edly-wp-routes/nav-menu",
|
|
39
|
-
|
|
54
|
+
{
|
|
40
55
|
credentials: "include"
|
|
41
56
|
});
|
|
42
57
|
if (!response.ok) {
|
|
@@ -48,9 +63,6 @@ const HeaderWidget = () => {
|
|
|
48
63
|
ADD_ATTR: ["target", "class"]
|
|
49
64
|
});
|
|
50
65
|
setHeaderData(cleanHtml);
|
|
51
|
-
// setHeaderData(
|
|
52
|
-
// `<div class="primary-menu-container"><ul id="menu-primary-menu" class="menu"><li id="menu-item-40" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-home menu-item-40"><a href="https://venus.discover.multitenantsdev.edly.io/">Home</a></li>\n<li id="menu-item-41" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-41"><a href="https://venus.discover.multitenantsdev.edly.io/courses/">Courses</a></li>\n<li id="menu-item-331" class="menu-item menu-item-type-custom menu-item-object-custom edx-link custom_link_filter menu-item-object-custom_link_filter menu-item-331"><a href="https://venus.discover.multitenantsdev.edly.io/courses-with-filter/">Courses Filters</a>\n<ul class="sub-menu">\n\t<li id="menu-item-submenu-item-course_categories" class="submenu-item-class menu-item-submenu-item-course_categories"><a href="#">Course Category</a>\n\t<ul class="sub-menu">\n\t\t<li id="menu-item-submenu-item-course_categories-44" class="submenu-item-class menu-item-submenu-item-course_categories-44"><a href="https://venus.discover.multitenantsdev.edly.io/courses-with-filter/?filter_course_categories=design">Design</a></li>\n\t\t<li id="menu-item-submenu-item-course_categories-27" class="submenu-item-class menu-item-submenu-item-course_categories-27"><a href="https://venus.discover.multitenantsdev.edly.io/courses-with-filter/?filter_course_categories=edly">Edly</a></li>\n\t\t<li id="menu-item-submenu-item-course_categories-42" class="submenu-item-class menu-item-submenu-item-course_categories-42"><a href="https://venus.discover.multitenantsdev.edly.io/courses-with-filter/?filter_course_categories=engineering">Engineering</a></li>\n\t\t<li id="menu-item-submenu-item-course_categories-41" class="submenu-item-class menu-item-submenu-item-course_categories-41"><a href="https://venus.discover.multitenantsdev.edly.io/courses-with-filter/?filter_course_categories=marketing">Marketing</a></li>\n\t\t<li id="menu-item-submenu-item-course_categories-40" class="submenu-item-class menu-item-submenu-item-course_categories-40"><a href="https://venus.discover.multitenantsdev.edly.io/courses-with-filter/?filter_course_categories=qa">QA</a></li>\n\t\t<li id="menu-item-submenu-item-course_categories-43" class="submenu-item-class menu-item-submenu-item-course_categories-43"><a href="https://venus.discover.multitenantsdev.edly.io/courses-with-filter/?filter_course_categories=sales">Sales</a></li>\n\t\t<li id="menu-item-submenu-item-course_categories-26" class="submenu-item-class menu-item-submenu-item-course_categories-26"><a href="https://venus.discover.multitenantsdev.edly.io/courses-with-filter/?filter_course_categories=teak">Teak</a></li>\n\t</ul>\n</li>\n\t<li id="menu-item-submenu-item-course_difficulty" class="submenu-item-class menu-item-submenu-item-course_difficulty"><a href="#">Difficulty</a>\n\t<ul class="sub-menu">\n\t\t<li id="menu-item-submenu-item-course_difficulty-32" class="submenu-item-class menu-item-submenu-item-course_difficulty-32"><a href="https://venus.discover.multitenantsdev.edly.io/courses-with-filter/?filter_course_difficulty=easy">Easy</a></li>\n\t\t<li id="menu-item-submenu-item-course_difficulty-34" class="submenu-item-class menu-item-submenu-item-course_difficulty-34"><a href="https://venus.discover.multitenantsdev.edly.io/courses-with-filter/?filter_course_difficulty=hard">Hard</a></li>\n\t\t<li id="menu-item-submenu-item-course_difficulty-33" class="submenu-item-class menu-item-submenu-item-course_difficulty-33"><a href="https://venus.discover.multitenantsdev.edly.io/courses-with-filter/?filter_course_difficulty=medium">Medium</a></li>\n\t</ul>\n</li>\n\t<li id="menu-item-submenu-item-course_job_role" class="submenu-item-class menu-item-submenu-item-course_job_role"><a href="#">Job Role</a>\n\t<ul class="sub-menu">\n\t\t<li id="menu-item-submenu-item-course_job_role-31" class="submenu-item-class menu-item-submenu-item-course_job_role-31"><a href="https://venus.discover.multitenantsdev.edly.io/courses-with-filter/?filter_course_job_role=dev">Dev</a></li>\n\t\t<li id="menu-item-submenu-item-course_job_role-30" class="submenu-item-class menu-item-submenu-item-course_job_role-30"><a href="https://venus.discover.multitenantsdev.edly.io/courses-with-filter/?filter_course_job_role=qa">QA</a></li>\n\t</ul>\n</li>\n\t<li id="menu-item-submenu-item-course_industry_certification" class="submenu-item-class menu-item-submenu-item-course_industry_certification"><a href="#">Industry Certification</a>\n\t<ul class="sub-menu">\n\t\t<li id="menu-item-submenu-item-course_industry_certification-37" class="submenu-item-class menu-item-submenu-item-course_industry_certification-37"><a href="https://venus.discover.multitenantsdev.edly.io/courses-with-filter/?filter_course_industry_certification=aws">AWS</a></li>\n\t\t<li id="menu-item-submenu-item-course_industry_certification-36" class="submenu-item-class menu-item-submenu-item-course_industry_certification-36"><a href="https://venus.discover.multitenantsdev.edly.io/courses-with-filter/?filter_course_industry_certification=istqb">ISTQB</a></li>\n\t</ul>\n</li>\n\t<li id="menu-item-submenu-item-course_format" class="submenu-item-class menu-item-submenu-item-course_format"><a href="#">Format</a>\n\t<ul class="sub-menu">\n\t\t<li id="menu-item-submenu-item-course_format-35" class="submenu-item-class menu-item-submenu-item-course_format-35"><a href="https://venus.discover.multitenantsdev.edly.io/courses-with-filter/?filter_course_format=test">Test</a></li>\n\t</ul>\n</li>\n\t<li id="menu-item-submenu-item-course_owner" class="submenu-item-class menu-item-submenu-item-course_owner"><a href="#">Owner</a>\n\t<ul class="sub-menu">\n\t\t<li id="menu-item-submenu-item-course_owner-38" class="submenu-item-class menu-item-submenu-item-course_owner-38"><a href="https://venus.discover.multitenantsdev.edly.io/courses-with-filter/?filter_course_owner=abdullah">Abdullah</a></li>\n\t\t<li id="menu-item-submenu-item-course_owner-39" class="submenu-item-class menu-item-submenu-item-course_owner-39"><a href="https://venus.discover.multitenantsdev.edly.io/courses-with-filter/?filter_course_owner=waleed">Waleed</a></li>\n\t</ul>\n</li>\n</ul>\n</li>\n<li id="menu-item-241" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-241"><a href="https://venus.discover.multitenantsdev.edly.io/programs/">Program</a></li>\n<li id="menu-item-42" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-42"><a href="https://venus.discover.multitenantsdev.edly.io/contact/">Contact</a></li>\n<li id="menu-item-295" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-295"><a href="https://venus.discover.multitenantsdev.edly.io/instructors/">Instructors</a></li>\n<li id="menu-item-43" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-43"><a href="https://venus.discover.multitenantsdev.edly.io/blog/">Blog</a></li>\n<li id="menu-item-44" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-44"><a href="https://venus.discover.multitenantsdev.edly.io/activities/">Activities</a></li>\n<li id="menu-item-45" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-45"><a href="https://venus.discover.multitenantsdev.edly.io/academics/">Academics</a></li>\n<li id="menu-item-46" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-46"><a href="https://venus.discover.multitenantsdev.edly.io/about-us/">About US</a></li>\n<li id="menu-item-53" class="edx-link menu_openedx menu-item menu-item-type-custom menu-item-object-menu_openedx menu-item-has-children menu-item-53"><a class='user-profile-wrap' href='https://venus.multitenantsdev.edly.io#'><img src='https://venus.multitenantsdev.edly.io/media/profile-images/a67985db4fb19227764c2b560e28b0b9_50.jpg?v=1757068807' /><span class='user-title'>ans_hameed</span><span class='user-full-name'>Anas hameed</span></a>\n<ul class="sub-menu">\n\t<li id="menu-item-54" class="edx-link dashboard_openedx menu-item menu-item-type-custom menu-item-object-dashboard_openedx menu-item-54"><a href="https://venus.multitenantsdev.edly.io/dashboard">Dashboard</a></li>\n\t<li id="menu-item-55" class="edx-link profile_openedx menu-item menu-item-type-custom menu-item-object-profile_openedx menu-item-55"><a href="https://venus.multitenantsdev.edly.io/u/ans_hameed">Profile</a></li>\n\t<li id="menu-item-56" class="edx-link account_openedx menu-item menu-item-type-custom menu-item-object-account_openedx menu-item-56"><a href="https://venus.multitenantsdev.edly.io/account/settings">Account</a></li>\n\t<li id="menu-item-57" class="edx-link signout_openedx menu-item menu-item-type-custom menu-item-object-signout_openedx menu-item-57"><a href="https://venus.discover.multitenantsdev.edly.io/logout">Sign Out</a></li>\n</ul>\n</li>\n</ul></div>`
|
|
53
|
-
// );
|
|
54
66
|
} else {
|
|
55
67
|
console.error("Data object is not json");
|
|
56
68
|
}
|
|
@@ -65,37 +77,45 @@ const HeaderWidget = () => {
|
|
|
65
77
|
const toggleMenu = () => {
|
|
66
78
|
setIsOpen(!isOpen);
|
|
67
79
|
};
|
|
68
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
background: "none",
|
|
76
|
-
border: "none",
|
|
77
|
-
cursor: "pointer",
|
|
78
|
-
fontSize: "24px"
|
|
79
|
-
},
|
|
80
|
-
children: isOpen ? "✖" : "☰"
|
|
80
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
81
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactHelmet.Helmet, {
|
|
82
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)("link", {
|
|
83
|
+
rel: "stylesheet",
|
|
84
|
+
href: "https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css",
|
|
85
|
+
crossOrigin: "anonymous"
|
|
86
|
+
})
|
|
81
87
|
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
|
|
82
|
-
className: `
|
|
83
|
-
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
}), /*#__PURE__*/(0, _jsxRuntime.
|
|
95
|
-
className: "
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
88
|
+
className: `shadow-lg ${isMobile ? "header-frame" : ""}`,
|
|
89
|
+
children: [isMobile && /*#__PURE__*/(0, _jsxRuntime.jsx)("button", {
|
|
90
|
+
className: "menuOpner",
|
|
91
|
+
type: "button",
|
|
92
|
+
onClick: toggleMenu,
|
|
93
|
+
style: {
|
|
94
|
+
background: "none",
|
|
95
|
+
border: "none",
|
|
96
|
+
cursor: "pointer",
|
|
97
|
+
fontSize: "24px"
|
|
98
|
+
},
|
|
99
|
+
children: isOpen ? "✖" : "☰"
|
|
100
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
|
|
101
|
+
className: `header-holder ${isMobile ? "mobile-menu" : ""} ${isOpen ? "" : "mobile-hide"}`,
|
|
102
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("a", {
|
|
103
|
+
href: "/",
|
|
104
|
+
className: "custom-logo-link",
|
|
105
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)("img", {
|
|
106
|
+
width: "216",
|
|
107
|
+
height: "140",
|
|
108
|
+
src: config.LOGO_URL,
|
|
109
|
+
className: "custom-logo",
|
|
110
|
+
alt: "Venus",
|
|
111
|
+
decoding: "async"
|
|
112
|
+
})
|
|
113
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)("header", {
|
|
114
|
+
className: "site-header",
|
|
115
|
+
dangerouslySetInnerHTML: {
|
|
116
|
+
__html: headerData
|
|
117
|
+
}
|
|
118
|
+
})]
|
|
99
119
|
})]
|
|
100
120
|
})]
|
|
101
121
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["_frontendPlatform","require","_react","_dompurify","_interopRequireDefault","_jsxRuntime","e","__esModule","default","HeaderWidget","headerData","setHeaderData","useState","isOpen","setIsOpen","WIDTH","isMobile","setIsMobile","window","innerWidth","isLoading","setIsLoading","config","getConfig","useEffect","handleResize","addEventListener","removeEventListener","fetchData","DISCOVERY_URL","console","error","response","fetch","credentials","ok","Error","status","jsonData","json","cleanHtml","DOMPurify","sanitize","primary","ADD_ATTR","toggleMenu","jsxs","className","children","jsx","type","onClick","style","background","border","cursor","fontSize","href","width","height","src","LOGO_URL","alt","decoding","dangerouslySetInnerHTML","__html","_default","exports"],"sources":["../../src/HeaderWidget/index.jsx"],"sourcesContent":["import { getConfig } from \"@edx/frontend-platform\";\nimport { useEffect, useState } from \"react\";\nimport DOMPurify from \"dompurify\";\nimport \"./main.scss\";\n\nconst HeaderWidget = () => {\n const [headerData, setHeaderData] = useState(\"\");\n const [isOpen, setIsOpen] = useState(false);\n const WIDTH = 1230;\n const [isMobile, setIsMobile] = useState(window.innerWidth < WIDTH);\n const [isLoading, setIsLoading] = useState(true);\n const config = getConfig();\n\n useEffect(() => {\n const handleResize = () => {\n setIsMobile(window.innerWidth < WIDTH);\n if (window.innerWidth >= WIDTH) {\n setIsOpen(false);\n }\n };\n\n window.addEventListener(\"resize\", handleResize);\n return () => window.removeEventListener(\"resize\", handleResize);\n }, []);\n\n useEffect(() => {\n const fetchData = async () => {\n if (!config?.DISCOVERY_URL) {\n console.error(\"No url found for discovery\", config);\n return;\n }\n try {\n const response = await fetch(\n // \"https://venus.discover.multitenantsdev.edly.io/wp-json/edly-wp-routes/nav-menu\",\n `${config.DISCOVERY_URL}/wp-json/edly-wp-routes/nav-menu`,\n { credentials: \"include\" }\n );\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`);\n }\n\n const jsonData = await response.json();\n\n if (typeof jsonData === \"object\") {\n const cleanHtml = DOMPurify.sanitize(jsonData.primary, {\n ADD_ATTR: [\"target\", \"class\"],\n });\n setHeaderData(cleanHtml);\n // setHeaderData(\n // `<div class=\"primary-menu-container\"><ul id=\"menu-primary-menu\" class=\"menu\"><li id=\"menu-item-40\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-home menu-item-40\"><a href=\"https://venus.discover.multitenantsdev.edly.io/\">Home</a></li>\\n<li id=\"menu-item-41\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-41\"><a href=\"https://venus.discover.multitenantsdev.edly.io/courses/\">Courses</a></li>\\n<li id=\"menu-item-331\" class=\"menu-item menu-item-type-custom menu-item-object-custom edx-link custom_link_filter menu-item-object-custom_link_filter menu-item-331\"><a href=\"https://venus.discover.multitenantsdev.edly.io/courses-with-filter/\">Courses Filters</a>\\n<ul class=\"sub-menu\">\\n\\t<li id=\"menu-item-submenu-item-course_categories\" class=\"submenu-item-class menu-item-submenu-item-course_categories\"><a href=\"#\">Course Category</a>\\n\\t<ul class=\"sub-menu\">\\n\\t\\t<li id=\"menu-item-submenu-item-course_categories-44\" class=\"submenu-item-class menu-item-submenu-item-course_categories-44\"><a href=\"https://venus.discover.multitenantsdev.edly.io/courses-with-filter/?filter_course_categories=design\">Design</a></li>\\n\\t\\t<li id=\"menu-item-submenu-item-course_categories-27\" class=\"submenu-item-class menu-item-submenu-item-course_categories-27\"><a href=\"https://venus.discover.multitenantsdev.edly.io/courses-with-filter/?filter_course_categories=edly\">Edly</a></li>\\n\\t\\t<li id=\"menu-item-submenu-item-course_categories-42\" class=\"submenu-item-class menu-item-submenu-item-course_categories-42\"><a href=\"https://venus.discover.multitenantsdev.edly.io/courses-with-filter/?filter_course_categories=engineering\">Engineering</a></li>\\n\\t\\t<li id=\"menu-item-submenu-item-course_categories-41\" class=\"submenu-item-class menu-item-submenu-item-course_categories-41\"><a href=\"https://venus.discover.multitenantsdev.edly.io/courses-with-filter/?filter_course_categories=marketing\">Marketing</a></li>\\n\\t\\t<li id=\"menu-item-submenu-item-course_categories-40\" class=\"submenu-item-class menu-item-submenu-item-course_categories-40\"><a href=\"https://venus.discover.multitenantsdev.edly.io/courses-with-filter/?filter_course_categories=qa\">QA</a></li>\\n\\t\\t<li id=\"menu-item-submenu-item-course_categories-43\" class=\"submenu-item-class menu-item-submenu-item-course_categories-43\"><a href=\"https://venus.discover.multitenantsdev.edly.io/courses-with-filter/?filter_course_categories=sales\">Sales</a></li>\\n\\t\\t<li id=\"menu-item-submenu-item-course_categories-26\" class=\"submenu-item-class menu-item-submenu-item-course_categories-26\"><a href=\"https://venus.discover.multitenantsdev.edly.io/courses-with-filter/?filter_course_categories=teak\">Teak</a></li>\\n\\t</ul>\\n</li>\\n\\t<li id=\"menu-item-submenu-item-course_difficulty\" class=\"submenu-item-class menu-item-submenu-item-course_difficulty\"><a href=\"#\">Difficulty</a>\\n\\t<ul class=\"sub-menu\">\\n\\t\\t<li id=\"menu-item-submenu-item-course_difficulty-32\" class=\"submenu-item-class menu-item-submenu-item-course_difficulty-32\"><a href=\"https://venus.discover.multitenantsdev.edly.io/courses-with-filter/?filter_course_difficulty=easy\">Easy</a></li>\\n\\t\\t<li id=\"menu-item-submenu-item-course_difficulty-34\" class=\"submenu-item-class menu-item-submenu-item-course_difficulty-34\"><a href=\"https://venus.discover.multitenantsdev.edly.io/courses-with-filter/?filter_course_difficulty=hard\">Hard</a></li>\\n\\t\\t<li id=\"menu-item-submenu-item-course_difficulty-33\" class=\"submenu-item-class menu-item-submenu-item-course_difficulty-33\"><a href=\"https://venus.discover.multitenantsdev.edly.io/courses-with-filter/?filter_course_difficulty=medium\">Medium</a></li>\\n\\t</ul>\\n</li>\\n\\t<li id=\"menu-item-submenu-item-course_job_role\" class=\"submenu-item-class menu-item-submenu-item-course_job_role\"><a href=\"#\">Job Role</a>\\n\\t<ul class=\"sub-menu\">\\n\\t\\t<li id=\"menu-item-submenu-item-course_job_role-31\" class=\"submenu-item-class menu-item-submenu-item-course_job_role-31\"><a href=\"https://venus.discover.multitenantsdev.edly.io/courses-with-filter/?filter_course_job_role=dev\">Dev</a></li>\\n\\t\\t<li id=\"menu-item-submenu-item-course_job_role-30\" class=\"submenu-item-class menu-item-submenu-item-course_job_role-30\"><a href=\"https://venus.discover.multitenantsdev.edly.io/courses-with-filter/?filter_course_job_role=qa\">QA</a></li>\\n\\t</ul>\\n</li>\\n\\t<li id=\"menu-item-submenu-item-course_industry_certification\" class=\"submenu-item-class menu-item-submenu-item-course_industry_certification\"><a href=\"#\">Industry Certification</a>\\n\\t<ul class=\"sub-menu\">\\n\\t\\t<li id=\"menu-item-submenu-item-course_industry_certification-37\" class=\"submenu-item-class menu-item-submenu-item-course_industry_certification-37\"><a href=\"https://venus.discover.multitenantsdev.edly.io/courses-with-filter/?filter_course_industry_certification=aws\">AWS</a></li>\\n\\t\\t<li id=\"menu-item-submenu-item-course_industry_certification-36\" class=\"submenu-item-class menu-item-submenu-item-course_industry_certification-36\"><a href=\"https://venus.discover.multitenantsdev.edly.io/courses-with-filter/?filter_course_industry_certification=istqb\">ISTQB</a></li>\\n\\t</ul>\\n</li>\\n\\t<li id=\"menu-item-submenu-item-course_format\" class=\"submenu-item-class menu-item-submenu-item-course_format\"><a href=\"#\">Format</a>\\n\\t<ul class=\"sub-menu\">\\n\\t\\t<li id=\"menu-item-submenu-item-course_format-35\" class=\"submenu-item-class menu-item-submenu-item-course_format-35\"><a href=\"https://venus.discover.multitenantsdev.edly.io/courses-with-filter/?filter_course_format=test\">Test</a></li>\\n\\t</ul>\\n</li>\\n\\t<li id=\"menu-item-submenu-item-course_owner\" class=\"submenu-item-class menu-item-submenu-item-course_owner\"><a href=\"#\">Owner</a>\\n\\t<ul class=\"sub-menu\">\\n\\t\\t<li id=\"menu-item-submenu-item-course_owner-38\" class=\"submenu-item-class menu-item-submenu-item-course_owner-38\"><a href=\"https://venus.discover.multitenantsdev.edly.io/courses-with-filter/?filter_course_owner=abdullah\">Abdullah</a></li>\\n\\t\\t<li id=\"menu-item-submenu-item-course_owner-39\" class=\"submenu-item-class menu-item-submenu-item-course_owner-39\"><a href=\"https://venus.discover.multitenantsdev.edly.io/courses-with-filter/?filter_course_owner=waleed\">Waleed</a></li>\\n\\t</ul>\\n</li>\\n</ul>\\n</li>\\n<li id=\"menu-item-241\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-241\"><a href=\"https://venus.discover.multitenantsdev.edly.io/programs/\">Program</a></li>\\n<li id=\"menu-item-42\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-42\"><a href=\"https://venus.discover.multitenantsdev.edly.io/contact/\">Contact</a></li>\\n<li id=\"menu-item-295\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-295\"><a href=\"https://venus.discover.multitenantsdev.edly.io/instructors/\">Instructors</a></li>\\n<li id=\"menu-item-43\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-43\"><a href=\"https://venus.discover.multitenantsdev.edly.io/blog/\">Blog</a></li>\\n<li id=\"menu-item-44\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-44\"><a href=\"https://venus.discover.multitenantsdev.edly.io/activities/\">Activities</a></li>\\n<li id=\"menu-item-45\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-45\"><a href=\"https://venus.discover.multitenantsdev.edly.io/academics/\">Academics</a></li>\\n<li id=\"menu-item-46\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-46\"><a href=\"https://venus.discover.multitenantsdev.edly.io/about-us/\">About US</a></li>\\n<li id=\"menu-item-53\" class=\"edx-link menu_openedx menu-item menu-item-type-custom menu-item-object-menu_openedx menu-item-has-children menu-item-53\"><a class='user-profile-wrap' href='https://venus.multitenantsdev.edly.io#'><img src='https://venus.multitenantsdev.edly.io/media/profile-images/a67985db4fb19227764c2b560e28b0b9_50.jpg?v=1757068807' /><span class='user-title'>ans_hameed</span><span class='user-full-name'>Anas hameed</span></a>\\n<ul class=\"sub-menu\">\\n\\t<li id=\"menu-item-54\" class=\"edx-link dashboard_openedx menu-item menu-item-type-custom menu-item-object-dashboard_openedx menu-item-54\"><a href=\"https://venus.multitenantsdev.edly.io/dashboard\">Dashboard</a></li>\\n\\t<li id=\"menu-item-55\" class=\"edx-link profile_openedx menu-item menu-item-type-custom menu-item-object-profile_openedx menu-item-55\"><a href=\"https://venus.multitenantsdev.edly.io/u/ans_hameed\">Profile</a></li>\\n\\t<li id=\"menu-item-56\" class=\"edx-link account_openedx menu-item menu-item-type-custom menu-item-object-account_openedx menu-item-56\"><a href=\"https://venus.multitenantsdev.edly.io/account/settings\">Account</a></li>\\n\\t<li id=\"menu-item-57\" class=\"edx-link signout_openedx menu-item menu-item-type-custom menu-item-object-signout_openedx menu-item-57\"><a href=\"https://venus.discover.multitenantsdev.edly.io/logout\">Sign Out</a></li>\\n</ul>\\n</li>\\n</ul></div>`\n // );\n } else {\n console.error(\"Data object is not json\");\n }\n } catch (error) {\n console.error(error);\n } finally {\n setIsLoading(false);\n }\n };\n\n fetchData();\n }, []);\n\n const toggleMenu = () => {\n setIsOpen(!isOpen);\n };\n\n return (\n <div className={`shadow-lg ${isMobile ? \"header-frame\" : \"\"}`}>\n {isMobile && (\n <button\n className=\"menuOpner\"\n type=\"button\"\n onClick={toggleMenu}\n style={{\n background: \"none\",\n border: \"none\",\n cursor: \"pointer\",\n fontSize: \"24px\",\n }}\n >\n {isOpen ? \"✖\" : \"☰\"}\n </button>\n )}\n <div\n className={`header-holder ${isMobile ? \"mobile-menu\" : \"\"} ${\n isOpen ? \"\" : \"mobile-hide\"\n }`}\n >\n <a href=\"/\" className=\"custom-logo-link\">\n <img\n width=\"216\"\n height=\"140\"\n src={config.LOGO_URL}\n className=\"custom-logo\"\n alt=\"Venus\"\n decoding=\"async\"\n />\n </a>\n <header\n className=\"site-header\"\n dangerouslySetInnerHTML={{ __html: headerData }}\n />\n </div>\n </div>\n );\n};\n\nexport default HeaderWidget;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["_frontendPlatform","require","_react","_dompurify","_interopRequireDefault","_reactHelmet","_jsxRuntime","e","__esModule","default","HeaderWidget","headerData","setHeaderData","useState","isOpen","setIsOpen","WIDTH","isMobile","setIsMobile","window","innerWidth","isLoading","setIsLoading","config","getConfig","useEffect","console","log","COLORS","document","documentElement","style","setProperty","primary","handleResize","addEventListener","removeEventListener","fetchData","MARKETING_SITE_BASE_URL","error","response","fetch","credentials","ok","Error","status","jsonData","json","cleanHtml","DOMPurify","sanitize","ADD_ATTR","toggleMenu","jsxs","Fragment","children","jsx","Helmet","rel","href","crossOrigin","className","type","onClick","background","border","cursor","fontSize","width","height","src","LOGO_URL","alt","decoding","dangerouslySetInnerHTML","__html","_default","exports"],"sources":["../../src/HeaderWidget/index.jsx"],"sourcesContent":["import { getConfig } from \"@edx/frontend-platform\";\nimport { useEffect, useState } from \"react\";\nimport DOMPurify from \"dompurify\";\nimport { Helmet } from \"react-helmet\";\nimport \"./main.scss\";\n\nconst HeaderWidget = () => {\n const [headerData, setHeaderData] = useState(\"\");\n const [isOpen, setIsOpen] = useState(false);\n const WIDTH = 1230;\n const [isMobile, setIsMobile] = useState(window.innerWidth < WIDTH);\n const [isLoading, setIsLoading] = useState(true);\n const config = getConfig();\n\n // useEffect(() => {\n // if (isLoading) {\n // document.body.classList.add(\"loader\");\n // }\n // return () => {\n // document.body.classList.remove(\"loader\");\n // };\n // }, [isLoading]);\n\n useEffect(() => {\n console.log(\"color: \", config.COLORS);\n document.documentElement.style.setProperty(\n \"--primary-color\",\n config?.COLORS?.primary || \"#de2025\"\n );\n\n const handleResize = () => {\n setIsMobile(window.innerWidth < WIDTH);\n if (window.innerWidth >= WIDTH) {\n setIsOpen(false);\n }\n };\n\n window.addEventListener(\"resize\", handleResize);\n return () => {\n window.removeEventListener(\"resize\", handleResize);\n };\n }, []);\n\n useEffect(() => {\n const fetchData = async () => {\n if (!config?.MARKETING_SITE_BASE_URL) {\n console.error(\"No url found for discovery\", config);\n return;\n }\n try {\n const response = await fetch(\n `${config.MARKETING_SITE_BASE_URL}/wp-json/edly-wp-routes/nav-menu`,\n // \"https://venus.discover.multitenantsdev.edly.io/wp-json/edly-wp-routes/nav-menu\",\n { credentials: \"include\" }\n );\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`);\n }\n\n const jsonData = await response.json();\n\n if (typeof jsonData === \"object\") {\n const cleanHtml = DOMPurify.sanitize(jsonData.primary, {\n ADD_ATTR: [\"target\", \"class\"],\n });\n setHeaderData(cleanHtml);\n } else {\n console.error(\"Data object is not json\");\n }\n } catch (error) {\n console.error(error);\n } finally {\n setIsLoading(false);\n }\n };\n\n fetchData();\n }, []);\n\n const toggleMenu = () => {\n setIsOpen(!isOpen);\n };\n\n return (\n <>\n <Helmet>\n <link\n rel=\"stylesheet\"\n href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css\"\n crossOrigin=\"anonymous\"\n />\n </Helmet>\n <div className={`shadow-lg ${isMobile ? \"header-frame\" : \"\"}`}>\n {isMobile && (\n <button\n className=\"menuOpner\"\n type=\"button\"\n onClick={toggleMenu}\n style={{\n background: \"none\",\n border: \"none\",\n cursor: \"pointer\",\n fontSize: \"24px\",\n }}\n >\n {isOpen ? \"✖\" : \"☰\"}\n </button>\n )}\n <div\n className={`header-holder ${isMobile ? \"mobile-menu\" : \"\"} ${\n isOpen ? \"\" : \"mobile-hide\"\n }`}\n >\n <a href=\"/\" className=\"custom-logo-link\">\n <img\n width=\"216\"\n height=\"140\"\n src={config.LOGO_URL}\n className=\"custom-logo\"\n alt=\"Venus\"\n decoding=\"async\"\n />\n </a>\n <header\n className=\"site-header\"\n dangerouslySetInnerHTML={{ __html: headerData }}\n />\n </div>\n </div>\n </>\n );\n};\n\nexport default HeaderWidget;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
@use "sass:color";
|
|
2
|
-
$primary-color:
|
|
2
|
+
$primary-color: var(--primary-color);
|
|
3
3
|
$text-color: #0d1321;
|
|
4
4
|
$background-color: #ffffff;
|
|
5
5
|
$submenu-bg: #ffffff;
|
|
6
6
|
$submenu-border: #d1d5db;
|
|
7
7
|
$submenu-shadow: 0 8px 20px rgba(0, 0, 0, 0.08);
|
|
8
|
-
$hover-bg: color
|
|
8
|
+
$hover-bg: color-mix(in srgb, var(--primary-color) 5%, white 94%);
|
|
9
9
|
$transition-speed: 0.25s;
|
|
10
10
|
$font-family: "Inter", sans-serif;
|
|
11
11
|
$mobile-breakpoint: 1230px;
|
|
@@ -19,6 +19,45 @@ $icon-size: 0.95em;
|
|
|
19
19
|
flex-direction: row;
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
+
// .loader {
|
|
23
|
+
// width: 60px;
|
|
24
|
+
// aspect-ratio: 2;
|
|
25
|
+
// --_g: no-repeat radial-gradient(circle closest-side, #000 90%, #0000);
|
|
26
|
+
// background:
|
|
27
|
+
// var(--_g) 0% 50%,
|
|
28
|
+
// var(--_g) 50% 50%,
|
|
29
|
+
// var(--_g) 100% 50%;
|
|
30
|
+
// background-size: calc(100% / 3) 50%;
|
|
31
|
+
// animation: l3 1s infinite linear;
|
|
32
|
+
// }
|
|
33
|
+
|
|
34
|
+
// @keyframes l3 {
|
|
35
|
+
// 20% {
|
|
36
|
+
// background-position:
|
|
37
|
+
// 0% 0%,
|
|
38
|
+
// 50% 50%,
|
|
39
|
+
// 100% 50%;
|
|
40
|
+
// }
|
|
41
|
+
// 40% {
|
|
42
|
+
// background-position:
|
|
43
|
+
// 0% 100%,
|
|
44
|
+
// 50% 0%,
|
|
45
|
+
// 100% 50%;
|
|
46
|
+
// }
|
|
47
|
+
// 60% {
|
|
48
|
+
// background-position:
|
|
49
|
+
// 0% 50%,
|
|
50
|
+
// 50% 100%,
|
|
51
|
+
// 100% 0%;
|
|
52
|
+
// }
|
|
53
|
+
// 80% {
|
|
54
|
+
// background-position:
|
|
55
|
+
// 0% 50%,
|
|
56
|
+
// 50% 50%,
|
|
57
|
+
// 100% 100%;
|
|
58
|
+
// }
|
|
59
|
+
// }
|
|
60
|
+
|
|
22
61
|
.site-header {
|
|
23
62
|
width: 100%;
|
|
24
63
|
flex: inherit !important;
|
|
@@ -32,6 +71,15 @@ $icon-size: 0.95em;
|
|
|
32
71
|
width: auto;
|
|
33
72
|
}
|
|
34
73
|
|
|
74
|
+
li.menu-item-object-menu_openedx {
|
|
75
|
+
margin-left: auto;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
#menu-primary-menu > li > .sub-menu {
|
|
79
|
+
left: auto !important;
|
|
80
|
+
right: 0 !important;
|
|
81
|
+
}
|
|
82
|
+
|
|
35
83
|
/* Desktop Menu */
|
|
36
84
|
#menu-primary-menu {
|
|
37
85
|
display: flex;
|
|
@@ -44,13 +92,41 @@ $icon-size: 0.95em;
|
|
|
44
92
|
position: relative;
|
|
45
93
|
padding: 10px;
|
|
46
94
|
|
|
95
|
+
&.menu-item-has-children {
|
|
96
|
+
a {
|
|
97
|
+
&:after {
|
|
98
|
+
display: none !important;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
.user-profile-wrap {
|
|
104
|
+
&:hover {
|
|
105
|
+
text-decoration: none;
|
|
106
|
+
}
|
|
107
|
+
&::before {
|
|
108
|
+
display: none;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
img {
|
|
112
|
+
width: 40px;
|
|
113
|
+
border-radius: 100%;
|
|
114
|
+
overflow: hidden;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
span {
|
|
118
|
+
display: none;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
|
|
47
122
|
a {
|
|
48
123
|
color: $text-color;
|
|
49
124
|
text-decoration: none;
|
|
50
125
|
font-weight: 600;
|
|
51
126
|
display: block;
|
|
52
127
|
border-bottom: 1px solid transparent;
|
|
53
|
-
transition:
|
|
128
|
+
transition:
|
|
129
|
+
color $transition-speed ease,
|
|
54
130
|
border-color $transition-speed ease;
|
|
55
131
|
position: relative;
|
|
56
132
|
display: block;
|
|
@@ -119,7 +195,8 @@ $icon-size: 0.95em;
|
|
|
119
195
|
display: block;
|
|
120
196
|
padding: 0.6rem 1rem;
|
|
121
197
|
color: $text-color;
|
|
122
|
-
transition:
|
|
198
|
+
transition:
|
|
199
|
+
background $transition-speed ease,
|
|
123
200
|
color $transition-speed ease;
|
|
124
201
|
|
|
125
202
|
&:hover {
|
|
@@ -330,7 +407,8 @@ $icon-size: 0.95em;
|
|
|
330
407
|
|
|
331
408
|
li a {
|
|
332
409
|
padding: 0.5rem 1rem;
|
|
333
|
-
transition:
|
|
410
|
+
transition:
|
|
411
|
+
background $transition-speed ease,
|
|
334
412
|
color $transition-speed ease;
|
|
335
413
|
|
|
336
414
|
&:hover {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@anas_hameed/edly-saas-widget",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.6",
|
|
4
4
|
"description": "Frontend application template",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"repository": {
|
|
@@ -58,7 +58,8 @@
|
|
|
58
58
|
},
|
|
59
59
|
"dependencies": {
|
|
60
60
|
"dompurify": "^3.3.0",
|
|
61
|
-
"react-bootstrap": "^2.10.10"
|
|
61
|
+
"react-bootstrap": "^2.10.10",
|
|
62
|
+
"react-helmet": "^6.1.0"
|
|
62
63
|
},
|
|
63
64
|
"directories": {
|
|
64
65
|
"doc": "docs"
|