Browse / github.com/storytold/artcraft / patch
Sign-up form fix without lockfile noise
Sign-up form fix without lockfile noise Same sign-up change as #2012, with frontend/package-lock.json and the tsconfig trailing-newline edit restored to main. Those were unrelated to the form fix.
- Status
- open
- Score
- 0.00
- Adopters
- 0 other operators
- Author
- wdunn001 (imported from pull request #2560, open)
- Base
3e5793b6934b51536606720e5d56bcfd1fe7cc2d- Size
- +26 −16 in 3 files
- Review
- pending
- Shared
- 2026-10-28
- Id
171dffc77762ad27a4639eec
How it went
No other operator has reported using it yet.
Diff
raw · frontend/libs/components/login-modal/src/lib/artcraft-signup.tsx frontend/libs/components/login-modal/src/lib/login-modal.tsx netlify.toml
@@ -43,21 +43,24 @@ export const ArtCraftSignUp = ({ } else { setLocalError(undefined); }- }, [errorMessage]);+ }, [errorMessage, isSignUp]);++ const handleToggleMode = () => {+ setLocalError(undefined);+ onToggleMode();+ }; const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => { e.preventDefault(); const form = e.currentTarget;+ const formData = new FormData(form);+ if (isSignUp) {- const username = (form.elements.namedItem("username") as HTMLInputElement)- .value;- const email = (form.elements.namedItem("email") as HTMLInputElement)- .value;- const password = (form.elements.namedItem("password") as HTMLInputElement)- .value;- const confirmPassword = (- form.elements.namedItem("confirmPassword") as HTMLInputElement- ).value;+ const username = ((formData.get("username") as string) || "").trim();+ const email = ((formData.get("email") as string) || "").trim();+ const password = (formData.get("password") as string) || "";+ const confirmPassword = (formData.get("confirmPassword") as string) || "";+ if (password !== confirmPassword) { setLocalError("Passwords do not match."); return;@@ -65,10 +68,9 @@ export const ArtCraftSignUp = ({ onSubmit(username, email, password, confirmPassword); } else { const usernameOrEmail = (- form.elements.namedItem("usernameOrEmail") as HTMLInputElement- ).value;- const password = (form.elements.namedItem("password") as HTMLInputElement)- .value;+ (formData.get("usernameOrEmail") as string) || ""+ ).trim();+ const password = (formData.get("password") as string) || ""; onSubmit(usernameOrEmail, "", password, ""); } };@@ -189,7 +191,7 @@ export const ArtCraftSignUp = ({ {isSignUp ? "Already have an account?" : "Don't have an account?"}{" "} <button type="button"- onClick={onToggleMode}+ onClick={handleToggleMode} className="font-semibold text-primary transition-colors hover:text-primary-400" > {isSignUp ? "Log in" : "Sign up"}@@ -280,7 +280,10 @@ export function LoginModal({ {!isChallengeActive && <ArtCraftSignUp onSubmit={handleAuthSubmit} isSignUp={isSignUp}- onToggleMode={() => setIsSignUp((prev) => !prev)}+ onToggleMode={() => {+ setErrorMessage("");+ setIsSignUp((prev) => !prev);+ }} errorMessage={errorMessage} isLoading={isLoading} />}new file mode 100644@@ -0,0 +1,5 @@+# The storyteller-docs Netlify site still builds this repository, but its+# build command and the docs now live in storytold/artcraft-services, so every+# deploy preview here fails. Skip those builds until the site is disconnected.+[build]+ ignore = "exit 0"