diff --git a/client/components/onboarding/CreatorProfile.tsx b/client/components/onboarding/CreatorProfile.tsx new file mode 100644 index 00000000..7f8043a2 --- /dev/null +++ b/client/components/onboarding/CreatorProfile.tsx @@ -0,0 +1,248 @@ +import { Card } from "@/components/ui/card"; +import { Button } from "@/components/ui/button"; +import { Badge } from "@/components/ui/badge"; +import { Input } from "@/components/ui/input"; +import { useState, useMemo } from "react"; +import { ChevronRight, Zap, Users, Code } from "lucide-react"; + +interface CreatorProfileProps { + data: { + bio?: string; + skills: string[]; + primaryArm?: string; + }; + onChange: (data: any) => void; + onNext: () => void; + onPrev: () => void; + isTransitioning: boolean; +} + +const AVAILABLE_ARMS = [ + { id: "labs", name: "Labs", description: "R&D & Innovation", color: "from-yellow-500 to-orange-500", icon: Zap }, + { id: "gameforge", name: "GameForge", description: "Game Development", color: "from-green-500 to-emerald-500", icon: Code }, + { id: "corp", name: "Corp", description: "Enterprise Consulting", color: "from-blue-500 to-cyan-500", icon: Users }, + { id: "foundation", name: "Foundation", description: "Education & Open Source", color: "from-red-500 to-pink-500", icon: Users }, +]; + +const SKILL_SUGGESTIONS = [ + "Game Development", + "Web Development", + "Backend Development", + "Machine Learning", + "UI/UX Design", + "DevOps", + "Mobile Development", + "Data Science", + "Cloud Architecture", + "3D Modeling", + "Audio Engineering", + "Project Management", + "Community Building", + "Technical Writing", + "Open Source", +]; + +export default function CreatorProfile({ + data, + onChange, + onNext, + onPrev, + isTransitioning, +}: CreatorProfileProps) { + const [inputValue, setInputValue] = useState(""); + + const canProceed = useMemo(() => { + return data.primaryArm && data.skills.length > 0; + }, [data.primaryArm, data.skills.length]); + + const handleAddSkill = (skill: string) => { + if (!data.skills.includes(skill)) { + onChange({ + creatorProfile: { + ...data, + skills: [...data.skills, skill], + }, + }); + } + setInputValue(""); + }; + + const handleRemoveSkill = (skill: string) => { + onChange({ + creatorProfile: { + ...data, + skills: data.skills.filter((s) => s !== skill), + }, + }); + }; + + const handleSelectArm = (armId: string) => { + onChange({ + creatorProfile: { + ...data, + primaryArm: armId, + }, + }); + }; + + const handleBioChange = (bio: string) => { + onChange({ + creatorProfile: { + ...data, + bio, + }, + }); + }; + + return ( +
+ {/* Bio Section */} +
+
+ +