v0.11.1 various UI bug fixes

This commit is contained in:
2026-03-20 23:01:26 -04:00
parent 50e7adf246
commit 0a048271c6
21 changed files with 91 additions and 93 deletions

View File

@@ -55,7 +55,7 @@ function FieldGroup({ label, children }) {
function Field({ label, value, onChange, placeholder, type = 'text', hint, required }) {
return (
<FieldGroup label={label}>
<input type={type} value={value} onChange={e => onChange(e.target.value)}
<input type={type} value={value} onChange={e = autoComplete="new-password"> onChange(e.target.value)}
placeholder={placeholder} required={required}
autoComplete="new-password" autoCorrect="off" spellCheck={false}
className="input" style={{ fontSize: 13 }} />
@@ -230,7 +230,7 @@ function DeleteModal({ api, tenant, onClose, onDone }) {
Type <code style={{ background:'var(--background)', padding:'2px 6px', borderRadius:4 }}>{expected}</code> to confirm:
</p>
{error && <div style={{ color:'var(--error)', fontSize:13, marginBottom:10 }}>{error}</div>}
<input className="input" value={confirm} onChange={e => setConfirm(e.target.value)} placeholder={expected} style={{ marginBottom:16 }} autoComplete="new-password" />
<input className="input" value={confirm} onChange={e = autoComplete="new-password"> setConfirm(e.target.value)} placeholder={expected} style={{ marginBottom:16 }} autoComplete="new-password" />
<div style={{ display:'flex', justifyContent:'flex-end', gap:8 }}>
<button className="btn btn-secondary" onClick={onClose}>Cancel</button>
<button className="btn btn-danger" onClick={handle} disabled={confirm !== expected || deleting}>
@@ -323,7 +323,7 @@ function KeyEntry({ onSubmit }) {
<h2 style={{ fontSize:18, fontWeight:700, margin:'0 0 4px' }}>Control Panel</h2>
<p style={{ color:'var(--text-secondary)', fontSize:13, margin:'0 0 20px' }}>Enter your host admin key to continue.</p>
{error && <div style={{ padding:'8px 12px', background:'#fce8e6', color:'var(--error)', borderRadius:6, fontSize:13, marginBottom:14 }}>{error}</div>}
<input type="password" className="input" value={key} onChange={e => setKey(e.target.value)}
<input type="password" className="input" value={key} onChange={e = autoComplete="new-password"> setKey(e.target.value)}
onKeyDown={e => e.key === 'Enter' && handle()} placeholder="Host admin key" autoFocus
style={{ marginBottom:12, textAlign:'center' }} />
<button className="btn btn-primary" onClick={handle} disabled={checking} style={{ width:'100%', justifyContent:'center' }}>
@@ -431,7 +431,7 @@ export default function HostPanel({ onProfile, onHelp, onAbout }) {
{/* Toolbar */}
<div style={{ padding:'0 24px 12px', flexShrink:0, display:'flex', gap:8, alignItems:'center', flexWrap:'wrap' }}>
<input value={search} onChange={e => setSearch(e.target.value)} placeholder="Search tenants…"
<input value={search} onChange={e = autoComplete="new-password"> setSearch(e.target.value)} placeholder="Search tenants…"
className="input" style={{ flex:1, minWidth:160, fontSize:13 }} autoComplete="new-password" />
<button className="btn btn-secondary btn-sm" onClick={load} disabled={loading}>{loading ? '…' : '↻ Refresh'}</button>
<button className="btn btn-secondary btn-sm" onClick={handleMigrateAll} disabled={migrating}>{migrating ? 'Migrating…' : '⬆ Migrate All'}</button>