/* eslint-disable @typescript-eslint/no-explicit-any */ import { useState } from "react"; import classNames from "classnames"; import { toast } from "react-toastify"; import SpaceIcon from "@/assets/space.svg"; import Loading from "../loading/loading"; import Login from "../login/login"; import { Auth } from "../../utils/types"; function DeployButton({ html, error = false, auth, }: { html: string; error: boolean; auth?: Auth; }) { 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, }), headers: { "Content-Type": "application/json", }, }); const response = await request.json(); if (response.ok) { toast.success( path ? `Space updated successfully!` : `Space created successfully!` ); setPath(response.path); } else { toast.error(response.message); } } catch (err: any) { toast.error(err.message); } finally { setLoading(false); setOpen(false); } }; return (
{auth && (

Connected as{" "} {auth.preferred_username}

)}
setOpen(false)} >
{!auth ? ( ) : ( <>
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;