diff --git a/src/app/(app)/dashboard/page.tsx b/src/app/(app)/dashboard/page.tsx index a3d346e..6fda613 100644 --- a/src/app/(app)/dashboard/page.tsx +++ b/src/app/(app)/dashboard/page.tsx @@ -111,7 +111,7 @@ export default function DashboardPage() { title: 'QR Code Tracking: Complete Guide 2025', excerpt: 'Learn how to track QR code scans with real-time analytics. Compare free vs paid tracking tools, setup Google Analytics, and measure ROI.', readTime: '12 Min', - slug: 'qr-code-tracking-guide', + slug: 'qr-code-tracking-guide-2025', }, { title: 'Dynamic vs Static QR Codes: Which Should You Use?', @@ -129,7 +129,7 @@ export default function DashboardPage() { title: 'QR Code Analytics: Track, Measure & Optimize Campaigns', excerpt: 'Learn how to leverage scan analytics, campaign tracking, and dashboard insights to maximize QR code ROI.', readTime: '15 Min', - slug: 'qr-code-analytics-guide', + slug: 'qr-code-analytics', }, ]; diff --git a/src/app/(auth)/signup/page.tsx b/src/app/(auth)/signup/page.tsx index 1d368ec..87ad2c1 100644 --- a/src/app/(auth)/signup/page.tsx +++ b/src/app/(auth)/signup/page.tsx @@ -125,7 +125,13 @@ export default function SignupPage() { />
- + (e.target as HTMLInputElement).setCustomValidity('Please check this box if you want to proceed')} + onInput={(e) => (e.target as HTMLInputElement).setCustomValidity('')} + />
+ +
+

Legal

+ +
diff --git a/src/components/marketing/HomePageClient.tsx b/src/components/marketing/HomePageClient.tsx index 1cb9649..bc432fd 100644 --- a/src/components/marketing/HomePageClient.tsx +++ b/src/components/marketing/HomePageClient.tsx @@ -10,6 +10,7 @@ import { Features } from '@/components/marketing/Features'; import { Pricing } from '@/components/marketing/Pricing'; import { FAQ } from '@/components/marketing/FAQ'; import { Button } from '@/components/ui/Button'; +import { ScrollToTop } from '@/components/ui/ScrollToTop'; import en from '@/i18n/en.json'; export default function HomePageClient() { @@ -37,6 +38,9 @@ export default function HomePageClient() { {/* FAQ Section */} + + {/* Scroll to Top Button */} + ); } diff --git a/src/components/ui/ScrollToTop.tsx b/src/components/ui/ScrollToTop.tsx new file mode 100644 index 0000000..0431bb5 --- /dev/null +++ b/src/components/ui/ScrollToTop.tsx @@ -0,0 +1,56 @@ +'use client'; + +import React, { useState, useEffect } from 'react'; + +export function ScrollToTop() { + const [isVisible, setIsVisible] = useState(false); + + // Show button when page is scrolled down + useEffect(() => { + const toggleVisibility = () => { + if (window.pageYOffset > 300) { + setIsVisible(true); + } else { + setIsVisible(false); + } + }; + + window.addEventListener('scroll', toggleVisibility); + + return () => window.removeEventListener('scroll', toggleVisibility); + }, []); + + const scrollToTop = () => { + window.scrollTo({ + top: 0, + behavior: 'smooth', + }); + }; + + return ( + <> + {isVisible && ( + + )} + + ); +}