# OTP Challenge

> OTP Challenge for Verify Identity.

A shadcn/ui block from the [@flx](https://ui.flexnative.com) registry, listed on [shadcn.exchange](https://shadcn.exchange/r/flx/verify-identity-2).

- Page, with a live preview: https://shadcn.exchange/r/flx/verify-identity-2
- Screenshot: https://abzjhwgwpdpz7ua5.public.blob.vercel-storage.com/shots/flx/verify-identity-2-light-ed71604ea49e9126.png
- Registry item: https://ui.flexnative.com/r/verify-identity-2.json
- Listed: 2026-10-13, source last changed 2026-10-13

## Install

```bash
npx shadcn@latest add https://ui.flexnative.com/r/verify-identity-2.json
```

Run it in a project that has shadcn/ui set up. It adds the files below and installs what they depend on.

## Dependencies

- npm packages: `input-otp`, `lucide-react`
- Registry items: `button`, `card`, `input-otp`

## Files

### `registry/intents/auth/verify-identity/verify-identity-2.tsx`

```tsx
import { Mail } from 'lucide-react'

import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'
import {
  InputOTP,
  InputOTPGroup,
  InputOTPSlot,
} from '@/components/ui/input-otp'
import { Button } from '@/components/ui/button'

export function VerifyIdentity2() {
  return (
    <Card size="sm">
      <CardHeader>
        <div className="bg-primary/10 mb-1 flex size-10 items-center justify-center rounded-full">
          <Mail className="text-primary size-5" />
        </div>
        <CardTitle>Verify to continue</CardTitle>
        <p className="text-muted-foreground text-xs">
          We sent a 6-digit code to{' '}
          <span className="text-foreground">ada@acme.com</span>.
        </p>
      </CardHeader>

      <CardContent className="flex flex-col gap-4">
        <div className="flex justify-center">
          <InputOTP maxLength={6} defaultValue="248">
            <InputOTPGroup>
              {Array.from({ length: 6 }).map((_, i) => (
                <InputOTPSlot key={i} index={i} />
              ))}
            </InputOTPGroup>
          </InputOTP>
        </div>

        <Button className="w-full">Verify</Button>

        <div className="flex items-center justify-between text-[11px]">
          <span className="text-muted-foreground/80">Code expires in 4:58</span>
          <button
            type="button"
            className="text-muted-foreground hover:text-foreground"
          >
            Resend
          </button>
        </div>
      </CardContent>
    </Card>
  )
}
```
