{{-- Floating-label text field with a leading icon. The label floats via the `peer-placeholder-shown` technique, which needs a literal single-space placeholder — without it the browser never reports the "empty" state and the label sits over the caret. Errors are rendered from the standard $errors bag and wired with aria-describedby / aria-invalid, so a screen reader announces the message with the field rather than as loose text further down the page. --}} @props([ 'name', 'label', 'type' => 'text', 'icon' => 'envelope', 'autocomplete' => null, 'autofocus' => false, /* | An explicit starting value, for the one case old() cannot cover: the | password-reset form, where the address arrives in the signed link rather | than from a previous submission. Passing it through $attributes instead | would emit a second value attribute, and the hardcoded one below wins. | | Never honoured for password fields — see the input. */ 'value' => null, ]) @php $id = 'auth-'.$name; $hasError = $errors->has($name); @endphp