diff --git a/src/components/Dashboard.tsx b/src/components/Dashboard.tsx index 09d77bb..93d9873 100644 --- a/src/components/Dashboard.tsx +++ b/src/components/Dashboard.tsx @@ -6,6 +6,7 @@ import { Progress } from '@/components/ui/progress'; import { Input } from '@/components/ui/input'; import { GlassCard } from '@/components/ui/GlassCard'; import { BudgetRing } from '@/components/BudgetRing'; +import { formatCurrency } from '@/lib/utils'; import { TrendingUp, TrendingDown, @@ -25,26 +26,26 @@ import { const Dashboard: React.FC = () => { const portfolioData = { - totalValue: 9850000, // ₹98.5 lakhs + totalValue: 350000, change: 3.2, isPositive: true }; const budgetData = { - spent: 45000, - budget: 65000, + spent: 4500, + budget: 6500, categories: [ - { name: 'Food', spent: 12500, budget: 18000, color: 'text-orange-500' }, - { name: 'Transport', spent: 8500, budget: 12000, color: 'text-blue-500' }, - { name: 'Entertainment', spent: 6000, budget: 8000, color: 'text-purple-500' }, - { name: 'Shopping', spent: 18000, budget: 27000, color: 'text-pink-500' } + { name: 'Food', spent: 1250, budget: 1800, color: 'text-orange-500' }, + { name: 'Transport', spent: 850, budget: 1200, color: 'text-blue-500' }, + { name: 'Entertainment', spent: 600, budget: 800, color: 'text-purple-500' }, + { name: 'Shopping', spent: 1800, budget: 2700, color: 'text-pink-500' } ] }; const savingsGoals = [ - { name: 'Emergency Fund', current: 450000, target: 800000, color: 'from-green-400 to-green-600' }, - { name: 'Goa Trip', current: 85000, target: 150000, color: 'from-blue-400 to-blue-600' }, - { name: 'New Car', current: 620000, target: 1200000, color: 'from-purple-400 to-purple-600' } + { name: 'Emergency Fund', current: 45000, target: 80000, color: 'from-green-400 to-green-600' }, + { name: 'Dubai Trip', current: 8500, target: 15000, color: 'from-blue-400 to-blue-600' }, + { name: 'New Car', current: 62000, target: 120000, color: 'from-purple-400 to-purple-600' } ]; const creditScore = 768; @@ -115,7 +116,7 @@ const Dashboard: React.FC = () => {

Total Net Worth

-

₹{(portfolioData.totalValue / 100000).toFixed(2)}L

+

{formatCurrency(portfolioData.totalValue)}

@@ -131,7 +132,7 @@ const Dashboard: React.FC = () => {

Total Savings

-

₹{(portfolioData.totalValue * 0.15 / 100000).toFixed(2)}L

+

{formatCurrency(portfolioData.totalValue * 0.15)}

@@ -167,7 +168,7 @@ const Dashboard: React.FC = () => {

Optimize Savings

-

Cancel unused Hotstar subscription to save ₹1,499/year. You haven't used it in 3 months.

+

Cancel unused streaming subscription to save {formatCurrency(150)}/year. You haven't used it in 3 months.

@@ -176,7 +177,7 @@ const Dashboard: React.FC = () => {

Credit utilization

-

Pay down ₹12k on HDFC card to keep utilization under 30%.

+

Pay down {formatCurrency(1200)} on ADCB card to keep utilization under 30%.

@@ -192,7 +193,7 @@ const Dashboard: React.FC = () => {
{goal.name} - ₹{(goal.current / 1000).toFixed(0)}k / ₹{(goal.target / 1000).toFixed(0)}k + {formatCurrency(goal.current)} / {formatCurrency(goal.target)}
Total Spent - {budgetData.currency} {budgetData.spent.toLocaleString()} + {formatCurrency(budgetData.spent)} - of {budgetData.currency} {budgetData.limit.toLocaleString()} + of {formatCurrency(budgetData.limit)}
@@ -131,8 +130,8 @@ export default function BudgetManager() { {cat.name}
- {budgetData.currency} {cat.spent.toLocaleString()} - / {cat.limit.toLocaleString()} + {formatCurrency(cat.spent)} + / {formatCurrency(cat.limit)}
@@ -176,8 +175,8 @@ export default function BudgetManager() {
- {budgetData.currency} {(goal.current / 1000).toFixed(0)}k - {budgetData.currency} {(goal.target / 1000000).toFixed(1)}M + {formatCurrency(goal.current)} + {formatCurrency(goal.target)}
diff --git a/src/components/features/GoalPlanning.tsx b/src/components/features/GoalPlanning.tsx index b14ed16..a8f2164 100644 --- a/src/components/features/GoalPlanning.tsx +++ b/src/components/features/GoalPlanning.tsx @@ -18,47 +18,47 @@ import { Heart, Trophy, Star, - IndianRupee, - Plus, - AlertCircle + AlertCircle, + Plus } from 'lucide-react'; +import { formatCurrency } from '@/lib/utils'; const GoalPlanning: React.FC = () => { const financialGoals = [ { id: 1, title: 'Emergency Fund', - description: '6-12 months of living expenses', + description: '6 months of living expenses', category: 'Security', icon: , - targetAmount: 600000, - currentAmount: 450000, - monthlyContribution: 15000, + targetAmount: 60000, + currentAmount: 45000, + monthlyContribution: 2500, targetDate: '2024-12-31', priority: 'high', status: 'on-track', milestones: [ - { amount: 200000, completed: true, date: '2023-06-01' }, - { amount: 400000, completed: true, date: '2023-12-01' }, - { amount: 600000, completed: false, date: '2024-12-31' } + { amount: 20000, completed: true, date: '2023-06-01' }, + { amount: 40000, completed: true, date: '2023-12-01' }, + { amount: 60000, completed: false, date: '2024-12-31' } ] }, { id: 2, title: 'Home Down Payment', - description: '20% down payment for ₹85L home', + description: '20% down payment for home', category: 'Investment', icon: , - targetAmount: 1700000, - currentAmount: 850000, - monthlyContribution: 25000, + targetAmount: 250000, + currentAmount: 120000, + monthlyContribution: 5000, targetDate: '2025-08-31', priority: 'high', status: 'behind', milestones: [ - { amount: 500000, completed: true, date: '2023-08-01' }, - { amount: 1000000, completed: false, date: '2024-06-01' }, - { amount: 1700000, completed: false, date: '2025-08-31' } + { amount: 100000, completed: true, date: '2023-08-01' }, + { amount: 200000, completed: false, date: '2024-06-01' }, + { amount: 250000, completed: false, date: '2025-08-31' } ] }, { @@ -67,16 +67,16 @@ const GoalPlanning: React.FC = () => { description: '15-day Europe trip for family', category: 'Lifestyle', icon: , - targetAmount: 350000, - currentAmount: 185000, - monthlyContribution: 12000, + targetAmount: 35000, + currentAmount: 18500, + monthlyContribution: 1500, targetDate: '2024-09-30', priority: 'medium', status: 'on-track', milestones: [ - { amount: 150000, completed: true, date: '2023-12-01' }, - { amount: 250000, completed: false, date: '2024-05-01' }, - { amount: 350000, completed: false, date: '2024-09-30' } + { amount: 15000, completed: true, date: '2023-12-01' }, + { amount: 25000, completed: false, date: '2024-05-01' }, + { amount: 35000, completed: false, date: '2024-09-30' } ] }, { @@ -85,16 +85,16 @@ const GoalPlanning: React.FC = () => { description: 'Higher education fund for children', category: 'Education', icon: , - targetAmount: 2500000, - currentAmount: 280000, - monthlyContribution: 18000, + targetAmount: 500000, + currentAmount: 85000, + monthlyContribution: 2500, targetDate: '2035-06-30', priority: 'medium', status: 'on-track', milestones: [ - { amount: 500000, completed: false, date: '2026-06-30' }, - { amount: 1500000, completed: false, date: '2030-06-30' }, - { amount: 2500000, completed: false, date: '2035-06-30' } + { amount: 150000, completed: false, date: '2026-06-30' }, + { amount: 300000, completed: false, date: '2030-06-30' }, + { amount: 500000, completed: false, date: '2035-06-30' } ] }, { @@ -103,16 +103,16 @@ const GoalPlanning: React.FC = () => { description: 'Premium SUV purchase', category: 'Lifestyle', icon: , - targetAmount: 1200000, - currentAmount: 620000, - monthlyContribution: 20000, + targetAmount: 150000, + currentAmount: 90000, + monthlyContribution: 5000, targetDate: '2025-03-31', priority: 'low', status: 'ahead', milestones: [ - { amount: 400000, completed: true, date: '2023-09-01' }, - { amount: 800000, completed: false, date: '2024-08-01' }, - { amount: 1200000, completed: false, date: '2025-03-31' } + { amount: 40000, completed: true, date: '2023-09-01' }, + { amount: 80000, completed: true, date: '2024-08-01' }, + { amount: 150000, completed: false, date: '2025-03-31' } ] } ]; @@ -121,8 +121,8 @@ const GoalPlanning: React.FC = () => { { goalId: 1, strategies: [ - 'Automate ₹15K monthly transfer to high-yield savings', - 'Use liquid funds for better returns (6-7%)', + 'Automate AED 2,500 monthly transfer to high-yield savings', + 'Use liquid funds for better returns (4-5%)', 'Keep 3 months in savings, rest in liquid funds', 'Review and adjust monthly as expenses change' ], @@ -137,13 +137,13 @@ const GoalPlanning: React.FC = () => { strategies: [ 'Increase SIP allocation to equity funds', 'Use step-up SIPs with salary increments', - 'Consider ELSS for tax benefits', + 'Consider diversified ETFs for steady growth', 'Time market entry closer to purchase date' ], tips: [ 'Start researching locations 2 years before', - 'Factor in registration and other costs (8-10%)', - 'Consider pre-approved home loans for negotiation' + 'Factor in registration and agency fees (4-6%)', + 'Consider pre-approved mortgages for negotiation' ] }, { @@ -151,7 +151,7 @@ const GoalPlanning: React.FC = () => { strategies: [ 'Use conservative investments (debt funds)', 'Book travel during off-season for savings', - 'Consider travel credit cards for rewards', + 'Consider travel credit cards for rewards (Skywards)', 'Track flight prices for best deals' ], tips: [ @@ -204,11 +204,11 @@ const GoalPlanning: React.FC = () => { const now = new Date(); const diffTime = target.getTime() - now.getTime(); const diffMonths = Math.ceil(diffTime / (1000 * 60 * 60 * 24 * 30)); - + if (diffMonths < 0) return 'Overdue'; if (diffMonths === 0) return 'This month'; if (diffMonths < 12) return `${diffMonths} months`; - + const years = Math.floor(diffMonths / 12); const months = diffMonths % 12; return months > 0 ? `${years}y ${months}m` : `${years} years`; @@ -262,7 +262,7 @@ const GoalPlanning: React.FC = () => {

Target Amount

-

₹{(progressInsights.totalTargetAmount / 100000).toFixed(1)}L

+

{formatCurrency(progressInsights.totalTargetAmount)}

Total across goals

@@ -277,7 +277,7 @@ const GoalPlanning: React.FC = () => {

Monthly SIP

-

₹{(progressInsights.monthlyCommitment / 1000).toFixed(0)}K

+

{formatCurrency(progressInsights.monthlyCommitment)}

Total commitment

@@ -304,7 +304,7 @@ const GoalPlanning: React.FC = () => { Add New Goal
- +
{financialGoals.map((goal) => ( @@ -334,18 +334,18 @@ const GoalPlanning: React.FC = () => {
Progress - ₹{(goal.currentAmount / 100000).toFixed(1)}L / ₹{(goal.targetAmount / 100000).toFixed(1)}L + {formatCurrency(goal.currentAmount)} / {formatCurrency(goal.targetAmount)}

{Math.round((goal.currentAmount / goal.targetAmount) * 100)}% completed

- +

Monthly SIP

-

₹{(goal.monthlyContribution / 1000).toFixed(0)}K

+

{formatCurrency(goal.monthlyContribution)}

Time Remaining

@@ -399,22 +399,22 @@ const GoalPlanning: React.FC = () => {
- +
- +

Current

-

₹{(goal.currentAmount / 100000).toFixed(1)}L

+

{formatCurrency(goal.currentAmount)}

Monthly SIP

-

₹{(goal.monthlyContribution / 1000).toFixed(0)}K

+

{formatCurrency(goal.monthlyContribution)}

Remaining

-

₹{((goal.targetAmount - goal.currentAmount) / 100000).toFixed(1)}L

+

{formatCurrency(goal.targetAmount - goal.currentAmount)}

@@ -438,7 +438,7 @@ const GoalPlanning: React.FC = () => { {goalStrategies.map((strategy) => { const goal = financialGoals.find(g => g.id === strategy.goalId); if (!goal) return null; - + return (
@@ -450,7 +450,7 @@ const GoalPlanning: React.FC = () => {

AI-optimized strategy

- +
Recommended Strategies
@@ -463,7 +463,7 @@ const GoalPlanning: React.FC = () => { ))}
- +
Pro Tips
    @@ -507,7 +507,7 @@ const GoalPlanning: React.FC = () => {

- +
{goal.milestones.map((milestone, index) => (
@@ -518,7 +518,7 @@ const GoalPlanning: React.FC = () => { )}
-

₹{(milestone.amount / 100000).toFixed(1)}L

+

{formatCurrency(milestone.amount)}

Target: {new Date(milestone.date).toLocaleDateString()}

diff --git a/src/components/features/PortfolioManager.tsx b/src/components/features/PortfolioManager.tsx index 76056ec..bde6322 100644 --- a/src/components/features/PortfolioManager.tsx +++ b/src/components/features/PortfolioManager.tsx @@ -4,6 +4,7 @@ import { GlassCard } from '@/components/ui/GlassCard'; import { Button } from '@/components/ui/button'; import { Badge } from '@/components/ui/badge'; import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs'; +import { formatCurrency } from '@/lib/utils'; import { TrendingUp, TrendingDown, @@ -11,99 +12,99 @@ import { Target, ArrowUpRight, ArrowDownRight, - IndianRupee, PieChart, - Wallet + Wallet, + Coins // Replaced IndianRupee with Coins as a generic financial icon or could use a custom Dirham icon } from 'lucide-react'; const PortfolioManager: React.FC = () => { const [selectedPeriod, setSelectedPeriod] = useState('1M'); const portfolioOverview = { - totalValue: 9850000, // ₹98.5L - totalInvested: 8200000, // ₹82L - totalGains: 1650000, // ₹16.5L - gainPercentage: 20.12, - dayChange: 45000, // ₹45K + totalValue: 350000, + totalInvested: 290000, + totalGains: 60000, + gainPercentage: 20.69, + dayChange: 1500, dayChangePercent: 0.46 }; const holdings = [ { - name: 'HDFC Bank', - symbol: 'HDFCBANK', - shares: 150, - currentPrice: 1680, - invested: 225000, - currentValue: 252000, - gain: 27000, + name: 'Emirates NBD', + symbol: 'ENBD', + shares: 1500, + currentPrice: 16.80, + invested: 22500, + currentValue: 25200, + gain: 2700, gainPercent: 12.0, sector: 'Banking' }, { - name: 'Infosys', - symbol: 'INFY', - shares: 200, - currentPrice: 1420, - invested: 260000, - currentValue: 284000, - gain: 24000, - gainPercent: 9.23, - sector: 'IT' + name: 'Emaar Properties', + symbol: 'EMAAR', + shares: 3000, + currentPrice: 8.20, + invested: 22000, + currentValue: 24600, + gain: 2600, + gainPercent: 11.8, + sector: 'Real Estate' }, { - name: 'Reliance Industries', - symbol: 'RELIANCE', - shares: 80, - currentPrice: 2850, - invested: 216000, - currentValue: 228000, - gain: 12000, - gainPercent: 5.56, - sector: 'Oil & Gas' + name: 'DEWA', + symbol: 'DEWA', + shares: 5000, + currentPrice: 2.50, + invested: 12000, + currentValue: 12500, + gain: 500, + gainPercent: 4.17, + sector: 'Utilities' }, { - name: 'SBI Bluechip Fund', - symbol: 'SBI-BC', - units: 5000, - currentPrice: 85.50, - invested: 400000, - currentValue: 427500, - gain: 27500, - gainPercent: 6.88, - sector: 'Mutual Fund' + name: 'US Tech ETF', + symbol: 'QQQ', + units: 50, + currentPrice: 450.50, + invested: 20000, + currentValue: 22525, + gain: 2525, + gainPercent: 12.6, + sector: 'ETF' } ]; const sectorAllocation = [ - { sector: 'Banking', percentage: 35, value: 3447500, color: 'from-blue-400 to-blue-600' }, - { sector: 'IT', percentage: 25, value: 2462500, color: 'from-green-400 to-green-600' }, - { sector: 'Mutual Funds', percentage: 20, value: 1970000, color: 'from-purple-400 to-purple-600' }, - { sector: 'Oil & Gas', percentage: 15, value: 1477500, color: 'from-red-400 to-red-600' }, - { sector: 'Others', percentage: 5, value: 492500, color: 'from-yellow-400 to-yellow-600' } + { sector: 'Banking', percentage: 35, value: 122500, color: 'from-blue-400 to-blue-600' }, + { sector: 'Real Estate', percentage: 25, value: 87500, color: 'from-green-400 to-green-600' }, + { sector: 'Utilities', percentage: 20, value: 70000, color: 'from-purple-400 to-purple-600' }, + { sector: 'Telecom', percentage: 15, value: 52500, color: 'from-red-400 to-red-600' }, + { sector: 'Others', percentage: 5, value: 17500, color: 'from-yellow-400 to-yellow-600' } ]; const recommendations = [ { type: 'rebalance', title: 'Rebalance Portfolio', - description: 'Your banking allocation is 5% above target. Consider reducing exposure.', + description: 'Your real estate allocation is 5% above target. Consider reducing exposure.', priority: 'medium', - action: 'Sell ₹1.5L worth of banking stocks' + action: `Sell ${formatCurrency(5000)} worth of real estate stocks` }, { type: 'opportunity', title: 'Investment Opportunity', - description: 'HDFC Pharma Fund showing strong momentum with low correlation to your existing holdings.', + description: 'Renewable energy ETF showing strong momentum with low correlation to your existing holdings.', priority: 'high', - action: 'Consider investing ₹2L' + action: `Consider investing ${formatCurrency(10000)}` }, { type: 'risk', title: 'Risk Alert', - description: 'High concentration in financial sector. Diversify across sectors.', + description: 'High concentration in local equity. Diversify globally.', priority: 'high', - action: 'Add technology and healthcare exposure' + action: 'Add US or Global ETFs' } ]; @@ -136,7 +137,7 @@ const PortfolioManager: React.FC = () => {
-

₹{(portfolioOverview.totalValue / 100000).toFixed(1)}L

+

{formatCurrency(portfolioOverview.totalValue)}

+{portfolioOverview.gainPercentage}% @@ -150,18 +151,18 @@ const PortfolioManager: React.FC = () => {
-

₹{(portfolioOverview.totalGains / 100000).toFixed(1)}L

-

vs ₹{(portfolioOverview.totalInvested / 100000).toFixed(1)}L invested

+

{formatCurrency(portfolioOverview.totalGains)}

+

vs {formatCurrency(portfolioOverview.totalInvested)} invested

Day Change

- +
-

₹{(portfolioOverview.dayChange / 1000).toFixed(0)}K

+

{formatCurrency(portfolioOverview.dayChange)}

+{portfolioOverview.dayChangePercent}% @@ -194,19 +195,19 @@ const PortfolioManager: React.FC = () => {
- {holding.symbol.substring(0, 2)} + {holding.symbol.substring(0, 4)}
{holding.sector}

{holding.name}

-

{holding.shares} shares @ ₹{holding.currentPrice}

+

{holding.shares} shares @ {formatCurrency(holding.currentPrice)}

Current Value

-

₹{(holding.currentValue / 1000).toFixed(1)}k

+

{formatCurrency(holding.currentValue)}

0 ? 'text-green-600' : 'text-red-600'}`}>

@@ -214,7 +215,7 @@ const PortfolioManager: React.FC = () => { {holding.gainPercent}%

- {holding.gain > 0 ? '+' : ''}₹{(holding.gain / 1000).toFixed(1)}k + {holding.gain > 0 ? '+' : ''}{formatCurrency(holding.gain)}

@@ -236,7 +237,7 @@ const PortfolioManager: React.FC = () => {
{sector.percentage}% -

₹{(sector.value / 100000).toFixed(1)}L

+

{formatCurrency(sector.value)}

diff --git a/src/components/features/SavingsBooster.tsx b/src/components/features/SavingsBooster.tsx index bd81611..27b8d53 100644 --- a/src/components/features/SavingsBooster.tsx +++ b/src/components/features/SavingsBooster.tsx @@ -12,7 +12,7 @@ import { CheckCircle2, PlayCircle } from 'lucide-react'; -import { cn } from '@/lib/utils'; +import { cn, formatCurrency } from '@/lib/utils'; import { ResponsiveContainer, AreaChart, Area, XAxis, YAxis, Tooltip } from 'recharts'; // Mock Data @@ -126,12 +126,12 @@ export default function SavingsBooster() { Monthly Potential
- AED {savingsData.potential.toLocaleString()} + {formatCurrency(savingsData.potential)} /mo
- + AED {(savingsData.potential - savingsData.current).toLocaleString()} vs current + + {formatCurrency(savingsData.potential - savingsData.current)} vs current
diff --git a/src/components/ui/fin-tech-landing-page.tsx b/src/components/ui/fin-tech-landing-page.tsx new file mode 100644 index 0000000..93a5f86 --- /dev/null +++ b/src/components/ui/fin-tech-landing-page.tsx @@ -0,0 +1,272 @@ +"use client"; + +import React from "react"; +import { motion } from "framer-motion"; +import { ArrowRight, CheckCircle, TrendingUp, Shield, Zap, Globe, Smartphone, CreditCard } from "lucide-react"; +import { Button } from "@/components/ui/button"; +import { cn } from "@/lib/utils"; +import { useNavigate } from "react-router-dom"; + +// Animation variants +const containerVariants = { + hidden: { opacity: 0 }, + visible: { + opacity: 1, + transition: { + staggerChildren: 0.1, + delayChildren: 0.3, + }, + }, +}; + +const itemVariants = { + hidden: { y: 20, opacity: 0 }, + visible: { + y: 0, + opacity: 1, + transition: { + type: "spring" as const, + stiffness: 100, + }, + }, +}; + +const MoneyflowLandingPage = () => { + const navigate = useNavigate(); + + return ( +
+ {/* Navbar */} + + + {/* Hero Section */} +
+ {/* Background Gradients */} +
+
+
+ +
+ + + + Finance AI Companion 2.0 + + + + Master your money with
+ + Intelligent AI + +
+ + + Experience the future of personal finance. Real-time insights, automated budgeting, and AI-driven investment advice—all in one beautiful app. + + + + + + +
+ + {/* Hero Image/Dashboard Preview */} + +
+
+
+ {/* Placeholder for actual dashboard screenshot */} +
+
+ +
+

WealthWise Dashboard

+

Interactive AI Financial Overview

+
+ {/* Simulated UI Elements */} +
+
+
+
+ {/* Floating elements */} + +
+
+
+

Portfolio

+

+24.5%

+
+
+
+ +
+
+
+

Protection

+

Assets Secured

+
+
+
+ +
+
+ + {/* Features Grid */} +
+
+
+

+ Everything you need to grow your wealth +

+

+ WealthWise combines advanced AI with intuitive design to give you complete control over your financial life. +

+
+ +
+ {[ + { + icon: , + title: "Mobile First Design", + desc: "Manage your finances on the go with our responsive, fluid mobile interface." + }, + { + icon: , + title: "Instant Analytics", + desc: "Get real-time insights into your spending habits and saving opportunities." + }, + { + icon: , + title: "Global Markets", + desc: "Track international assets and currencies with seamless integration." + }, + { + icon: , + title: "Bank-Grade Security", + desc: "Your data is protected with state-of-the-art encryption and biometrics." + }, + { + icon: , + title: "Smart Budgeting", + desc: "AI automatically categorizes your expenses and sets smart limits." + }, + { + icon: , + title: "Investment AI", + desc: "Personalized portfolio recommendations based on your risk profile." + } + ].map((feature, i) => ( + +
+ {feature.icon} +
+

{feature.title}

+

+ {feature.desc} +

+
+ ))} +
+
+
+ + {/* CTA Section */} +
+
+
+ +
+

+ Ready to take control? +

+

+ Join thousands of users who are already building a better financial future with WealthWise. +

+
+ + +
+
+
+ + {/* Footer */} +
+
+
+
+ W +
+ WealthWise +
+
+ © 2024 WealthWise Inc. All rights reserved. +
+ +
+
+
+ ); +}; + +export default MoneyflowLandingPage; diff --git a/src/components/ui/modern-sign-in.tsx b/src/components/ui/modern-sign-in.tsx index f52b84a..f17ee0d 100644 --- a/src/components/ui/modern-sign-in.tsx +++ b/src/components/ui/modern-sign-in.tsx @@ -128,9 +128,19 @@ export const ModernSignIn = () => {
{/* UAE Pass */} - +
+ + + +
{/* Toggle Mode */}
diff --git a/src/lib/utils.ts b/src/lib/utils.ts index bd0c391..c0ef83f 100644 --- a/src/lib/utils.ts +++ b/src/lib/utils.ts @@ -4,3 +4,12 @@ import { twMerge } from "tailwind-merge" export function cn(...inputs: ClassValue[]) { return twMerge(clsx(inputs)) } + +export const formatCurrency = (amount: number) => { + return new Intl.NumberFormat('en-AE', { + style: 'currency', + currency: 'AED', + minimumFractionDigits: 0, + maximumFractionDigits: 0, + }).format(amount); +}; diff --git a/src/pages/Landing.tsx b/src/pages/Landing.tsx index 0fb956a..d200f9b 100644 --- a/src/pages/Landing.tsx +++ b/src/pages/Landing.tsx @@ -1,415 +1,8 @@ -import React, { Suspense, useRef, useState, useEffect } from 'react'; -import { Canvas, useFrame } from '@react-three/fiber'; -import { Float, OrbitControls, Sphere, Box, Torus, Text3D, Center, Environment } from '@react-three/drei'; -import { Button } from '@/components/ui/button'; -import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card'; -import { Badge } from '@/components/ui/badge'; -import { useNavigate } from 'react-router-dom'; -import { - DollarSign, - TrendingUp, - Shield, - Target, - Zap, - ArrowRight, - CheckCircle, - Star, - Users, - BarChart3, - Brain, - Clock -} from 'lucide-react'; -import * as THREE from 'three'; - -// Error Boundary Component -class Scene3DErrorBoundary extends React.Component< - { children: React.ReactNode; fallback: React.ReactNode }, - { hasError: boolean } -> { - constructor(props: { children: React.ReactNode; fallback: React.ReactNode }) { - super(props); - this.state = { hasError: false }; - } - - static getDerivedStateFromError(error: Error): { hasError: boolean } { - return { hasError: true }; - } - - componentDidCatch(error: Error, errorInfo: React.ErrorInfo) { - console.warn('3D Scene Error:', error, errorInfo); - } - - render() { - if (this.state.hasError) { - return this.props.fallback; - } - - return this.props.children; - } -} - -// 3D Scene Components -const FloatingCoin = ({ position }: { position: [number, number, number] }) => { - const meshRef = useRef(null); - - useFrame((state) => { - try { - if (meshRef.current) { - meshRef.current.rotation.y = state.clock.elapsedTime * 0.5; - meshRef.current.rotation.x = Math.sin(state.clock.elapsedTime * 0.3) * 0.1; - } - } catch (error) { - console.warn('FloatingCoin animation error:', error); - } - }); - - return ( - - - - - - - ); -}; - -const AnimatedSphere = ({ position, color }: { position: [number, number, number], color: string }) => { - const meshRef = useRef(null); - - useFrame((state) => { - try { - if (meshRef.current) { - meshRef.current.position.y = position[1] + Math.sin(state.clock.elapsedTime) * 0.2; - meshRef.current.rotation.x = state.clock.elapsedTime * 0.2; - meshRef.current.rotation.y = state.clock.elapsedTime * 0.3; - } - } catch (error) { - console.warn('AnimatedSphere animation error:', error); - } - }); - - return ( - - - - - ); -}; - -const Scene3D = () => { - try { - return ( - <> - - - - {/* Floating Elements */} - - - - - - - - - {/* Central rotating torus */} - - - - - - - - - ); - } catch (error) { - console.warn('Scene3D render error:', error); - return ( - <> - - - - - - - ); - } -}; +import React from 'react'; +import MoneyflowLandingPage from "@/components/ui/fin-tech-landing-page"; const Landing: React.FC = () => { - const navigate = useNavigate(); - - const features = [ - { - icon: , - title: "Portfolio Manager", - description: "Analyze and optimize your investment portfolio with AI-powered insights. Track stocks, mutual funds, and get rebalancing recommendations.", - status: "available" - }, - { - icon: , - title: "Budget Manager", - description: "Take control of your spending with intelligent budget tracking. Monitor expenses, set category limits, and get spending insights.", - status: "available" - }, - { - icon: , - title: "Savings Booster", - description: "Maximize your savings potential with AI-driven cost optimization. Find duplicate subscriptions and money-saving opportunities.", - status: "available" - }, - { - icon: , - title: "Credit Manager", - description: "Optimize your credit health with intelligent payment strategies. Monitor CIBIL score and get improvement recommendations.", - status: "coming-soon" - }, - { - icon: , - title: "Insurance Advisor", - description: "Find the perfect insurance coverage for your needs. Get personalized recommendations and policy comparisons.", - status: "coming-soon" - }, - { - icon: , - title: "AI Jar (Goal Planning)", - description: "Achieve your financial dreams with intelligent goal planning. Set targets, track progress, and get step-by-step guidance.", - status: "coming-soon" - }, - { - icon: , - title: "Voice Bot Assistant", - description: "Access your financial information hands-free with voice commands. Get spoken insights and natural language queries.", - status: "coming-soon" - }, - { - icon: , - title: "Commitment Advisor", - description: "Make informed decisions about major financial commitments. Get timing recommendations and affordability analysis.", - status: "coming-soon" - } - ]; - - const stats = [ - { value: "₹50L+", label: "Money Saved" }, - { value: "10K+", label: "Happy Users" }, - { value: "95%", label: "Success Rate" }, - { value: "24/7", label: "AI Support" } - ]; - - return ( -
- {/* Hero Section */} -
- {/* 3D Background */} -
- -
-
- } - > - - - - - - }> - - - - -
- - {/* Background decorations */} -
-
-
-
- - {/* Content */} -
- - - India's #1 AI Financial Assistant - - -

- Your Money, -
- - Powered by AI - -

- -

- Transform your financial future with intelligent insights, automated savings, - and personalized investment strategies designed for Indian investors. -

- -
- - - -
- - {/* Stats */} -
- {stats.map((stat, index) => ( -
-
{stat.value}
-
{stat.label}
-
- ))} -
-
- - - {/* Features Section */} -
-
-
-

- Complete Financial Management Suite -

-

- Discover how AI can revolutionize your relationship with money -

- - {/* Available Features Highlight */} -
-
- - Now Available -
-

- Portfolio Manager, Budget Tracker & Savings Booster are live and ready to transform your finances! -

-
-
- -
- {features.map((feature, index) => ( - - -
-
-
- {feature.icon} -
-
- - {feature.status === 'available' ? ( - <> - - Available - - ) : ( - <> - - Coming Soon - - )} - -
- {feature.title} -
- - - {feature.description} - - {feature.status === 'available' && ( - - )} - -
- ))} -
-
-
- - {/* CTA Section */} -
-
- - -

- Start Managing Your Money Smarter Today -

-

- Get instant access to Portfolio Management, Budget Tracking, and Savings Optimization -

- - {/* Feature Pills */} -
- - - Track Investments - - - - Monitor Budget - - - - Boost Savings - -
- -
- -
- -

- No credit card required • Full access to available features • More coming soon -

-
-
-
-
-
- ); + return ; }; export default Landing; \ No newline at end of file diff --git a/wealthwise.eventifyplus.com.conf b/wealthwise.eventifyplus.com.conf new file mode 100644 index 0000000..708a2a5 --- /dev/null +++ b/wealthwise.eventifyplus.com.conf @@ -0,0 +1,10 @@ +server { + listen 80; + server_name wealthwise.eventifyplus.com; + root /var/www/wealthwise.eventifyplus.com; + index index.html; + + location / { + try_files $uri $uri/ /index.html; + } +}