Spaces:
Sleeping
Sleeping
| import { useState } from "react"; | |
| import classNames from "classnames"; | |
| const downloadFile = (filename: string, content: string) => { | |
| const blob = new Blob([content], { type: "text/html" }); | |
| const url = URL.createObjectURL(blob); | |
| const a = document.createElement("a"); | |
| a.href = url; | |
| a.download = filename; | |
| a.click(); | |
| URL.revokeObjectURL(url); | |
| }; | |
| function DeployButton({ | |
| html, | |
| error: _error, // ✅ Renamed to "_error" to avoid unused warning | |
| }: { | |
| html: string; | |
| error?: boolean; | |
| }) { | |
| const [loading, setLoading] = useState(false); | |
| const handleDownload = () => { | |
| setLoading(true); | |
| setTimeout(() => { | |
| downloadFile("index.html", html); | |
| setLoading(false); | |
| }, 300); | |
| }; | |
| return ( | |
| <div className="relative flex items-center justify-end"> | |
| <button | |
| className={classNames( | |
| "relative cursor-pointer flex-none flex items-center justify-center rounded-md text-xs lg:text-sm font-semibold leading-5 lg:leading-6 py-2 px-6 hover:bg-pink-400 text-white bg-pink-500 shadow-sm dark:shadow-highlight/20 transition-all duration-100", | |
| { | |
| "opacity-50 cursor-not-allowed": loading, | |
| } | |
| )} | |
| onClick={handleDownload} | |
| disabled={loading} | |
| > | |
| {loading ? "Preparing..." : "Download Project"} | |
| </button> | |
| </div> | |
| ); | |
| } | |
| export default DeployButton; | |