Tailwind CSS and Alpine JS Text Input
Text inputs allow users to enter text into a form field. They can be used to collect information such as names, email addresses, and more.
Default text input
A text input with a label and placeholder.
<div class="">
<label for="textInputDefault" class="">Name</label>
<input id="textInputDefault" type="text" class="" name="name" placeholder="Enter your name" autocomplete="name"/>
</div>
Text input states
Examples of text inputs in error and success states.
<!-- Input with error -->
<div class="">
<label for="inputError" class="">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" aria-hidden="true" fill="currentColor" class="w-4 h-4">
<path d="M5.28 4.22a.75.75 0 0 0-1.06 1.06L6.94 8l-2.72 2.72a.75.75 0 1 0 1.06 1.06L8 9.06l2.72 2.72a.75.75 0 1 0 1.06-1.06L9.06 8l2.72-2.72a.75.75 0 0 0-1.06-1.06L8 6.94 5.28 4.22Z"/>
</svg>
Name
</label>
<input id="inputError" type="text" class="" name="inputStates"/>
<small class="">Error: Name field is required</small>
</div>
<!-- Input with success -->
<div class="">
<label for="inputSuccess" class="">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" aria-hidden="true" fill="currentColor" class="w-4 h-4">
<path fill-rule="evenodd" d="M12.416 3.376a.75.75 0 0 1 .208 1.04l-5 7.5a.75.75 0 0 1-1.154.114l-3-3a.75.75 0 0 1 1.06-1.06l2.353 2.353 4.493-6.74a.75.75 0 0 1 1.04-.207Z" clip-rule="evenodd" />
</svg>
Name
</label>
<input id="inputSuccess" type="text" class="" value="John" name="inputStates"/>
</div>
Input with mask
A text input with a phone number mask. This component uses Alpine JS mask plugin to create the mask. Please make sure to initiate Alpine when using this plugin.
<div x-data class="">
<label for="phoneInput" class="">Phone</label>
<input id="phoneInput" type="text" class="" x-mask="(999) 999-9999" name="phone" autocomplete="tel-national" placeholder="(999) 999-9999"/>
</div>
Search input
A text input with type search and a magnifier icon.
<div class="">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true" class="">
<path stroke-linecap="round" stroke-linejoin="round" d="m21 21-5.197-5.197m0 0A7.5 7.5 0 1 0 5.196 5.196a7.5 7.5 0 0 0 10.607 10.607Z" />
</svg>
<input type="search" class="" name="search" placeholder="Search" aria-label="search"/>
</div>
Password input
A text input with type password and a show/hide toggle button.
<div class="">
<label for="passwordInput" class="">Password</label>
<div x-data="{ showPassword: false }" class="">
<input :type="showPassword ? 'text' : 'password'" id="passwordInput" class="" name="password" autocomplete="current-password" placeholder="Enter your password"/>
<button type="button" @click="showPassword = !showPassword" class="" aria-label="Show password">
<svg x-show="!showPassword" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" aria-hidden="true" class="">
<path stroke-linecap="round" stroke-linejoin="round" d="M2.036 12.322a1.012 1.012 0 0 1 0-.639C3.423 7.51 7.36 4.5 12 4.5c4.638 0 8.573 3.007 9.963 7.178.07.207.07.431 0 .639C20.577 16.49 16.64 19.5 12 19.5c-4.638 0-8.573-3.007-9.963-7.178Z" />
<path stroke-linecap="round" stroke-linejoin="round" d="M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z" />
</svg>
<svg x-show="showPassword" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" aria-hidden="true" class="">
<path stroke-linecap="round" stroke-linejoin="round" d="M3.98 8.223A10.477 10.477 0 0 0 1.934 12C3.226 16.338 7.244 19.5 12 19.5c.993 0 1.953-.138 2.863-.395M6.228 6.228A10.451 10.451 0 0 1 12 4.5c4.756 0 8.773 3.162 10.065 7.498a10.522 10.522 0 0 1-4.293 5.774M6.228 6.228 3 3m3.228 3.228 3.65 3.65m7.894 7.894L21 21m-3.228-3.228-3.65-3.65m0 0a3 3 0 1 0-4.243-4.243m4.242 4.242L9.88 9.88" />
</svg>
</button>
</div>
</div>
Data
List of all Alpine JS data used in this component.
Property | Description |
---|---|
showPassword |
Boolean - Shows/Hides password |
Keyboard Navigation
Key | Action |
---|---|
Tab |
Input field gets the focus
|
Esc | Search input: Input gets cleared |