/* eslint-disable @typescript-eslint/no-explicit-any */ import { useState } from "react"; import classNames from "classnames"; import { toast } from "react-toastify"; import { FaPowerOff } from "react-icons/fa6"; import SpaceIcon from "@/assets/space.svg"; import Loading from "../loading/loading"; import Login from "../login/login"; import { Auth } from "./../../../utils/types"; import LoadButton from "../load-button/load-button"; const MsgToast = ({ url }: { url: string }) => (
Your space is live!
); function DeployButton({ html, error = false, auth, setHtml, prompts, }: { html: string; error: boolean; auth?: Auth; setHtml: (html: string) => void; prompts: string[]; }) { const [open, setOpen] = useState(false); const [loading, setLoading] = useState(false); const [path, setPath] = useState(undefined); const [config, setConfig] = useState({ title: "", }); const createSpace = async () => { setLoading(true); try { const request = await fetch("/api/deploy", { method: "POST", body: JSON.stringify({ title: config.title, path, html, prompts, }), headers: { "Content-Type": "application/json", }, }); const response = await request.json(); if (response.ok) { toast.success( , { autoClose: 10000, } ); setPath(response.path); } else { toast.error(response.message); } } catch (err: any) { toast.error(err.message); } finally { setLoading(false); setOpen(false); } }; return (
{auth && (auth.isLocalUse ? ( <>
Local Usage
) : ( <>

Connected as {auth.preferred_username}

))}
setOpen(false)} >
{!auth ? (

Host this project for free and share it with your friends.

) : ( <>
Space Icon Space Configure Deployment

{path ? ( Your space is live at{" "} huggingface.co/{path} . You can update it by deploying again. ) : ( "Deploy your project to a space on the Hub. Spaces are a way to share your project with the world." )}

{!path && ( )} {error && (

Your code has errors. Fix them before deploying.

)}
)}
); } export default DeployButton;