tr]:last:border-b-0", className)}
{...props} />
))
TableFooter.displayName = "TableFooter"
const TableRow = React.forwardRef(({ className, ...props }, ref) => (
))
TableRow.displayName = "TableRow"
const TableHead = React.forwardRef(({ className, ...props }, ref) => (
[role=checkbox]]:translate-y-[2px]",
className
)}
{...props} />
))
TableHead.displayName = "TableHead"
const TableCell = React.forwardRef(({ className, ...props }, ref) => (
| [role=checkbox]]:translate-y-[2px]",
className
)}
{...props} />
))
TableCell.displayName = "TableCell"
const TableCaption = React.forwardRef(({ className, ...props }, ref) => (
))
TableCaption.displayName = "TableCaption"
export {
Table,
TableHeader,
TableBody,
TableFooter,
TableHead,
TableRow,
TableCell,
TableCaption,
}
================================================
FILE: components/ui/tooltip.jsx
================================================
"use client"
import * as React from "react"
import * as TooltipPrimitive from "@radix-ui/react-tooltip"
import { cn } from "@/lib/utils"
const TooltipProvider = TooltipPrimitive.Provider
const Tooltip = TooltipPrimitive.Root
const TooltipTrigger = TooltipPrimitive.Trigger
const TooltipContent = React.forwardRef(({ className, sideOffset = 4, ...props }, ref) => (
))
TooltipContent.displayName = TooltipPrimitive.Content.displayName
export { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }
================================================
FILE: components.json
================================================
{
"$schema": "https://ui.shadcn.com/schema.json",
"style": "new-york",
"rsc": true,
"tsx": false,
"tailwind": {
"config": "tailwind.config.js",
"css": "app/globals.css",
"baseColor": "neutral",
"cssVariables": true,
"prefix": ""
},
"aliases": {
"components": "@/components",
"utils": "@/lib/utils",
"ui": "@/components/ui",
"lib": "@/lib",
"hooks": "@/hooks"
},
"iconLibrary": "lucide"
}
================================================
FILE: data/categories.js
================================================
export const defaultCategories = [
// Income Categories
{
id: "salary",
name: "Salary",
type: "INCOME",
color: "#22c55e", // green-500
icon: "Wallet",
},
{
id: "freelance",
name: "Freelance",
type: "INCOME",
color: "#06b6d4", // cyan-500
icon: "Laptop",
},
{
id: "investments",
name: "Investments",
type: "INCOME",
color: "#6366f1", // indigo-500
icon: "TrendingUp",
},
{
id: "business",
name: "Business",
type: "INCOME",
color: "#ec4899", // pink-500
icon: "Building",
},
{
id: "rental",
name: "Rental",
type: "INCOME",
color: "#f59e0b", // amber-500
icon: "Home",
},
{
id: "other-income",
name: "Other Income",
type: "INCOME",
color: "#64748b", // slate-500
icon: "Plus",
},
// Expense Categories
{
id: "housing",
name: "Housing",
type: "EXPENSE",
color: "#ef4444", // red-500
icon: "Home",
subcategories: ["Rent", "Mortgage", "Property Tax", "Maintenance"],
},
{
id: "transportation",
name: "Transportation",
type: "EXPENSE",
color: "#f97316", // orange-500
icon: "Car",
subcategories: ["Fuel", "Public Transport", "Maintenance", "Parking"],
},
{
id: "groceries",
name: "Groceries",
type: "EXPENSE",
color: "#84cc16", // lime-500
icon: "Shopping",
},
{
id: "utilities",
name: "Utilities",
type: "EXPENSE",
color: "#06b6d4", // cyan-500
icon: "Zap",
subcategories: ["Electricity", "Water", "Gas", "Internet", "Phone"],
},
{
id: "entertainment",
name: "Entertainment",
type: "EXPENSE",
color: "#8b5cf6", // violet-500
icon: "Film",
subcategories: ["Movies", "Games", "Streaming Services"],
},
{
id: "food",
name: "Food",
type: "EXPENSE",
color: "#f43f5e", // rose-500
icon: "UtensilsCrossed",
},
{
id: "shopping",
name: "Shopping",
type: "EXPENSE",
color: "#ec4899", // pink-500
icon: "ShoppingBag",
subcategories: ["Clothing", "Electronics", "Home Goods"],
},
{
id: "healthcare",
name: "Healthcare",
type: "EXPENSE",
color: "#14b8a6", // teal-500
icon: "HeartPulse",
subcategories: ["Medical", "Dental", "Pharmacy", "Insurance"],
},
{
id: "education",
name: "Education",
type: "EXPENSE",
color: "#6366f1", // indigo-500
icon: "GraduationCap",
subcategories: ["Tuition", "Books", "Courses"],
},
{
id: "personal",
name: "Personal Care",
type: "EXPENSE",
color: "#d946ef", // fuchsia-500
icon: "Smile",
subcategories: ["Haircut", "Gym", "Beauty"],
},
{
id: "travel",
name: "Travel",
type: "EXPENSE",
color: "#0ea5e9", // sky-500
icon: "Plane",
},
{
id: "insurance",
name: "Insurance",
type: "EXPENSE",
color: "#64748b", // slate-500
icon: "Shield",
subcategories: ["Life", "Home", "Vehicle"],
},
{
id: "gifts",
name: "Gifts & Donations",
type: "EXPENSE",
color: "#f472b6", // pink-400
icon: "Gift",
},
{
id: "bills",
name: "Bills & Fees",
type: "EXPENSE",
color: "#fb7185", // rose-400
icon: "Receipt",
subcategories: ["Bank Fees", "Late Fees", "Service Charges"],
},
{
id: "other-expense",
name: "Other Expenses",
type: "EXPENSE",
color: "#94a3b8", // slate-400
icon: "MoreHorizontal",
},
];
export const categoryColors = defaultCategories.reduce((acc, category) => {
acc[category.id] = category.color;
return acc;
}, {});
================================================
FILE: data/landing.js
================================================
import {
BarChart3,
Receipt,
PieChart,
CreditCard,
Globe,
Zap,
} from "lucide-react";
// Stats Data
export const statsData = [
{
value: "50K+",
label: "Active Users",
},
{
value: "$2B+",
label: "Transactions Tracked",
},
{
value: "99.9%",
label: "Uptime",
},
{
value: "4.9/5",
label: "User Rating",
},
];
// Features Data
export const featuresData = [
{
icon: ,
title: "Advanced Analytics",
description:
"Get detailed insights into your spending patterns with AI-powered analytics",
},
{
icon: ,
title: "Smart Receipt Scanner",
description:
"Extract data automatically from receipts using advanced AI technology",
},
{
icon: ,
title: "Budget Planning",
description: "Create and manage budgets with intelligent recommendations",
},
{
icon: ,
title: "Multi-Account Support",
description: "Manage multiple accounts and credit cards in one place",
},
{
icon: ,
title: "Multi-Currency",
description: "Support for multiple currencies with real-time conversion",
},
{
icon: ,
title: "Automated Insights",
description: "Get automated financial insights and recommendations",
},
];
// How It Works Data
export const howItWorksData = [
{
icon: ,
title: "1. Create Your Account",
description:
"Get started in minutes with our simple and secure sign-up process",
},
{
icon: ,
title: "2. Track Your Spending",
description:
"Automatically categorize and track your transactions in real-time",
},
{
icon: ,
title: "3. Get Insights",
description:
"Receive AI-powered insights and recommendations to optimize your finances",
},
];
// Testimonials Data
export const testimonialsData = [
{
name: "Sarah Johnson",
role: "Small Business Owner",
image: "https://randomuser.me/api/portraits/women/75.jpg",
quote:
"Welth has transformed how I manage my business finances. The AI insights have helped me identify cost-saving opportunities I never knew existed.",
},
{
name: "Michael Chen",
role: "Freelancer",
image: "https://randomuser.me/api/portraits/men/75.jpg",
quote:
"The receipt scanning feature saves me hours each month. Now I can focus on my work instead of manual data entry and expense tracking.",
},
{
name: "Emily Rodriguez",
role: "Financial Advisor",
image: "https://randomuser.me/api/portraits/women/74.jpg",
quote:
"I recommend Welth to all my clients. The multi-currency support and detailed analytics make it perfect for international investors.",
},
];
================================================
FILE: emails/template.jsx
================================================
import {
Body,
Container,
Head,
Heading,
Html,
Preview,
Section,
Text,
} from "@react-email/components";
// Dummy data for preview
const PREVIEW_DATA = {
monthlyReport: {
userName: "John Doe",
type: "monthly-report",
data: {
month: "December",
stats: {
totalIncome: 5000,
totalExpenses: 3500,
byCategory: {
housing: 1500,
groceries: 600,
transportation: 400,
entertainment: 300,
utilities: 700,
},
},
insights: [
"Your housing expenses are 43% of your total spending - consider reviewing your housing costs.",
"Great job keeping entertainment expenses under control this month!",
"Setting up automatic savings could help you save 20% more of your income.",
],
},
},
budgetAlert: {
userName: "John Doe",
type: "budget-alert",
data: {
percentageUsed: 85,
budgetAmount: 4000,
totalExpenses: 3400,
},
},
};
export default function EmailTemplate({
userName = "",
type = "monthly-report",
data = {},
}) {
if (type === "monthly-report") {
return (
|
Your Monthly Financial Report
Monthly Financial Report
Hello {userName},
Here’s your financial summary for {data?.month}:
{/* Main Stats */}
Total Income
${data?.stats.totalIncome}
Total Expenses
${data?.stats.totalExpenses}
Net
${data?.stats.totalIncome - data?.stats.totalExpenses}
{/* Category Breakdown */}
{data?.stats?.byCategory && (
Expenses by Category
{Object.entries(data?.stats.byCategory).map(
([category, amount]) => (
{category}
${amount}
)
)}
)}
{/* AI Insights */}
{data?.insights && (
Welth Insights
{data.insights.map((insight, index) => (
• {insight}
))}
)}
Thank you for using Welth. Keep tracking your finances for better
financial health!
);
}
if (type === "budget-alert") {
return (