diff --git a/client/components/onboarding/FollowArms.tsx b/client/components/onboarding/FollowArms.tsx new file mode 100644 index 00000000..0d464528 --- /dev/null +++ b/client/components/onboarding/FollowArms.tsx @@ -0,0 +1,190 @@ +import { useState } from "react"; +import { Button } from "@/components/ui/button"; +import { Card, CardContent } from "@/components/ui/card"; +import { Checkbox } from "@/components/ui/checkbox"; +import { Label } from "@/components/ui/label"; +import { + Zap, + Gamepad2, + Briefcase, + BookOpen, + Network, + Sparkles, + Shield, +} from "lucide-react"; + +interface FollowArmsProps { + selectedArms: string[]; + onUpdate: (arms: string[]) => void; + nextStep: () => void; + prevStep: () => void; +} + +const ARMS = [ + { + id: "labs", + name: "AeThex Labs", + icon: Zap, + color: "text-yellow-400", + bgColor: "bg-yellow-500/10", + borderColor: "border-yellow-500/30", + description: "Research, innovation, and experimental tech", + }, + { + id: "gameforge", + name: "GameForge", + icon: Gamepad2, + color: "text-green-400", + bgColor: "bg-green-500/10", + borderColor: "border-green-500/30", + description: "Game development and interactive experiences", + }, + { + id: "corp", + name: "AeThex Corp", + icon: Briefcase, + color: "text-blue-400", + bgColor: "bg-blue-500/10", + borderColor: "border-blue-500/30", + description: "Enterprise consulting and professional services", + }, + { + id: "foundation", + name: "AeThex Foundation", + icon: BookOpen, + color: "text-red-400", + bgColor: "bg-red-500/10", + borderColor: "border-red-500/30", + description: "Education, mentorship, and community building", + }, + { + id: "devlink", + name: "Dev-Link", + icon: Network, + color: "text-cyan-400", + bgColor: "bg-cyan-500/10", + borderColor: "border-cyan-500/30", + description: "Professional networking and opportunities", + }, + { + id: "nexus", + name: "NEXUS", + icon: Sparkles, + color: "text-purple-400", + bgColor: "bg-purple-500/10", + borderColor: "border-purple-500/30", + description: "Creative marketplace and artist collaboration", + }, +]; + +export default function FollowArms({ + selectedArms, + onUpdate, + nextStep, + prevStep, +}: FollowArmsProps) { + const [localSelection, setLocalSelection] = useState(selectedArms); + + const handleToggle = (armId: string) => { + setLocalSelection((prev) => + prev.includes(armId) ? prev.filter((a) => a !== armId) : [...prev, armId] + ); + }; + + const handleContinue = () => { + if (localSelection.length === 0) { + alert("Please select at least one arm to follow"); + return; + } + onUpdate(localSelection); + nextStep(); + }; + + return ( +
+ Choose which AeThex arms you want to follow. You can change this + anytime in your settings. Select at least one to continue. +
++ {arm.description} +
++ You're following {localSelection.length} arm + {localSelection.length !== 1 ? "s" : ""} + {localSelection.length > 0 && ":"} + + {localSelection + .map( + (id) => + ARMS.find((a) => a.id === id)?.name || id + ) + .join(", ")} + +
+