No shared CredentialForm component — every admin integration page reimplements the same form
Imported from GitHub issue El-SaMa/oma#107 by @El-SaMa.
`cloudflare-settings.tsx`, `cpanel-settings.tsx`, and others each hand-roll an ~85-90 line credential form (host/token inputs, test-connection button, save button, status badge, error display), often with raw HTML inputs instead of `@oma/ui` components even though the package is imported elsewhere in the same file.
Fix: extract `<CredentialForm fields={...} onTest={...} onSave={...} status={...} />` to `apps/web/components/credential-form.tsx`; migrate cloudflare/cpanel/hetzner/moira settings pages onto it.