import { Rocket } from "lucide-react"; import Image from "next/image"; import Loading from "@/components/loading"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import SpaceIcon from "@/assets/space.svg"; import { Page } from "@/types"; import { api } from "@/lib/api"; import { toast } from "sonner"; import { useState } from "react"; import { useRouter } from "next/navigation"; export const DeployButtonContent = ({ pages, options, prompts, }: { pages: Page[]; options?: { title?: string; description?: string; }; prompts: string[]; }) => { const router = useRouter(); const [loading, setLoading] = useState(false); const [config, setConfig] = useState({ title: "", }); const createSpace = async () => { if (!config.title) { toast.error("Please enter a title for your space."); return; } setLoading(true); try { const res = await api.post("/me/projects", { title: config.title, pages, prompts, }); if (res.data.ok) { router.push(`/projects/${res.data.path}?deploy=true`); } else { toast.error(res?.data?.error || "Failed to create space"); } // eslint-disable-next-line @typescript-eslint/no-explicit-any } catch (err: any) { toast.error(err.response?.data?.error || err.message); } finally { setLoading(false); } }; return ( <>
🚀
Space Icon
👻

Publish as Space!

{options?.description ?? "Save and Publish your project to a Space on the Hub. Spaces are a way to share your project with the world."}

Choose a title for your space:

setConfig({ ...config, title: e.target.value })} className="!bg-white !border-neutral-300 !text-neutral-800 !placeholder:text-neutral-400 selection:!bg-blue-100" />

Then, let's publish it!

); };