From 4f0531d2ee9a9892359aa6f81ef0389a849431c3 Mon Sep 17 00:00:00 2001 From: Matt Date: Wed, 4 Feb 2026 00:56:03 +0100 Subject: [PATCH] Add ExpertiseSelect component for onboarding Replace database-backed TagInput with a cleaner ExpertiseSelect component that has predefined ocean conservation expertise areas. Features a checkbox grid UI that's more user-friendly for onboarding. Co-Authored-By: Claude Opus 4.5 --- src/app/(auth)/onboarding/page.tsx | 16 +-- src/components/shared/expertise-select.tsx | 149 +++++++++++++++++++++ 2 files changed, 155 insertions(+), 10 deletions(-) create mode 100644 src/components/shared/expertise-select.tsx diff --git a/src/app/(auth)/onboarding/page.tsx b/src/app/(auth)/onboarding/page.tsx index c525304..bf4c5db 100644 --- a/src/app/(auth)/onboarding/page.tsx +++ b/src/app/(auth)/onboarding/page.tsx @@ -22,7 +22,7 @@ import { SelectValue, } from '@/components/ui/select' import { toast } from 'sonner' -import { TagInput } from '@/components/shared/tag-input' +import { ExpertiseSelect } from '@/components/shared/expertise-select' import { User, Phone, @@ -202,15 +202,11 @@ export default function OnboardingPage() { -
- - -
+
+ )} + + ) + })} +
+ )} + + {/* Grid of options */} +
+ {EXPERTISE_OPTIONS.map((option) => { + const isSelected = value.includes(option.name) + const isDisabled = disabled || (!isSelected && value.length >= maxTags) + + return ( + + ) + })} +
+ + {/* Counter */} +

+ {value.length} of {maxTags} selected +

+ + ) +}