diff --git a/client/components/onboarding/Interests.tsx b/client/components/onboarding/Interests.tsx new file mode 100644 index 00000000..08e96553 --- /dev/null +++ b/client/components/onboarding/Interests.tsx @@ -0,0 +1,218 @@ +import { OnboardingData } from "@/pages/Onboarding"; +import { Button } from "@/components/ui/button"; +import { Label } from "@/components/ui/label"; +import { ArrowLeft, ArrowRight } from "lucide-react"; + +interface InterestsProps { + data: OnboardingData; + updateData: (data: Partial) => void; + nextStep: () => void; + prevStep: () => void; +} + +const goalOptions = { + 'game-developer': [ + 'Learn new game development technologies', + 'Get mentorship from industry experts', + 'Collaborate on innovative projects', + 'Build a portfolio of game projects', + 'Join a development team', + 'Start freelancing in game development', + 'Improve programming skills', + 'Learn game design principles' + ], + 'client': [ + 'Develop a custom game or application', + 'Get technical consulting for my project', + 'Find reliable development partners', + 'Scale my existing game/platform', + 'Implement new features or technologies', + 'Optimize performance and user experience', + 'Launch a new digital product', + 'Build a development team' + ], + 'member': [ + 'Stay updated on industry trends', + 'Network with tech professionals', + 'Access research and insights', + 'Participate in innovation projects', + 'Share knowledge with the community', + 'Explore new technologies', + 'Contribute to open source projects', + 'Attend workshops and events' + ], + 'customer': [ + 'Play cutting-edge games', + 'Access premium development tools', + 'Get early access to new releases', + 'Join beta testing programs', + 'Connect with other gamers', + 'Learn about game development', + 'Provide feedback on products', + 'Explore interactive experiences' + ] +}; + +const serviceOptions = { + 'game-developer': [ + 'Mentorship Programs', + 'Development Tools Access', + 'Collaborative Projects', + 'Technical Workshops', + 'Code Review Services', + 'Career Guidance', + 'Networking Events', + 'Skill Assessments' + ], + 'client': [ + 'Custom Game Development', + 'Technical Consulting', + 'Project Management', + 'Quality Assurance', + 'Performance Optimization', + 'Team Augmentation', + 'Technology Integration', + 'Ongoing Support' + ], + 'member': [ + 'Research Access', + 'Community Forums', + 'Expert Insights', + 'Innovation Labs', + 'Knowledge Base', + 'Networking Platform', + 'Event Participation', + 'Content Library' + ], + 'customer': [ + 'Premium Games', + 'Development Tools', + 'Beta Access', + 'Community Features', + 'Customer Support', + 'Regular Updates', + 'Educational Content', + 'User Forums' + ] +}; + +export default function Interests({ data, updateData, nextStep, prevStep }: InterestsProps) { + const goals = data.userType ? goalOptions[data.userType] || [] : []; + const services = data.userType ? serviceOptions[data.userType] || [] : []; + + const handleGoalToggle = (goal: string) => { + const currentGoals = data.interests.primaryGoals; + const updatedGoals = currentGoals.includes(goal) + ? currentGoals.filter(g => g !== goal) + : [...currentGoals, goal]; + + updateData({ + interests: { + ...data.interests, + primaryGoals: updatedGoals + } + }); + }; + + const handleServiceToggle = (service: string) => { + const currentServices = data.interests.preferredServices; + const updatedServices = currentServices.includes(service) + ? currentServices.filter(s => s !== service) + : [...currentServices, service]; + + updateData({ + interests: { + ...data.interests, + preferredServices: updatedServices + } + }); + }; + + const isValid = data.interests.primaryGoals.length > 0 && data.interests.preferredServices.length > 0; + + return ( +
+
+

+ Tell us about your goals and interests so we can personalize your experience +

+
+ +
+ {/* Primary Goals */} +
+ +

Select all that apply

+
+ {goals.map((goal) => { + const isSelected = data.interests.primaryGoals.includes(goal); + return ( + + ); + })} +
+
+ + {/* Preferred Services */} +
+ +

Select all that interest you

+
+ {services.map((service) => { + const isSelected = data.interests.preferredServices.includes(service); + return ( + + ); + })} +
+
+
+ +
+ + + +
+ +
+

+ You can always update your preferences later in your account settings +

+
+
+ ); +}