diff --git a/src/app/(main)/(marketing)/MarketingLayout.tsx b/src/app/(main)/(marketing)/MarketingLayout.tsx
index cd86288..33ae362 100644
--- a/src/app/(main)/(marketing)/MarketingLayout.tsx
+++ b/src/app/(main)/(marketing)/MarketingLayout.tsx
@@ -5,7 +5,9 @@ import Link from 'next/link';
import { usePathname } from 'next/navigation';
import { Button } from '@/components/ui/Button';
import { Footer } from '@/components/ui/Footer';
-import en from '@/i18n/en.json';
+import en from '@/i18n/en.json';
+import { allUseCases } from '@/lib/growth-pages';
+import { LayoutGrid } from 'lucide-react';
import { ChevronDown, BookOpen, Building2, Wifi, Contact, MessageCircle, Link2, Type, Mail, MessageSquare, Phone, Calendar, MapPin, Facebook, Instagram, Twitter, Youtube, Music, Bitcoin, CreditCard, Video, Users, Barcode as BarcodeIcon, Star } from 'lucide-react';
import { cn } from '@/lib/utils';
import { AnimatePresence, motion } from 'framer-motion';
@@ -18,9 +20,11 @@ export default function MarketingLayout({
}) {
const [mobileMenuOpen, setMobileMenuOpen] = useState(false);
const [scrolled, setScrolled] = useState(false);
- const [toolsOpen, setToolsOpen] = useState(false);
+ const [toolsOpen, setToolsOpen] = useState(false);
+ const [useCasesOpen, setUseCasesOpen] = useState(false);
const [resourcesOpen, setResourcesOpen] = useState(false);
- const [mobileToolsOpen, setMobileToolsOpen] = useState(false);
+ const [mobileToolsOpen, setMobileToolsOpen] = useState(false);
+ const [mobileUseCasesOpen, setMobileUseCasesOpen] = useState(false);
const [mobileResourcesOpen, setMobileResourcesOpen] = useState(false);
const pathname = usePathname();
@@ -36,9 +40,11 @@ export default function MarketingLayout({
// Close simple menus when path changes
useEffect(() => {
setMobileMenuOpen(false);
- setToolsOpen(false);
+ setToolsOpen(false);
+ setUseCasesOpen(false);
setResourcesOpen(false);
- setMobileToolsOpen(false);
+ setMobileToolsOpen(false);
+ setMobileUseCasesOpen(false);
setMobileResourcesOpen(false);
}, [pathname]);
@@ -145,6 +151,50 @@ export default function MarketingLayout({
+ {/* Use Cases Dropdown */}
+
setUseCasesOpen(true)}
+ onMouseLeave={() => setUseCasesOpen(false)}
+ >
+
+
+
+ {useCasesOpen && (
+
+
+ {allUseCases.map((uc) => (
+
+
+
+
+
+
+ ))}
+
+
+ View All Use Cases →
+
+
+ )}
+
+
+
{/* Tools Dropdown */}
+ {/* Use Cases Accordion */}
+
+
+
+ {mobileUseCasesOpen && (
+
+
+ {allUseCases.map((uc) => (
+ { setMobileMenuOpen(false); setMobileUseCasesOpen(false); }}
+ >
+ {uc.title}
+
+ ))}
+
+
+ )}
+
+
{/* Free Tools Accordion */}
+ {/* Popular Use Cases Section */}
+
+
+
+
+ Popular Use Cases
+
+
+ Discover how businesses across different industries use dynamic QR codes to track offline engagement and simplify customer journeys.
+
+
+
+ {allUseCases.slice(0, 8).map((item) => (
+
+
+ {item.title}
+
+
+ {item.summary}
+
+
+ ))}
+
+
+
+
+
+
+
+
+
{/* Testimonials Carousel */}
diff --git a/tmp-homepage.js b/tmp-homepage.js
new file mode 100644
index 0000000..d7b8a73
--- /dev/null
+++ b/tmp-homepage.js
@@ -0,0 +1,50 @@
+const fs = require('fs');
+const file = 'src/components/marketing/HomePageClient.tsx';
+let content = fs.readFileSync(file, 'utf8');
+
+if (!content.includes("import { allUseCases }")) {
+ content = content.replace("import en from '@/i18n/en.json';", "import en from '@/i18n/en.json';\nimport { allUseCases } from '@/lib/growth-pages';");
+}
+
+const section = ` {/* Popular Use Cases Section */}
+
+
+
+
+ Popular Use Cases
+
+
+ Discover how businesses across different industries use dynamic QR codes to track offline engagement and simplify customer journeys.
+
+
+
+ {allUseCases.slice(0, 8).map((item) => (
+
+
+ {item.title}
+
+
+ {item.summary}
+
+
+ ))}
+
+
+
+
+
+
+
+
+
+ {/* Testimonials Carousel */}`;
+
+if (!content.includes("Popular Use Cases Section")) {
+ content = content.replace("{/* Testimonials Carousel */}", section);
+}
+fs.writeFileSync(file, content);
+console.log("Updated HomePageClient.tsx");
diff --git a/tmp-nav.js b/tmp-nav.js
new file mode 100644
index 0000000..907eb8c
--- /dev/null
+++ b/tmp-nav.js
@@ -0,0 +1,101 @@
+const fs = require('fs');
+let code = fs.readFileSync('src/app/(main)/(marketing)/MarketingLayout.tsx', 'utf8');
+
+if (!code.includes("import { allUseCases }")) {
+ code = code.replace("import en from '@/i18n/en.json';", "import en from '@/i18n/en.json';\nimport { allUseCases } from '@/lib/growth-pages';\nimport { LayoutGrid } from 'lucide-react';");
+}
+
+if (!code.includes("const [useCasesOpen")) {
+ code = code.replace("const [toolsOpen, setToolsOpen] = useState(false);", "const [toolsOpen, setToolsOpen] = useState(false);\n const [useCasesOpen, setUseCasesOpen] = useState(false);");
+ code = code.replace("const [mobileToolsOpen, setMobileToolsOpen] = useState(false);", "const [mobileToolsOpen, setMobileToolsOpen] = useState(false);\n const [mobileUseCasesOpen, setMobileUseCasesOpen] = useState(false);");
+ code = code.replace("setToolsOpen(false);", "setToolsOpen(false);\n setUseCasesOpen(false);");
+ code = code.replace("setMobileToolsOpen(false);", "setMobileToolsOpen(false);\n setMobileUseCasesOpen(false);");
+}
+
+const useCasesDropdown = ` {/* Use Cases Dropdown */}
+ setUseCasesOpen(true)}
+ onMouseLeave={() => setUseCasesOpen(false)}
+ >
+
+
+
+ {useCasesOpen && (
+
+
+ {allUseCases.map((uc) => (
+
+
+
+
+
+
+ ))}
+
+
+ View All Use Cases →
+
+
+ )}
+
+
`;
+
+if (!code.includes("Use Cases")) {
+ code = code.replace("{/* Tools Dropdown */}", useCasesDropdown + "\n\n {/* Tools Dropdown */}");
+}
+
+const mobileUseCasesAccordion = ` {/* Use Cases Accordion */}
+
+
+
+ {mobileUseCasesOpen && (
+
+
+ {allUseCases.map((uc) => (
+ { setMobileMenuOpen(false); setMobileUseCasesOpen(false); }}
+ >
+ {uc.title}
+
+ ))}
+
+
+ )}
+ `;
+
+if (!code.includes("{/* Use Cases Accordion */}")) {
+ code = code.replace("{/* Free Tools Accordion */}", mobileUseCasesAccordion + "\n\n {/* Free Tools Accordion */}");
+}
+
+fs.writeFileSync('src/app/(main)/(marketing)/MarketingLayout.tsx', code);
+console.log("Updated MarketingLayout.tsx");