Epicenter
Local-first, open source apps
1
2
3
4
5
6
About
Input OTP is built on top of Bits UI's PinInput which is inspired by @guilherme_rodz's Input OTP component.
Installation
Install bits-ui:
Copy and paste the following code into your project.
Usage
<script lang="ts">
import * as InputOTP from "$lib/components/ui/input-otp/index.js";
</script> <InputOTP.Root maxlength={6}>
{#snippet children({ cells })}
<InputOTP.Group>
{#each cells.slice(0, 3) as cell}
<InputOTP.Slot {cell} />
{/each}
</InputOTP.Group>
<InputOTP.Separator />
<InputOTP.Group>
{#each cells.slice(3, 6) as cell}
<InputOTP.Slot {cell} />
{/each}
</InputOTP.Group>
{/snippet}
</InputOTP.Root> Pattern
Use the pattern prop to define a custom pattern for the OTP input.
<script lang="ts">
import * as InputOTP from "$lib/components/ui/input-otp/index.js";
import { REGEXP_ONLY_DIGITS_AND_CHARS } from "bits-ui";
</script>
<InputOTP.Root maxlength={6} pattern={REGEXP_ONLY_DIGITS_AND_CHARS}>
<!-- ... -->
</InputOTP.Root> Separator
Use the <InputOTP.Separator /> component to add a separator between input groups.
Disabled
Use the disabled prop to disable the input.
1
2
3
4
5
6
Controlled
Use bind:value to control the input value.
Enter your one-time password.
Invalid
Use aria-invalid on the slots to show an error state.
0
0
0
0
0
0
Four Digits
A common pattern for PIN codes. This uses the pattern={REGEXP_ONLY_DIGITS} prop.
Alphanumeric
Use REGEXP_ONLY_DIGITS_AND_CHARS to accept both letters and numbers.
Form
Verify your login
Enter the verification code we sent to your email address: m@example.com.