"use client"; import { useState } from "react"; import { toast } from "sonner"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { Button } from "@/components/ui/button"; import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription, DialogFooter, } from "@/components/ui/dialog"; import { useWorkspaceStore } from "@/features/workspace"; export function CreateWorkspaceModal({ onClose }: { onClose: () => void }) { const [name, setName] = useState(""); const [slug, setSlug] = useState(""); const [creating, setCreating] = useState(false); const handleNameChange = (value: string) => { setName(value); setSlug( value .toLowerCase() .replace(/[^a-z0-9]+/g, "-") .replace(/^-|-$/g, ""), ); }; const handleCreate = async () => { if (!name.trim() || !slug.trim()) return; setCreating(true); try { const { createWorkspace, switchWorkspace } = useWorkspaceStore.getState(); const ws = await createWorkspace({ name: name.trim(), slug: slug.trim(), }); onClose(); await switchWorkspace(ws.id); } catch { toast.error("Failed to create workspace"); } finally { setCreating(false); } }; return ( { if (!v) onClose(); }}> Create workspace Create a new workspace for your team.
handleNameChange(e.target.value)} placeholder="My Workspace" className="mt-1" />
setSlug(e.target.value)} placeholder="my-workspace" className="mt-1" />
); }