import React, { useEffect, useRef, useState } from "react"; import illustration from "@/media/illustrations/create-workspace.png"; import paths from "@/utils/paths"; import showToast from "@/utils/toast"; import { useNavigate } from "react-router-dom"; import Workspace from "@/models/workspace"; import { useTranslation } from "react-i18next"; export default function CreateWorkspace({ setHeader, setForwardBtn, setBackBtn, }) { const { t } = useTranslation(); const [workspaceName, setWorkspaceName] = useState(""); const navigate = useNavigate(); const createWorkspaceRef = useRef(); const TITLE = t("onboarding.workspace.title"); const DESCRIPTION = t("onboarding.workspace.description"); useEffect(() => { setHeader({ title: TITLE, description: DESCRIPTION }); setBackBtn({ showing: false, disabled: false, onClick: handleBack }); }, []); useEffect(() => { if (workspaceName.length > 0) { setForwardBtn({ showing: true, disabled: false, onClick: handleForward }); } else { setForwardBtn({ showing: true, disabled: true, onClick: handleForward }); } }, [workspaceName]); const handleCreate = async (e) => { e.preventDefault(); const form = new FormData(e.target); const { workspace, error } = await Workspace.new({ name: form.get("name"), onboardingComplete: true, }); if (!!workspace) { showToast( "Workspace created successfully! Taking you to home...", "success" ); await new Promise((resolve) => setTimeout(resolve, 1000)); navigate(paths.home()); } else { showToast(`Failed to create workspace: ${error}`, "error"); } }; function handleForward() { createWorkspaceRef.current.click(); } function handleBack() { navigate(paths.onboarding.survey()); } return ( <form onSubmit={handleCreate} className="w-full flex items-center justify-center flex-col gap-y-2" > <img src={illustration} alt="Create workspace" /> <div className="flex flex-col gap-y-4 w-full max-w-[600px]"> {" "} <div className="w-full mt-4"> <label htmlFor="name" className="block mb-3 text-sm font-medium text-white" > {t("common.workspaces-name")} </label> <input name="name" type="text" className="border-none bg-theme-settings-input-bg text-white focus:outline-primary-button active:outline-primary-button placeholder:text-theme-settings-input-placeholder outline-none text-sm rounded-lg block w-full p-2.5" placeholder="My Workspace" required={true} autoComplete="off" onChange={(e) => setWorkspaceName(e.target.value)} /> </div> </div> <button type="submit" ref={createWorkspaceRef} hidden aria-hidden="true" ></button> </form> ); }