'use client'; import { useMemo, useState } from 'react'; import { useAuth } from '@/lib/hooks/useAuth'; import { canCreateOrganizationFromCurrentOrg } from '@/components/shared/permissions'; import { Building2, Mail } from 'lucide-react'; import type { Organization } from '@/types/organization'; import { organizationTypeIcon } from '@/components/shared/organizationTypeIcon'; import { Input } from '@/components/ui/shared/Input'; import { Button } from '@/components/ui/shared/Button'; export function OrganizationSelectorContent() { const { organizations, currentOrganization, selectOrganization, createOrganization, isLoading, error, clearError, } = useAuth(); const canCreateOrganization = useMemo( () => canCreateOrganizationFromCurrentOrg(currentOrganization), [currentOrganization], ); const [isCreateOpen, setIsCreateOpen] = useState(false); const [organizationName, setOrganizationName] = useState(''); const [organizationEmail, setOrganizationEmail] = useState(''); const [organizationType, setOrganizationType] = useState<'CLINIC' | 'LAB'>('CLINIC'); const renderOrgTypeIcon = (type: Organization['type']) => { const Icon = organizationTypeIcon(type); return ; }; const handleCreateOrganization = async () => { try { clearError(); const createdId = await createOrganization( organizationName.trim(), organizationEmail.trim(), organizationType, ); setOrganizationName(''); setOrganizationEmail(''); setOrganizationType('CLINIC'); setIsCreateOpen(false); await selectOrganization(createdId); } catch { // handled by auth context } }; if (isLoading) { return

Loading...

; } return (

Organizations

{canCreateOrganization ? 'Select an organization to continue, or create a new one.' : 'Select an organization to continue.'}

{canCreateOrganization && ( )}
{canCreateOrganization && isCreateOpen && (
setOrganizationName(event.target.value)} placeholder="Sunshine Dental Clinic" icon={} /> setOrganizationEmail(event.target.value)} placeholder="contact@sunshineclinic.com" type="email" icon={} />
{error && (

{error}

)}
)} {!organizations.length ? (

{canCreateOrganization ? 'No organizations found. Create your first one to continue.' : 'No organizations found. Ask an organization owner to invite you.'}

) : (
{organizations.map((org) => ( ))}
)}
); }