diff --git a/nixserver/src/App.tsx b/nixserver/src/App.tsx
index eb0220b..f00f0e5 100644
--- a/nixserver/src/App.tsx
+++ b/nixserver/src/App.tsx
@@ -435,6 +435,25 @@ function ListAccounts({ onNav }: { onNav: (p: Page) => void }) {
)
}
+/* ── Reusable form field — defined at module level to avoid remount bug ───── */
+function FormField({ label, type = 'text', placeholder = '', value, onChange }: {
+ label: string; type?: string; placeholder?: string
+ value: string; onChange: (v: string) => void
+}) {
+ return (
+
+
+ onChange(e.target.value)}
+ placeholder={placeholder}
+ className="w-full bg-[#0f1520] border border-[#2a3044] text-white rounded px-3 py-2 text-sm placeholder-gray-600 focus:outline-none focus:border-orange-500/60"
+ />
+
+ )
+}
+
/* ── Create account form ─────────────────────────────────────────────────── */
function CreateAccount({ onNav }: { onNav: (p: Page) => void }) {
const [form, setForm] = useState({
@@ -442,7 +461,7 @@ function CreateAccount({ onNav }: { onNav: (p: Page) => void }) {
package_name: 'Default', disk_quota_mb: 10240, bandwidth_mb: 0,
})
const [loading, setLoading] = useState(false)
- const [error, setError] = useState('')
+ const [error, setError] = useState('')
const [success, setSuccess] = useState('')
const set = (k: string, v: string | number) => setForm(f => ({ ...f, [k]: v }))
@@ -465,16 +484,6 @@ function CreateAccount({ onNav }: { onNav: (p: Page) => void }) {
}
}
- const Field = ({ label, name, type = 'text', placeholder = '' }: { label: string; name: string; type?: string; placeholder?: string }) => (
-
-
- set(name, e.target.value)}
- placeholder={placeholder}
- className="w-full bg-[#0f1520] border border-[#2a3044] text-white rounded px-3 py-2 text-sm placeholder-gray-600 focus:outline-none focus:border-orange-500/60"
- />
-
- )
-
return (
Create Hosting Account
@@ -485,16 +494,16 @@ function CreateAccount({ onNav }: { onNav: (p: Page) => void }) {