diff --git a/src/app/dashboard/page.tsx b/src/app/dashboard/page.tsx index 629e703..e5d1ab7 100644 --- a/src/app/dashboard/page.tsx +++ b/src/app/dashboard/page.tsx @@ -3,22 +3,34 @@ import Link from "next/link"; import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider"; import NavbarStyleFullscreen from "@/components/navbar/NavbarStyleFullscreen/NavbarStyleFullscreen"; -import InlineImageSplitTextAbout from "@/components/sections/about/InlineImageSplitTextAbout"; -import FeatureBento from "@/components/sections/feature/FeatureBento"; import MetricCardFourteen from "@/components/sections/metrics/MetricCardFourteen"; +import FeatureBento from "@/components/sections/feature/FeatureBento"; import FooterLogoEmphasis from "@/components/sections/footer/FooterLogoEmphasis"; import { CreditCard, - Wallet, - Send, - DollarSign, TrendingUp, - Zap, + Wallet, ArrowUpRight, ArrowDownLeft, + Settings, + LogOut, + Bell, + Shield, + Lock, + Eye, + EyeOff, + Download, + Upload, + DollarSign, + Zap, + CheckCircle, } from "lucide-react"; +import { useState } from "react"; export default function DashboardPage() { + const [showBalance, setShowBalance] = useState(true); + const [activeTab, setActiveTab] = useState("overview"); + const navItems = [ { name: "Dashboard", id: "dashboard" }, { name: "How It Works", id: "how-it-works" }, @@ -30,8 +42,8 @@ export default function DashboardPage() { { items: [ { label: "Dashboard", href: "/dashboard" }, - { label: "How It Works", href: "#how-it-works" }, - { label: "Features", href: "#features" }, + { label: "How It Works", href: "/#how-it-works" }, + { label: "Features", href: "/#features" }, { label: "Support", href: "/support" }, ], }, @@ -78,107 +90,295 @@ export default function DashboardPage() { -
-
- -
-
+
+
+ {/* Header Section */} +
+
+
+

Welcome Back, User

+

Manage your investments and track your portfolio growth

+
+
+ + +
+
+
-
-
- -
-
+ {/* Investment Status Cards */} +
+
+ {/* Total Balance Card */} +
+
+
+

Total Balance

+
+

+ {showBalance ? "₹2,50,000" : "••••••"} +

+ +
+
+ +
+

Updated just now

+
-
-
- + {/* Today's Profit Card */} +
+
+
+

Today's Profit

+
+

₹2,50,000

+ +
+
+ +
+

+100% ROI

+
+ + {/* Active Investments Card */} +
+
+
+

Active Investments

+

4

+
+ +
+

Diversified portfolio

+
+
+
+ + {/* Tab Navigation */} +
+
+ + + +
+ + {/* Overview Tab */} + {activeTab === "overview" && ( +
+
+

Portfolio Summary

+
+
+

Total Invested

+

₹2,50,000

+
+
+

Total Returns

+

₹2,50,000

+
+
+

ROI

+

100%

+
+
+

Pending Withdraw

+

₹0

+
+
+
+ +
+

Quick Actions

+
+ + +
+
+
+ )} + + {/* Transactions Tab */} + {activeTab === "transactions" && ( +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
DateTypeAmountStatus
Dec 20, 2024 + + Investment + ₹1,00,000 + Completed +
Dec 20, 2024 + + Profit Return + +₹1,00,000 + Completed +
Dec 19, 2024 + + Investment + ₹1,50,000 + Completed +
Dec 19, 2024 + + Profit Return + +₹1,50,000 + Completed +
+
+
+ )} + + {/* Account Settings Tab */} + {activeTab === "settings" && ( +
+ {/* Account Information */} +
+

Account Information

+
+
+ +
User Name
+
+
+ +
user@financeflow.com
+
+
+ +
+91 98765 43210
+
+
+ +
FF-2024-001234
+
+
+
+ + {/* Security Settings */} +
+

+ + Security Settings +

+
+ + +
+
+ + {/* Logout */} + +
+ )} +
diff --git a/src/app/deposit/page.tsx b/src/app/deposit/page.tsx new file mode 100644 index 0000000..b9bfdcd --- /dev/null +++ b/src/app/deposit/page.tsx @@ -0,0 +1,336 @@ +"use client"; + +import Link from "next/link"; +import { useState } from "react"; +import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider"; +import NavbarStyleFullscreen from "@/components/navbar/NavbarStyleFullscreen/NavbarStyleFullscreen"; +import FooterLogoEmphasis from "@/components/sections/footer/FooterLogoEmphasis"; +import { + CreditCard, + Wallet, + DollarSign, + TrendingUp, + Clock, + CheckCircle, + Zap, + ArrowRight, +} from "lucide-react"; + +export default function DepositPage() { + const [formData, setFormData] = useState({ + amount: "", paymentMethod: "bank", investmentType: "standard"}); + const [submitted, setSubmitted] = useState(false); + const [loading, setLoading] = useState(false); + + const navItems = [ + { name: "Home", id: "home" }, + { name: "How It Works", id: "how-it-works" }, + { name: "Dashboard", id: "dashboard" }, + { name: "Support", id: "support" }, + ]; + + const footerColumns = [ + { + items: [ + { label: "Home", href: "/" }, + { label: "Dashboard", href: "/dashboard" }, + { label: "Withdraw", href: "/withdraw" }, + { label: "Support", href: "/support" }, + ], + }, + { + items: [ + { label: "About Us", href: "#" }, + { label: "Our Team", href: "#" }, + { label: "Blog", href: "#" }, + { label: "Careers", href: "#" }, + ], + }, + { + items: [ + { label: "Privacy Policy", href: "#" }, + { label: "Terms of Service", href: "#" }, + { label: "Security", href: "#" }, + { label: "Compliance", href: "#" }, + ], + }, + { + items: [ + { label: "Email", href: "mailto:support@financeflow.com" }, + { label: "Phone", href: "tel:+919876543210" }, + { label: "Twitter", href: "https://twitter.com" }, + { label: "LinkedIn", href: "https://linkedin.com" }, + ], + }, + ]; + + const handleInputChange = (e: React.ChangeEvent) => { + const { name, value } = e.target; + setFormData((prev) => ({ + ...prev, + [name]: value, + })); + }; + + const handleSubmit = async (e: React.FormEvent) => { + e.preventDefault(); + setLoading(true); + + try { + // Simulate API call + await new Promise((resolve) => setTimeout(resolve, 1500)); + + // Calculate maturity time (8 hours from now) + const now = new Date(); + const maturityTime = new Date(now.getTime() + 8 * 60 * 60 * 1000); + + // Store investment in localStorage for dashboard tracking + const investment = { + id: Date.now().toString(), + amount: parseFloat(formData.amount), + paymentMethod: formData.paymentMethod, + investmentType: formData.investmentType, + depositTime: now.toISOString(), + maturityTime: maturityTime.toISOString(), + status: "active", expectedReturn: parseFloat(formData.amount) * 2, + }; + + const investments = JSON.parse( + localStorage.getItem("investments") || "[]" + ); + investments.push(investment); + localStorage.setItem("investments", JSON.stringify(investments)); + + setSubmitted(true); + setFormData({ amount: "", paymentMethod: "bank", investmentType: "standard" }); + + // Reset form after 3 seconds + setTimeout(() => setSubmitted(false), 3000); + } catch (error) { + console.error("Deposit failed:", error); + } finally { + setLoading(false); + } + }; + + return ( + + + +
+
+
+ {/* Deposit Form */} +
+

+ Make a Deposit +

+

+ Start investing with just ₹1,000 and watch your money double in 8 hours. +

+ + {submitted && ( +
+
+ + Deposit processed successfully! Your investment is now active. +
+
+ )} + +
+ {/* Investment Amount */} +
+ + +
+ + {/* Investment Type */} +
+ + +
+ + {/* Payment Method */} +
+ + +
+ + {/* Expected Returns Display */} + {formData.amount && ( +
+

+ Expected Return: +

+

+ ₹{(parseFloat(formData.amount) * 2).toLocaleString("en-IN")} +

+

+ Your investment will be available for withdrawal after 8 hours +

+
+ )} + + {/* Submit Button */} + + +

+ By depositing, you agree to our Terms of Service and understand the 8-hour investment window. +

+
+
+ + {/* Information Panel */} +
+
+
+
+ +
+

+ How It Works +

+
+
    +
  1. + 1 + Make your deposit using any of our payment methods +
  2. +
  3. + 2 + Your funds are immediately invested in our diversified portfolio +
  4. +
  5. + 3 + Watch your investment grow in real-time on your dashboard +
  6. +
  7. + 4 + After 8 hours, your money has doubled and is ready to withdraw +
  8. +
+
+ +
+
+
+ +
+

+ 8-Hour Timeline +

+
+
+

Hour 0: Deposit processed immediately

+

Hour 4: Portfolio reaches 50% growth

+

Hour 8: Money doubled, available for withdrawal

+
+
+ +
+
+
+ +
+

+ Payment Options +

+
+
+

Bank Transfer - Fastest option

+

All Major Credit/Debit Cards

+

Digital Wallets & UPI

+
+
+ + + View Withdrawals → + +
+
+
+
+ + +
+ ); +} \ No newline at end of file diff --git a/src/app/login/page.tsx b/src/app/login/page.tsx new file mode 100644 index 0000000..f05c197 --- /dev/null +++ b/src/app/login/page.tsx @@ -0,0 +1,283 @@ +"use client"; + +import { useState } from "react"; +import Link from "next/link"; +import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider"; +import NavbarStyleFullscreen from "@/components/navbar/NavbarStyleFullscreen/NavbarStyleFullscreen"; +import FooterLogoEmphasis from "@/components/sections/footer/FooterLogoEmphasis"; +import { Lock, Mail, AlertCircle, CheckCircle } from "lucide-react"; + +export default function LoginPage() { + const [email, setEmail] = useState(""); + const [password, setPassword] = useState(""); + const [errors, setErrors] = useState<{ email?: string; password?: string }>({}); + const [isLoading, setIsLoading] = useState(false); + const [submitStatus, setSubmitStatus] = useState<"success" | "error" | null>(null); + + const navItems = [ + { name: "Dashboard", id: "dashboard" }, + { name: "How It Works", id: "how-it-works" }, + { name: "Features", id: "features" }, + { name: "Support", id: "support" }, + ]; + + const footerColumns = [ + { + items: [ + { label: "Dashboard", href: "/dashboard" }, + { label: "How It Works", href: "#how-it-works" }, + { label: "Features", href: "#features" }, + { label: "Support", href: "/support" }, + ], + }, + { + items: [ + { label: "About Us", href: "#" }, + { label: "Our Team", href: "#" }, + { label: "Blog", href: "#" }, + { label: "Careers", href: "#" }, + ], + }, + { + items: [ + { label: "Privacy Policy", href: "#" }, + { label: "Terms of Service", href: "#" }, + { label: "Security", href: "#" }, + { label: "Compliance", href: "#" }, + ], + }, + { + items: [ + { label: "Email", href: "mailto:support@financeflow.com" }, + { label: "Phone", href: "tel:+919876543210" }, + { label: "Twitter", href: "https://twitter.com" }, + { label: "LinkedIn", href: "https://linkedin.com" }, + ], + }, + ]; + + const validateForm = () => { + const newErrors: { email?: string; password?: string } = {}; + + if (!email) { + newErrors.email = "Email is required"; + } else if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email)) { + newErrors.email = "Please enter a valid email address"; + } + + if (!password) { + newErrors.password = "Password is required"; + } else if (password.length < 6) { + newErrors.password = "Password must be at least 6 characters"; + } + + setErrors(newErrors); + return Object.keys(newErrors).length === 0; + }; + + const handleSubmit = async (e: React.FormEvent) => { + e.preventDefault(); + setSubmitStatus(null); + + if (!validateForm()) { + setSubmitStatus("error"); + return; + } + + setIsLoading(true); + try { + // Simulate API call + await new Promise((resolve) => setTimeout(resolve, 1500)); + setSubmitStatus("success"); + setEmail(""); + setPassword(""); + setErrors({}); + // In a real app, redirect to dashboard + } catch (error) { + setSubmitStatus("error"); + } finally { + setIsLoading(false); + } + }; + + return ( + + + +
+
+
+ {/* Header */} +
+
+ +
+

+ Welcome Back +

+

+ Sign in to your FinanceFlow account +

+
+ + {/* Status Messages */} + {submitStatus === "success" && ( +
+ +
+

+ Login successful! +

+

+ Redirecting to your dashboard... +

+
+
+ )} + + {submitStatus === "error" && Object.keys(errors).length > 0 && ( +
+ +
+

+ Please fix the errors below +

+
+
+ )} + + {/* Form */} +
+ {/* Email Field */} +
+ +
+ + { + setEmail(e.target.value); + if (errors.email) setErrors({ ...errors, email: undefined }); + }} + placeholder="you@example.com" + className={`w-full pl-10 pr-4 py-2 rounded-lg border transition-colors ${ + errors.email + ? "border-red-300 bg-red-50 dark:bg-red-900/20 dark:border-red-700" + : "border-gray-300 dark:border-gray-600 bg-white dark:bg-gray-800" + } text-gray-900 dark:text-white placeholder-gray-500 dark:placeholder-gray-400 focus:outline-none focus:ring-2 focus:ring-blue-500 dark:focus:ring-blue-400`} + disabled={isLoading} + /> +
+ {errors.email && ( +

{errors.email}

+ )} +
+ + {/* Password Field */} +
+
+ + + Forgot? + +
+
+ + { + setPassword(e.target.value); + if (errors.password) setErrors({ ...errors, password: undefined }); + }} + placeholder="••••••••" + className={`w-full pl-10 pr-4 py-2 rounded-lg border transition-colors ${ + errors.password + ? "border-red-300 bg-red-50 dark:bg-red-900/20 dark:border-red-700" + : "border-gray-300 dark:border-gray-600 bg-white dark:bg-gray-800" + } text-gray-900 dark:text-white placeholder-gray-500 dark:placeholder-gray-400 focus:outline-none focus:ring-2 focus:ring-blue-500 dark:focus:ring-blue-400`} + disabled={isLoading} + /> +
+ {errors.password && ( +

{errors.password}

+ )} +
+ + {/* Submit Button */} + +
+ + {/* Divider */} +
+
+ or +
+
+ + {/* Sign Up Link */} +

+ Don't have an account?{" "} + + Create one now + +

+
+ + {/* Additional Info */} +

+ Your data is secure and protected by industry-leading encryption +

+
+
+ + +
+ ); +} diff --git a/src/app/page.tsx b/src/app/page.tsx index 824215a..75638ec 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -32,7 +32,7 @@ export default function HomePage() { { name: "Dashboard", id: "dashboard" }, { name: "How It Works", id: "how-it-works" }, { name: "Features", id: "features" }, - { name: "Support", id: "support" }, + { name: "Referral", id: "referral" }, ]; const footerColumns = [ @@ -41,7 +41,7 @@ export default function HomePage() { { label: "Dashboard", href: "/dashboard" }, { label: "How It Works", href: "#how-it-works" }, { label: "Features", href: "#features" }, - { label: "Support", href: "/support" }, + { label: "Referral Program", href: "/referral" }, ], }, { @@ -104,19 +104,13 @@ export default function HomePage() { slides={[ { imageSrc: - "http://img.b2bpic.net/free-vector/initial-public-offering-ipo-concept-background-with-growth-chart_1017-54362.jpg", - imageAlt: "Investment dashboard showcasing returns", - }, + "http://img.b2bpic.net/free-vector/initial-public-offering-ipo-concept-background-with-growth-chart_1017-54362.jpg", imageAlt: "Investment dashboard showcasing returns"}, { imageSrc: - "http://img.b2bpic.net/free-photo/top-view-business-items-with-growth-chart-hands-fists_23-2148780564.jpg", - imageAlt: "Portfolio growth visualization", - }, + "http://img.b2bpic.net/free-photo/top-view-business-items-with-growth-chart-hands-fists_23-2148780564.jpg", imageAlt: "Portfolio growth visualization"}, { imageSrc: - "http://img.b2bpic.net/free-vector/digital-smart-city-concept-big-data-transmission-processing-data-center-warehouse_39422-780.jpg", - imageAlt: "Cryptocurrency investment options", - }, + "http://img.b2bpic.net/free-vector/digital-smart-city-concept-big-data-transmission-processing-data-center-warehouse_39422-780.jpg", imageAlt: "Cryptocurrency investment options"}, ]} autoplayDelay={4000} showDimOverlay={false} @@ -133,66 +127,48 @@ export default function HomePage() { tagAnimation="slide-up" features={[ { - title: "Secure Login", - description: - "Create your unique login ID and secure user account with enterprise-grade encryption.", - bentoComponent: "icon-info-cards", - items: [ + title: "Secure Login", description: + "Create your unique login ID and secure user account with enterprise-grade encryption.", bentoComponent: "icon-info-cards", items: [ { icon: Shield, label: "Security", value: "256-bit" }, { icon: Lock, label: "Encryption", value: "2FA" }, { icon: CheckCircle, label: "Verified", value: "Instant" }, ], }, { - title: "Quick Deposits", - description: - "Add funds through multiple payment methods including bank transfer and digital wallets.", - bentoComponent: "icon-info-cards", - items: [ + title: "Quick Deposits", description: + "Add funds through multiple payment methods including bank transfer and digital wallets.", bentoComponent: "icon-info-cards", items: [ { icon: CreditCard, label: "Cards", value: "All Types" }, { icon: Wallet, label: "Digital", value: "G Pay" }, { icon: Zap, label: "Speed", value: "Instant" }, ], }, { - title: "8-Hour Doubling", - description: - "Experience unprecedented growth with our proven investment strategy that doubles your money in 8 hours.", - bentoComponent: "icon-info-cards", - items: [ + title: "8-Hour Doubling", description: + "Experience unprecedented growth with our proven investment strategy that doubles your money in 8 hours.", bentoComponent: "icon-info-cards", items: [ { icon: TrendingUp, label: "Returns", value: "100%" }, { icon: Clock, label: "Timeline", value: "8 Hours" }, { icon: Sparkles, label: "Guaranteed", value: "Yes" }, ], }, { - title: "Easy Withdrawals", - description: - "Withdraw your profits anytime with zero hidden fees. Direct bank transfer in minutes.", - bentoComponent: "icon-info-cards", - items: [ + title: "Easy Withdrawals", description: + "Withdraw your profits anytime with zero hidden fees. Direct bank transfer in minutes.", bentoComponent: "icon-info-cards", items: [ { icon: DollarSign, label: "No Fees", value: "100%" }, { icon: Send, label: "Direct", value: "Bank" }, { icon: Zap, label: "Speed", value: "Minutes" }, ], }, { - title: "Multiple Investments", - description: - "Diversify across cryptocurrency, stocks, forex, and other asset classes.", - bentoComponent: "icon-info-cards", - items: [ + title: "Multiple Investments", description: + "Diversify across cryptocurrency, stocks, forex, and other asset classes.", bentoComponent: "icon-info-cards", items: [ { icon: Bitcoin, label: "Crypto", value: "20+" }, { icon: DollarSign, label: "Forex", value: "Major" }, { icon: TrendingUp, label: "Stocks", value: "500+" }, ], }, { - title: "Credit Card Integration", - description: - "Create and manage virtual credit cards for seamless payment processing and global transactions.", - bentoComponent: "icon-info-cards", - items: [ + title: "Credit Card Integration", description: + "Create and manage virtual credit cards for seamless payment processing and global transactions.", bentoComponent: "icon-info-cards", items: [ { icon: CreditCard, label: "Virtual", value: "Unlimited" }, { icon: Globe, label: "Global", value: "195" }, { icon: Lock, label: "Secure", value: "Verified" }, @@ -214,25 +190,13 @@ export default function HomePage() { tagAnimation="blur-reveal" metrics={[ { - id: "users", - value: "50,000+", - description: "Active Investors Worldwide", - }, + id: "users", value: "50,000+", description: "Active Investors Worldwide"}, { - id: "capital", - value: "$250M+", - description: "Total Capital Managed", - }, + id: "capital", value: "$250M+", description: "Total Capital Managed"}, { - id: "returns", - value: "100%+", - description: "Average Returns in 8 Hours", - }, + id: "returns", value: "100%+", description: "Average Returns in 8 Hours"}, { - id: "uptime", - value: "99.9%", - description: "Platform Uptime Guarantee", - }, + id: "uptime", value: "99.9%", description: "Platform Uptime Guarantee"}, ]} metricsAnimation="slide-up" useInvertedBackground={true} @@ -245,9 +209,7 @@ export default function HomePage() { ); -} \ No newline at end of file +} diff --git a/src/app/referral/page.tsx b/src/app/referral/page.tsx new file mode 100644 index 0000000..5f4e4f2 --- /dev/null +++ b/src/app/referral/page.tsx @@ -0,0 +1,405 @@ +"use client"; + +import Link from "next/link"; +import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider"; +import NavbarStyleFullscreen from "@/components/navbar/NavbarStyleFullscreen/NavbarStyleFullscreen"; +import HeroCarouselLogo from "@/components/sections/hero/heroCarouselLogo/HeroCarouselLogo"; +import FeatureBento from "@/components/sections/feature/FeatureBento"; +import MetricCardFourteen from "@/components/sections/metrics/MetricCardFourteen"; +import InlineImageSplitTextAbout from "@/components/sections/about/InlineImageSplitTextAbout"; +import TestimonialCardSixteen from "@/components/sections/testimonial/TestimonialCardSixteen"; +import FaqBase from "@/components/sections/faq/FaqBase"; +import ContactSplit from "@/components/sections/contact/ContactSplit"; +import FooterLogoEmphasis from "@/components/sections/footer/FooterLogoEmphasis"; +import { + Share2, + Gift, + TrendingUp, + Users, + DollarSign, + CheckCircle, + Copy, + Zap, + Trophy, + Wallet, + Target, + Sparkles, + Shield, + Lock, + CreditCard, + Bitcoin, + Globe, + Clock, + Send, +} from "lucide-react"; +import { useState } from "react"; + +export default function ReferralPage() { + const [copiedLink, setCopiedLink] = useState(false); + + const navItems = [ + { name: "Dashboard", id: "dashboard" }, + { name: "How It Works", id: "how-it-works" }, + { name: "Rewards", id: "rewards" }, + { name: "Support", id: "support" }, + ]; + + const footerColumns = [ + { + items: [ + { label: "Dashboard", href: "/dashboard" }, + { label: "How It Works", href: "#how-it-works" }, + { label: "Referral Program", href: "/referral" }, + { label: "Support", href: "/support" }, + ], + }, + { + items: [ + { label: "About Us", href: "#" }, + { label: "Our Team", href: "#" }, + { label: "Blog", href: "#" }, + { label: "Careers", href: "#" }, + ], + }, + { + items: [ + { label: "Privacy Policy", href: "#" }, + { label: "Terms of Service", href: "#" }, + { label: "Security", href: "#" }, + { label: "Compliance", href: "#" }, + ], + }, + { + items: [ + { label: "Email", href: "mailto:support@financeflow.com" }, + { label: "Phone", href: "tel:+919876543210" }, + { label: "Twitter", href: "https://twitter.com" }, + { label: "LinkedIn", href: "https://linkedin.com" }, + ], + }, + ]; + + const handleCopyLink = () => { + const referralLink = "https://financeflow.com/ref/USER123456"; + navigator.clipboard.writeText(referralLink); + setCopiedLink(true); + setTimeout(() => setCopiedLink(false), 2000); + }; + + return ( + + + +
+
+ +
+
+ + + +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ + +
+ ); +} diff --git a/src/app/signup/page.tsx b/src/app/signup/page.tsx new file mode 100644 index 0000000..95dd4ed --- /dev/null +++ b/src/app/signup/page.tsx @@ -0,0 +1,504 @@ +"use client"; + +import { useState } from "react"; +import Link from "next/link"; +import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider"; +import NavbarStyleFullscreen from "@/components/navbar/NavbarStyleFullscreen/NavbarStyleFullscreen"; +import FooterLogoEmphasis from "@/components/sections/footer/FooterLogoEmphasis"; +import { UserPlus, Mail, Lock, AlertCircle, CheckCircle, Copy } from "lucide-react"; + +export default function SignupPage() { + const [formStep, setFormStep] = useState<"email" | "details" | "confirmation">("email"); + const [email, setEmail] = useState(""); + const [password, setPassword] = useState(""); + const [confirmPassword, setConfirmPassword] = useState(""); + const [fullName, setFullName] = useState(""); + const [phoneNumber, setPhoneNumber] = useState(""); + const [errors, setErrors] = useState>({}); + const [isLoading, setIsLoading] = useState(false); + const [userId, setUserId] = useState(null); + const [copiedField, setCopiedField] = useState(null); + + const navItems = [ + { name: "Dashboard", id: "dashboard" }, + { name: "How It Works", id: "how-it-works" }, + { name: "Features", id: "features" }, + { name: "Support", id: "support" }, + ]; + + const footerColumns = [ + { + items: [ + { label: "Dashboard", href: "/dashboard" }, + { label: "How It Works", href: "#how-it-works" }, + { label: "Features", href: "#features" }, + { label: "Support", href: "/support" }, + ], + }, + { + items: [ + { label: "About Us", href: "#" }, + { label: "Our Team", href: "#" }, + { label: "Blog", href: "#" }, + { label: "Careers", href: "#" }, + ], + }, + { + items: [ + { label: "Privacy Policy", href: "#" }, + { label: "Terms of Service", href: "#" }, + { label: "Security", href: "#" }, + { label: "Compliance", href: "#" }, + ], + }, + { + items: [ + { label: "Email", href: "mailto:support@financeflow.com" }, + { label: "Phone", href: "tel:+919876543210" }, + { label: "Twitter", href: "https://twitter.com" }, + { label: "LinkedIn", href: "https://linkedin.com" }, + ], + }, + ]; + + const generateUserId = () => { + return "FFL" + Math.random().toString(36).substring(2, 11).toUpperCase(); + }; + + const validateEmailStep = () => { + const newErrors: Record = {}; + + if (!email) { + newErrors.email = "Email is required"; + } else if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email)) { + newErrors.email = "Please enter a valid email address"; + } + + setErrors(newErrors); + return Object.keys(newErrors).length === 0; + }; + + const validateDetailsStep = () => { + const newErrors: Record = {}; + + if (!fullName) { + newErrors.fullName = "Full name is required"; + } else if (fullName.length < 2) { + newErrors.fullName = "Full name must be at least 2 characters"; + } + + if (!phoneNumber) { + newErrors.phoneNumber = "Phone number is required"; + } else if (!/^[0-9]{10}$/.test(phoneNumber.replace(/\D/g, ""))) { + newErrors.phoneNumber = "Please enter a valid phone number"; + } + + if (!password) { + newErrors.password = "Password is required"; + } else if (password.length < 8) { + newErrors.password = "Password must be at least 8 characters"; + } else if (!/(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])/.test(password)) { + newErrors.password = "Password must include uppercase, lowercase, and numbers"; + } + + if (password !== confirmPassword) { + newErrors.confirmPassword = "Passwords do not match"; + } + + setErrors(newErrors); + return Object.keys(newErrors).length === 0; + }; + + const handleEmailStep = () => { + if (validateEmailStep()) { + setFormStep("details"); + } + }; + + const handleDetailsStep = async () => { + if (validateDetailsStep()) { + setIsLoading(true); + try { + await new Promise((resolve) => setTimeout(resolve, 1500)); + setUserId(generateUserId()); + setFormStep("confirmation"); + } catch (error) { + setErrors({ submit: "An error occurred. Please try again." }); + } finally { + setIsLoading(false); + } + } + }; + + const copyToClipboard = (text: string, field: string) => { + navigator.clipboard.writeText(text); + setCopiedField(field); + setTimeout(() => setCopiedField(null), 2000); + }; + + return ( + + + +
+
+
+ {/* Header */} +
+
+ +
+

+ Create Account +

+

+ {formStep === "email" + ? "Get started with FinanceFlow" + : formStep === "details" + ? "Complete your profile" + : "Your account is ready"} +

+
+ + {/* Progress Bar */} +
+
= 0 + ? "bg-blue-600 dark:bg-blue-400" + : "bg-gray-300 dark:bg-gray-600" + }`} + >
+
= 0 + ? "bg-blue-600 dark:bg-blue-400" + : "bg-gray-300 dark:bg-gray-600" + }`} + >
+
+
+ + {/* Step 1: Email */} + {formStep === "email" && ( +
{ + e.preventDefault(); + handleEmailStep(); + }} + className="space-y-5" + > +
+ +
+ + { + setEmail(e.target.value); + if (errors.email) setErrors({ ...errors, email: "" }); + }} + placeholder="you@example.com" + className={`w-full pl-10 pr-4 py-2 rounded-lg border transition-colors ${ + errors.email + ? "border-red-300 bg-red-50 dark:bg-red-900/20 dark:border-red-700" + : "border-gray-300 dark:border-gray-600 bg-white dark:bg-gray-800" + } text-gray-900 dark:text-white placeholder-gray-500 dark:placeholder-gray-400 focus:outline-none focus:ring-2 focus:ring-blue-500 dark:focus:ring-blue-400`} + /> +
+ {errors.email && ( +

{errors.email}

+ )} +
+ + +
+ )} + + {/* Step 2: Details */} + {formStep === "details" && ( +
{ + e.preventDefault(); + handleDetailsStep(); + }} + className="space-y-5" + > +
+ + { + setFullName(e.target.value); + if (errors.fullName) setErrors({ ...errors, fullName: "" }); + }} + placeholder="John Doe" + className={`w-full px-4 py-2 rounded-lg border transition-colors ${ + errors.fullName + ? "border-red-300 bg-red-50 dark:bg-red-900/20 dark:border-red-700" + : "border-gray-300 dark:border-gray-600 bg-white dark:bg-gray-800" + } text-gray-900 dark:text-white placeholder-gray-500 dark:placeholder-gray-400 focus:outline-none focus:ring-2 focus:ring-blue-500 dark:focus:ring-blue-400`} + /> + {errors.fullName && ( +

{errors.fullName}

+ )} +
+ +
+ + { + setPhoneNumber(e.target.value); + if (errors.phoneNumber) setErrors({ ...errors, phoneNumber: "" }); + }} + placeholder="+91 98765 43210" + className={`w-full px-4 py-2 rounded-lg border transition-colors ${ + errors.phoneNumber + ? "border-red-300 bg-red-50 dark:bg-red-900/20 dark:border-red-700" + : "border-gray-300 dark:border-gray-600 bg-white dark:bg-gray-800" + } text-gray-900 dark:text-white placeholder-gray-500 dark:placeholder-gray-400 focus:outline-none focus:ring-2 focus:ring-blue-500 dark:focus:ring-blue-400`} + /> + {errors.phoneNumber && ( +

{errors.phoneNumber}

+ )} +
+ +
+ +
+ + { + setPassword(e.target.value); + if (errors.password) setErrors({ ...errors, password: "" }); + }} + placeholder="At least 8 characters" + className={`w-full pl-10 pr-4 py-2 rounded-lg border transition-colors ${ + errors.password + ? "border-red-300 bg-red-50 dark:bg-red-900/20 dark:border-red-700" + : "border-gray-300 dark:border-gray-600 bg-white dark:bg-gray-800" + } text-gray-900 dark:text-white placeholder-gray-500 dark:placeholder-gray-400 focus:outline-none focus:ring-2 focus:ring-blue-500 dark:focus:ring-blue-400`} + /> +
+ {errors.password && ( +

{errors.password}

+ )} +

+ Must include uppercase, lowercase, and numbers +

+
+ +
+ +
+ + { + setConfirmPassword(e.target.value); + if (errors.confirmPassword) setErrors({ ...errors, confirmPassword: "" }); + }} + placeholder="Confirm your password" + className={`w-full pl-10 pr-4 py-2 rounded-lg border transition-colors ${ + errors.confirmPassword + ? "border-red-300 bg-red-50 dark:bg-red-900/20 dark:border-red-700" + : "border-gray-300 dark:border-gray-600 bg-white dark:bg-gray-800" + } text-gray-900 dark:text-white placeholder-gray-500 dark:placeholder-gray-400 focus:outline-none focus:ring-2 focus:ring-blue-500 dark:focus:ring-blue-400`} + /> +
+ {errors.confirmPassword && ( +

{errors.confirmPassword}

+ )} +
+ + {errors.submit && ( +
+ +

{errors.submit}

+
+ )} + +
+ + +
+
+ )} + + {/* Step 3: Confirmation */} + {formStep === "confirmation" && userId && ( +
+
+ +
+

+ Account created successfully! +

+

+ Your account is ready to use. Save your credentials below. +

+
+
+ +
+
+

+ Your User ID +

+
+ + {userId} + + +
+
+ +
+

+ Your Email +

+
+ + {email} + + +
+
+
+ +
+ + Go to Login + + + Back to Home + +
+
+ )} + + {/* Footer Links */} + {formStep !== "confirmation" && ( +

+ Already have an account?{" "} + + Sign in + +

+ )} +
+ +

+ Your data is secure and protected by industry-leading encryption +

+
+
+ + +
+ ); +} diff --git a/src/app/withdraw/page.tsx b/src/app/withdraw/page.tsx new file mode 100644 index 0000000..411ba0f --- /dev/null +++ b/src/app/withdraw/page.tsx @@ -0,0 +1,475 @@ +"use client"; + +import Link from "next/link"; +import { useEffect, useState } from "react"; +import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider"; +import NavbarStyleFullscreen from "@/components/navbar/NavbarStyleFullscreen/NavbarStyleFullscreen"; +import FooterLogoEmphasis from "@/components/sections/footer/FooterLogoEmphasis"; +import { + Send, + CheckCircle, + Clock, + AlertCircle, + TrendingUp, + DollarSign, + ArrowRight, + Zap, +} from "lucide-react"; + +interface Investment { + id: string; + amount: number; + paymentMethod: string; + investmentType: string; + depositTime: string; + maturityTime: string; + status: string; + expectedReturn: number; +} + +export default function WithdrawPage() { + const [investments, setInvestments] = useState([]); + const [selectedInvestment, setSelectedInvestment] = useState(null); + const [withdrawAmount, setWithdrawAmount] = useState(""); + const [loading, setLoading] = useState(false); + const [submitted, setSubmitted] = useState(false); + const [remainingTime, setRemainingTime] = useState>({}); + + const navItems = [ + { name: "Home", id: "home" }, + { name: "How It Works", id: "how-it-works" }, + { name: "Dashboard", id: "dashboard" }, + { name: "Support", id: "support" }, + ]; + + const footerColumns = [ + { + items: [ + { label: "Home", href: "/" }, + { label: "Deposit", href: "/deposit" }, + { label: "Dashboard", href: "/dashboard" }, + { label: "Support", href: "/support" }, + ], + }, + { + items: [ + { label: "About Us", href: "#" }, + { label: "Our Team", href: "#" }, + { label: "Blog", href: "#" }, + { label: "Careers", href: "#" }, + ], + }, + { + items: [ + { label: "Privacy Policy", href: "#" }, + { label: "Terms of Service", href: "#" }, + { label: "Security", href: "#" }, + { label: "Compliance", href: "#" }, + ], + }, + { + items: [ + { label: "Email", href: "mailto:support@financeflow.com" }, + { label: "Phone", href: "tel:+919876543210" }, + { label: "Twitter", href: "https://twitter.com" }, + { label: "LinkedIn", href: "https://linkedin.com" }, + ], + }, + ]; + + // Load investments from localStorage + useEffect(() => { + const stored = localStorage.getItem("investments"); + if (stored) { + setInvestments(JSON.parse(stored)); + } + }, []); + + // Update countdown timers + useEffect(() => { + const interval = setInterval(() => { + const newRemaining: Record = {}; + + investments.forEach((inv) => { + const maturity = new Date(inv.maturityTime).getTime(); + const now = new Date().getTime(); + const diff = maturity - now; + + if (diff <= 0) { + newRemaining[inv.id] = "Ready to Withdraw"; + } else { + const hours = Math.floor(diff / (1000 * 60 * 60)); + const minutes = Math.floor((diff % (1000 * 60 * 60)) / (1000 * 60)); + const seconds = Math.floor((diff % (1000 * 60)) / 1000); + newRemaining[inv.id] = `${hours}h ${minutes}m ${seconds}s`; + } + }); + + setRemainingTime(newRemaining); + }, 1000); + + return () => clearInterval(interval); + }, [investments]); + + const handleWithdraw = async (e: React.FormEvent) => { + e.preventDefault(); + if (!selectedInvestment) return; + + setLoading(true); + + try { + // Simulate API call + await new Promise((resolve) => setTimeout(resolve, 1500)); + + // Update investment status + const updated = investments.map((inv) => { + if (inv.id === selectedInvestment) { + return { + ...inv, + status: "withdrawn"}; + } + return inv; + }); + + setInvestments(updated); + localStorage.setItem("investments", JSON.stringify(updated)); + + setSubmitted(true); + setSelectedInvestment(null); + setWithdrawAmount(""); + + setTimeout(() => setSubmitted(false), 3000); + } catch (error) { + console.error("Withdrawal failed:", error); + } finally { + setLoading(false); + } + }; + + const selectedInv = investments.find((inv) => inv.id === selectedInvestment); + const isMatured = selectedInv && new Date(selectedInv.maturityTime) <= new Date(); + const maxWithdraw = selectedInv ? selectedInv.expectedReturn : 0; + + const activeInvestments = investments.filter( + (inv) => inv.status === "active" + ); + const maturedInvestments = investments.filter( + (inv) => inv.status === "active" && new Date(inv.maturityTime) <= new Date() + ); + const withdrawnInvestments = investments.filter( + (inv) => inv.status === "withdrawn" + ); + + const totalEarnings = withdrawnInvestments.reduce( + (sum, inv) => sum + (inv.expectedReturn - inv.amount), + 0 + ); + + return ( + + + +
+
+ {/* Header */} +
+

+ Withdrawal Center +

+

+ Manage your investments and withdraw your profits instantly. +

+
+ + {/* Stats */} +
+
+

+ Active Investments +

+

+ {activeInvestments.length} +

+
+
+

+ Ready to Withdraw +

+

+ {maturedInvestments.length} +

+
+
+

+ Total Withdrawn +

+

+ ₹{withdrawnInvestments.length} +

+
+
+

+ Total Earnings +

+

+ ₹{totalEarnings.toLocaleString("en-IN")} +

+
+
+ + {/* Success Message */} + {submitted && ( +
+
+ +
+

Withdrawal Successful!

+

Your funds have been transferred to your bank account. You will receive a confirmation SMS shortly.

+
+
+
+ )} + + {/* Main Content */} +
+ {/* Active Investments */} +
+
+

+ Your Investments +

+ + {investments.length === 0 ? ( +
+ +

+ No active investments yet. +

+ + Make Your First Deposit → + +
+ ) : ( +
+ {investments.map((inv) => { + const isReady = new Date(inv.maturityTime) <= new Date(); + const isSelected = selectedInvestment === inv.id; + const status = inv.status === "withdrawn" ? "withdrawn" : isReady ? "ready" : "active"; + + return ( +
status !== "withdrawn" && setSelectedInvestment(inv.id)} + className={`rounded-lg border-2 p-4 transition-all cursor-pointer ${ + isSelected + ? "border-blue-500 bg-blue-50 dark:border-blue-400 dark:bg-blue-900/20" + : status === "withdrawn" + ? "border-slate-200 bg-slate-50 dark:border-slate-700 dark:bg-slate-800/50" + : isReady + ? "border-green-300 bg-green-50 dark:border-green-700 dark:bg-green-900/20" + : "border-slate-200 bg-white dark:border-slate-700 dark:bg-slate-900" + }`} + > +
+
+
+

+ ₹{inv.amount.toLocaleString("en-IN")} Investment +

+ {status === "withdrawn" && ( + + Withdrawn + + )} + {isReady && ( + + Ready + + )} +
+

+ {inv.investmentType.charAt(0).toUpperCase() + inv.investmentType.slice(1)} • {inv.paymentMethod} +

+
+
+

Deposit

+

+ {new Date(inv.depositTime).toLocaleDateString()} +

+
+
+

Maturity

+

+ {new Date(inv.maturityTime).toLocaleDateString()} +

+
+
+

Return

+

+ ₹{inv.expectedReturn.toLocaleString("en-IN")} +

+
+
+
+
+ {status === "withdrawn" ? ( +
+ + Completed +
+ ) : ( +
+

+ {remainingTime[inv.id] || "Loading..."} +

+

+ {isReady ? "Available now" : "Until ready"} +

+
+ )} +
+
+
+ ); + })} +
+ )} +
+
+ + {/* Withdrawal Form */} +
+

+ Withdraw Funds +

+ + {investments.length === 0 ? ( +

+ Create an investment first to start withdrawing. +

+ ) : selectedInvestment ? ( +
+
+

+ Maximum Available +

+

+ ₹{maxWithdraw.toLocaleString("en-IN")} +

+
+ + {!isMatured && ( +
+

+ + This investment is not yet ready for withdrawal. +

+
+ )} + +
+ + setWithdrawAmount(e.target.value)} + max={maxWithdraw} + min={0} + step="100" + disabled={!isMatured} + placeholder="Enter amount" + className="w-full rounded-lg border border-slate-300 bg-white px-3 py-2 text-slate-900 placeholder-slate-400 focus:border-blue-500 focus:outline-none focus:ring-2 focus:ring-blue-500/20 disabled:opacity-50 disabled:cursor-not-allowed dark:border-slate-600 dark:bg-slate-800 dark:text-white dark:placeholder-slate-500" + /> +
+ + + + +
+ ) : ( +

+ Select an investment from the list to withdraw. +

+ )} + +
+

+ Withdrawal Info +

+
    +
  • + + Instant bank transfer +
  • +
  • + + Zero hidden fees +
  • +
  • + + Available 24/7 +
  • +
+
+
+
+
+
+ + +
+ ); +} \ No newline at end of file