Accessibility
Field, FieldMaskType, FieldStack, FieldType from @prepared911/ui/field.
description is in aria-describedby; an invalid field with error adds aria-invalid and aria-errormessage.description; a placeholder is not announced once the field has a value.autoComplete and name pass through and are never defaulted, so pass the purpose token. Email, URL, telephone and masked fields render spellcheck="false", and a password keeps it whether it is concealed or revealed, whatever mask or spellCheck is passed, so a secret never goes to a spellcheck service.aria-hidden. An icon-only action needs label, and Search and Password Buttons need their labels as before.preventFocusOnPress, so pressing one keeps focus in the input.field-focus recipe: it turns --color-accent-ring (--focus-ring-color-destructive when invalid) at the same width, with no outline or shadow. A focused tail Button keeps its own ring and leaves the frame border alone. This follows ui-core and is an owner decision: the recolored border keeps WCAG 1.4.11 non-text contrast (3:1 against the fill inside it and the page outside it) but a 1px change does not meet WCAG 2.2 focus appearance (2.4.13, a 2px-thick area at 3:1 against the unfocused state).forced-colors: active the frame keeps its border, an invalid field draws a second outline at rest, and keyboard focus turns the frame border Highlight.announceFieldErrors={false}.