"use client" import { useState } from "react" import { dmSans125ClassName, dmSansClassName } from "@/lib/fonts" import { Dialog, DialogContent } from "@repo/ui/components/dialog" import { cn } from "@lib/utils" import * as DialogPrimitive from "@radix-ui/react-dialog" import { XIcon, Loader2 } from "lucide-react" import { Button } from "@ui/components/button" import { useProjectMutations } from "@/hooks/use-project-mutations" import { Popover, PopoverContent, PopoverTrigger } from "@ui/components/popover" import { analytics } from "@/lib/analytics" const EMOJI_LIST = [ "๐Ÿ“", "๐Ÿ“‚", "๐Ÿ—‚๏ธ", "๐Ÿ“š", "๐Ÿ“–", "๐Ÿ“", "โœ๏ธ", "๐Ÿ“Œ", "๐ŸŽฏ", "๐Ÿš€", "๐Ÿ’ก", "โญ", "๐Ÿ”ฅ", "๐Ÿ’Ž", "๐ŸŽจ", "๐ŸŽต", "๐Ÿ ", "๐Ÿ’ผ", "๐Ÿ› ๏ธ", "โš™๏ธ", "๐Ÿ”ง", "๐Ÿ“Š", "๐Ÿ“ˆ", "๐Ÿ’ฐ", "๐ŸŒŸ", "โœจ", "๐ŸŒˆ", "๐ŸŒธ", "๐ŸŒบ", "๐Ÿ€", "๐ŸŒฟ", "๐ŸŒด", "๐Ÿถ", "๐Ÿฑ", "๐ŸฆŠ", "๐Ÿฆ", "๐Ÿผ", "๐Ÿจ", "๐Ÿฆ„", "๐Ÿ", "โค๏ธ", "๐Ÿ’œ", "๐Ÿ’™", "๐Ÿ’š", "๐Ÿ’›", "๐Ÿงก", "๐Ÿ–ค", "๐Ÿค", ] export function AddSpaceModal({ isOpen, onClose, }: { isOpen: boolean onClose: () => void }) { const [spaceName, setSpaceName] = useState("") const [emoji, setEmoji] = useState("๐Ÿ“") const [isEmojiOpen, setIsEmojiOpen] = useState(false) const { createProjectMutation } = useProjectMutations() const handleClose = () => { onClose() setSpaceName("") setEmoji("๐Ÿ“") } const handleCreate = () => { const trimmedName = spaceName.trim() if (!trimmedName) return createProjectMutation.mutate( { name: trimmedName, emoji: emoji || undefined }, { onSuccess: () => { analytics.spaceCreated() handleClose() }, }, ) } const handleKeyDown = (e: React.KeyboardEvent) => { if ( e.key === "Enter" && spaceName.trim() && !createProjectMutation.isPending ) { e.preventDefault() handleCreate() } } const handleEmojiSelect = (selectedEmoji: string) => { setEmoji(selectedEmoji) setIsEmojiOpen(false) } return ( !open && handleClose()}>

Create new space

Create spaces to organize your memories and documents and create a context rich environment

Close
{EMOJI_LIST.map((e) => ( ))}
setSpaceName(e.target.value)} onKeyDown={handleKeyDown} placeholder="Space name" className={cn( "flex-1 bg-[#14161A] border border-[rgba(82,89,102,0.2)] px-4 py-3 rounded-[12px] text-[#fafafa] text-[14px] placeholder:text-[#737373] focus:outline-none focus:ring-1 focus:ring-[rgba(115,115,115,0.3)]", dmSansClassName(), )} style={{ boxShadow: "0px 1px 2px 0px rgba(0,43,87,0.1), inset 0px 0px 0px 1px rgba(43,49,67,0.08), inset 0px 1px 1px 0px rgba(0,0,0,0.08), inset 0px 2px 4px 0px rgba(0,0,0,0.02)", }} autoFocus />
) }