'use client' import { useState } from 'react' import { useRouter } from 'next/navigation' import { createOrganization } from '@/lib/api/organization' import { useAuth } from '@/lib/auth/context' import { getAuthErrorMessage } from '@ciphera-net/ui' import { LoadingOverlay } from '@ciphera-net/ui' import { Button, Input } from '@ciphera-net/ui' export default function OnboardingPage() { const [name, setName] = useState('') const [slug, setSlug] = useState('') const [loading, setLoading] = useState(false) const [error, setError] = useState('') const router = useRouter() const { user } = useAuth() const handleSubmit = async (e: React.FormEvent) => { e.preventDefault() setLoading(true) setError('') try { await createOrganization(name, slug) // * Redirect to home, AuthContext will detect the new org and auto-switch router.push('/') } catch (err: unknown) { setError(getAuthErrorMessage(err) || (err as Error)?.message || 'Failed to create organization') } finally { setLoading(false) } } // * Auto-generate slug from name const handleNameChange = (e: React.ChangeEvent) => { const val = e.target.value setName(val) if (!slug || slug === name.toLowerCase().replace(/[^a-z0-9]/g, '-')) { setSlug(val.toLowerCase().replace(/[^a-z0-9]/g, '-')) } } if (loading) return return (

Welcome to Pulse

To get started, please create an organization for your team.

setSlug(e.target.value)} />

This will be used in your organization's URL.

{error && (
{error}
)}
) }