From 5fdd3236303f6b05434baf31aed6373490d89c45 Mon Sep 17 00:00:00 2001 From: jyswee Date: Thu, 23 Jul 2026 22:10:39 +0000 Subject: [PATCH] Seed: dashboard template (24 files) --- src/pages/Profile.tsx | 147 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 147 insertions(+) create mode 100644 src/pages/Profile.tsx diff --git a/src/pages/Profile.tsx b/src/pages/Profile.tsx new file mode 100644 index 0000000..08213cc --- /dev/null +++ b/src/pages/Profile.tsx @@ -0,0 +1,147 @@ +import { useState } from "react"; +import { Card, CardContent, CardHeader, CardTitle, CardDescription } from "@/components/ui/card"; +import { Badge } from "@/components/ui/badge"; +import { Input } from "@/components/ui/input"; +import { Button } from "@/components/ui/button"; +import { Label } from "@/components/ui/label"; +import { Textarea } from "@/components/ui/textarea"; +import { Separator } from "@/components/ui/separator"; +import { Avatar, AvatarFallback } from "@/components/ui/avatar"; +import { toast } from "sonner"; +import { + Upload, Camera, Save, Trash2, AlertTriangle, Mail, Phone, User, Check +} from "lucide-react"; +import Sidebar from "@/components/Sidebar"; +import Header from "@/components/Header"; + +export default function ProfilePage() { + const [name, setName] = useState("Sarah Mitchell"); + const [email, setEmail] = useState("sarah@metricflow.com"); + const [phone, setPhone] = useState("+1 (555) 234-5678"); + const [bio, setBio] = useState("Product lead with a passion for data-driven decisions. Building better analytics tools for modern teams."); + const [profileSaved, setProfileSaved] = useState(false); + + const handleProfileSave = (e: React.FormEvent) => { + e.preventDefault(); + setProfileSaved(true); + toast.success("Profile updated!"); + setTimeout(() => setProfileSaved(false), 3000); + }; + + return ( +
+ +
+
+
+
+

My Profile

+

Manage your personal information and preferences

+
+ + {/* ── Avatar Section ── */} + + +
+
+ + SM + + +
+
+

{name}

+

{email}

+
+ Admin + Active +
+
+
+ +
+
+
+
+ + {/* ── Profile Form ── */} + + + Personal Information + Update your personal details below + + +
+
+
+ + setName(e.target.value)} className="bg-slate-50" required /> +
+
+ + setEmail(e.target.value)} className="bg-slate-50" required /> +
+
+
+ + setPhone(e.target.value)} className="bg-slate-50" /> +
+
+ +