diff --git a/package-lock.json b/package-lock.json index 729f65d..1ebcdb3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,7 +8,6 @@ "name": "anchornet-frontend", "version": "0.9.0", "dependencies": { - "@rolldown/binding-win32-x64-msvc": "1.2.0", "next": "16.1.6", "react": "19.2.3", "react-dom": "19.2.3" @@ -29,6 +28,9 @@ "typescript": "^5", "vitest": "^2.1.9" }, + "engines": { + "node": ">=20" + }, "optionalDependencies": { "@rolldown/binding-win32-x64-msvc": "^1.2.0" } @@ -3574,7 +3576,6 @@ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=8" } @@ -4316,7 +4317,6 @@ "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=6" } @@ -7565,14 +7565,6 @@ "react": "^19.2.3" } }, - "node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "dev": true, - "license": "MIT", - "peer": true - }, "node_modules/redent": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", diff --git a/src/components/AnchorForm.test.tsx b/src/components/AnchorForm.test.tsx index 893bd13..a880c73 100644 --- a/src/components/AnchorForm.test.tsx +++ b/src/components/AnchorForm.test.tsx @@ -50,7 +50,18 @@ describe("AnchorForm", () => { it("disables the submit button while pending", () => { render( {}} pending />); - expect(screen.getByText("Register")).toBeDisabled(); + expect(screen.getByText("Registering…")).toBeDisabled(); + }); + + it("shows pending-state text and reverts when pending changes", () => { + const { rerender } = render( {}} pending={false} />); + expect(screen.getByText("Register")).toBeInTheDocument(); + rerender( {}} pending />); + expect(screen.getByText("Registering…")).toBeInTheDocument(); + expect(screen.getByText("Registering…")).toBeDisabled(); + rerender( {}} pending={false} />); + expect(screen.getByText("Register")).toBeInTheDocument(); + expect(screen.getByText("Register")).not.toBeDisabled(); }); it("clears field values, errors, and focuses the id field after reset", () => { diff --git a/src/components/AnchorForm.tsx b/src/components/AnchorForm.tsx index 5595653..bcb2172 100644 --- a/src/components/AnchorForm.tsx +++ b/src/components/AnchorForm.tsx @@ -116,7 +116,7 @@ export function AnchorForm({ disabled={pending} className="h-fit shrink-0 rounded-lg bg-emerald-600 px-4 py-2 text-sm font-medium text-white hover:bg-emerald-500 disabled:opacity-50" > - Register + {pending ? "Registering…" : "Register"}