-
734 Luy Ban Bich St, Tan Thanh Ward, Tan Phu Dist, HCMC
+
{top.address}
-
-

+
+
- -
- Home
-
- -
- About Us
-
- -
- Visa
-
- -
- Pages
-
- -
- Article
-
- -
- Contact Us
-
+ {top.menuLinks.map((item, index) => (
+ -
+ {item.label}
+
+ ))}
-
-
-
-
+ {top.socialLinks.map((social, index) => (
+
+
+
+ ))}
diff --git a/app/components/layout/Footer/footer.json b/app/components/layout/Footer/footer.json
new file mode 100644
index 0000000..12c4e07
--- /dev/null
+++ b/app/components/layout/Footer/footer.json
@@ -0,0 +1,80 @@
+{
+ "top": {
+ "bgImage": "/assets/img/home-1/footer-bg.jpg",
+ "phone": {
+ "display": "+84 961 83 4040",
+ "href": "tel:+84961834040"
+ },
+ "address": "734 Luy Ban Bich St, Tan Thanh Ward, Tan Phu Dist, HCMC",
+ "logo": {
+ "src": "/assets/img/logo/white-logo.svg",
+ "alt": "logo",
+ "href": "/"
+ },
+ "menuLinks": [
+ {
+ "label": "Home",
+ "href": "/"
+ },
+ {
+ "label": "About Us",
+ "href": "/about"
+ },
+ {
+ "label": "Visa",
+ "href": "/country-details"
+ },
+ {
+ "label": "Pages",
+ "href": "/news-details"
+ },
+ {
+ "label": "Article",
+ "href": "/news"
+ },
+ {
+ "label": "Contact Us",
+ "href": "/contact"
+ }
+ ],
+ "socialLinks": [
+ {
+ "icon": "fa-brands fa-twitter",
+ "href": "#"
+ },
+ {
+ "icon": "fa-brands fa-instagram",
+ "href": "#"
+ },
+ {
+ "icon": "fa-brands fa-linkedin",
+ "href": "#"
+ },
+ {
+ "icon": "fa-brands fa-youtube",
+ "href": "#"
+ }
+ ]
+ },
+ "bottom": {
+ "copyright": {
+ "text": "Copyright©",
+ "brand": "GRAMENTHEME",
+ "rights": "All Rights Reserved."
+ },
+ "menuLinks": [
+ {
+ "label": "Terms & Conditions",
+ "href": "/contact"
+ },
+ {
+ "label": "Privacy Policy",
+ "href": "/contact"
+ },
+ {
+ "label": "Contact Us",
+ "href": "/contact"
+ }
+ ]
+ }
+}
diff --git a/app/components/layout/Header/Header.tsx b/app/components/layout/Header/Header.tsx
index 3484090..6ec07fa 100644
--- a/app/components/layout/Header/Header.tsx
+++ b/app/components/layout/Header/Header.tsx
@@ -1,14 +1,36 @@
+'use client';
+
+import { useState } from 'react';
import HeaderTop from './HeaderTop';
import HeaderBottom from './HeaderBottom';
+import Offcanvas from './Offcanvas';
const Header = () => {
+ const [isOffcanvasOpen, setIsOffcanvasOpen] = useState(false);
+ const [isSearchOpen, setIsSearchOpen] = useState(false);
+
+ const toggleOffcanvas = () => setIsOffcanvasOpen(!isOffcanvasOpen);
+ const toggleSearch = () => setIsSearchOpen(!isSearchOpen);
+
return (
<>
-
- {/* Search Popup - kept here for now as part of header logic/structure */}
-
-
+
+
+
setIsOffcanvasOpen(false)}
+ />
+
+ {/* Search Popup */}
+
+
setIsSearchOpen(false)}
+ >