form-control-mixin

Each field below is a plain HTMLElement (no framework) fully participating in the native form via ElementInternals — one field per built-in validator. Fields also expose :state(touched), :state(dirty), and :state(valid)/:state(invalid) for styling from the outside — no attribute reflection or JS bookkeeping required. Edit a field to see it tint (dirty); click away from an invalid one to see it turn red (touched + invalid).

required
min 3 characters
max 60 characters
pattern: 5 digits
type: email
type: url
min 18
max 5
step 5
Submitted values will appear here.