import { useEffect, useState } from "react"; import { Button, Drawer, DrawerContent, DrawerDescription, DrawerTitle, Field, FieldLabel } from "lumen-ui-kit"; import { useWorkspace } from "../workspaces/WorkspaceProvider"; export function suggestWorkspaceSlug(value: string): string { return value.toLowerCase().trim().replace(/[^a-z0-9]+/g, "-").replace(/^-|-$/g, "").slice(0, 63); } export default function CreateWorkspaceDialog({ open, onClose }: { open: boolean; onClose: () => void }) { const { createWorkspace } = useWorkspace(); const [displayName, setDisplayName] = useState(""); const [slug, setSlug] = useState(""); const [description, setDescription] = useState(""); const [slugEdited, setSlugEdited] = useState(false); const [error, setError] = useState(null); const [saving, setSaving] = useState(false); useEffect(() => { if (!slugEdited) setSlug(suggestWorkspaceSlug(displayName)); }, [displayName, slugEdited]); useEffect(() => { if (!open) { setDisplayName(""); setSlug(""); setDescription(""); setSlugEdited(false); setError(null); } }, [open]); async function submit(event: React.FormEvent) { event.preventDefault(); setSaving(true); setError(null); try { await createWorkspace({ slug, display_name: displayName, description: description || null }); onClose(); } catch (reason) { setError(reason instanceof Error ? reason.message : "Unable to create workspace"); } finally { setSaving(false); } } return ( { if (!next) onClose(); }}> Create workspace Create an isolated brain workspace and stable API URL.
Display name setDisplayName(e.target.value)} /> Slug { setSlugEdited(true); setSlug(e.target.value); }} /> Description