From 7771b7bc7251b63ec8c6572d53142b1bae2e269b Mon Sep 17 00:00:00 2001 From: Prakhar Gupta Date: Sat, 11 Apr 2026 00:56:16 +0530 Subject: [PATCH] feat(settings): add Select All and Clear buttons for languages and topics --- frontend/app/(auth)/settings/page.tsx | 78 ++++++++++++++++++++------- 1 file changed, 60 insertions(+), 18 deletions(-) diff --git a/frontend/app/(auth)/settings/page.tsx b/frontend/app/(auth)/settings/page.tsx index 7467d5b..143afcf 100644 --- a/frontend/app/(auth)/settings/page.tsx +++ b/frontend/app/(auth)/settings/page.tsx @@ -2,7 +2,7 @@ import { useEffect, useState } from "react"; import { useAuth } from "@/contexts/auth-context"; -import { getPreferences, savePreferences, UserPreferences } from "@/lib/api/preferences"; +import { getPreferences, savePreferences } from "@/lib/api/preferences"; import { useRouter } from "next/navigation"; import { Loader2, Check, X, Save } from "lucide-react"; import PageWrapper from "@/components/ui/page-wrapper"; @@ -24,18 +24,15 @@ export default function SettingsPage() { const { username, isLoading: authLoading } = useAuth(); const router = useRouter(); - // Form state const [experienceLevel, setExperienceLevel] = useState("Beginner"); const [selectedLanguages, setSelectedLanguages] = useState([]); const [selectedTopics, setSelectedTopics] = useState([]); - // UI state const [loading, setLoading] = useState(true); const [saving, setSaving] = useState(false); const [saved, setSaved] = useState(false); const [error, setError] = useState(null); - // Load preferences on mount useEffect(() => { const loadPreferences = async () => { try { @@ -75,6 +72,26 @@ export default function SettingsPage() { setSaved(false); }; + const handleSelectAllLanguages = () => { + setSelectedLanguages(AVAILABLE_LANGUAGES); + setSaved(false); + }; + + const handleClearLanguages = () => { + setSelectedLanguages([]); + setSaved(false); + }; + + const handleSelectAllTopics = () => { + setSelectedTopics(AVAILABLE_TOPICS); + setSaved(false); + }; + + const handleClearTopics = () => { + setSelectedTopics([]); + setSaved(false); + }; + const handleSave = async () => { try { setSaving(true); @@ -112,7 +129,6 @@ export default function SettingsPage() { return (
- {/* Header */}

Settings @@ -122,7 +138,6 @@ export default function SettingsPage() {

- {/* Success/Error Messages */} {saved && (
@@ -137,7 +152,6 @@ export default function SettingsPage() {
)} - {/* Experience Level */}

Experience Level @@ -165,11 +179,26 @@ export default function SettingsPage() {

- {/* Programming Languages */}
-

- Programming Languages -

+
+

+ Programming Languages +

+
+ + +
+

Select the languages you're interested in or want to learn

@@ -190,11 +219,26 @@ export default function SettingsPage() {
- {/* Topics & Domains */}
-

- Topics & Domains -

+
+

+ Topics & Domains +

+
+ + +
+

Choose areas of interest for more relevant project suggestions

@@ -215,7 +259,6 @@ export default function SettingsPage() {
- {/* Action Buttons */}
- {/* Helpful tip */}

💡 Tip: Your preferences help us find repositories that match your interests. @@ -253,4 +295,4 @@ export default function SettingsPage() {

); -} +} \ No newline at end of file