Skip to content

Forgot Password

Password reset, plus the magic link beside it — the moment after a password has failed is when somebody is most willing to stop using one.

2 blocks46 lineslucide-reactAdded 9 Sept 2026

What's included

  • app/forgot-password-page.tsx
  • 2 blocks it is built from, installed with it
  • Needs lucide-react

Works with

  • React
  • Next.js
  • Tailwind CSS
  • TypeScript

npx hoverlab add forgot-password-page

Or over MCP, from your editor's agent — no account needed.

License

Free to read, copy and install, for personal and non-commercial projects. Shipping it in client work or a paid product needs Pro ($79 once). The source lands in your repo and stops being ours — no attribution, nothing to upgrade.

Was this useful?

Preview

Reset your password

Enter your email and we will send you a link to set a new one.

Back to sign in
Or skip the password

One address, one link, no password to forget or reuse. The link works once and expires in fifteen minutes, which is stated here rather than discovered when it fails.

The real page, rendered in your current theme — every section below is a live block, not a screenshot.

Built from

All blocks
  1. Password Reset RequestReset-link request with a sent state worded to avoid leaking whether an account exists.
  2. Magic Link Sign InPasswordless sign-in that says what will land in the inbox and how long it lasts, before the address is typed.

Only want one section? Open it and copy that block instead — browse Authentication.

Shipped in these templates

Want the whole project rather than this one screen? A template ships every route, the theme tokens and the layout.

Source

app/forgot-password-page.tsx
/**
 * Password recovery, with the option that avoids the password entirely.
 *
 * Someone reaching this page has already failed to sign in once. The
 * conventional answer is a reset form and nothing else, which sends them
 * to their inbox to click a link, choose a new password, and store it —
 * three steps to get back to where they were.
 *
 * The magic-link form is beside it because it solves the same problem in
 * one step, and this is the exact moment somebody is most willing to stop
 * using passwords. Offering it on the main sign-in screen competes with
 * the primary action; offering it here, after the password has already
 * failed, competes with nothing.
 *
 * Reset stays first. It is what the reader came for, and a page that
 * answers a different question than the one asked — however sensibly — is
 * a page people bounce from.
 */

import * as React from 'react'
import { AuthForgotPassword } from '@/components/auth-forgot-password'
import { AuthMagicLinkForm } from '@/components/auth-magic-link-form'

export default function ForgotPasswordPage() {
  return (
    <main className="min-h-screen bg-background text-foreground">
      <AuthForgotPassword />

      {/*
        The separator carries a word rather than being a bare rule. "Or"
        is what tells a reader the second form is an alternative and not a
        second required step, which a plain line leaves ambiguous.
      */}
      <div className="mx-auto flex w-full max-w-md items-center gap-4 px-6">
        <span className="h-px flex-1 bg-border" />
        <span className="text-xs font-medium uppercase tracking-wider text-muted-foreground">
          Or skip the password
        </span>
        <span className="h-px flex-1 bg-border" />
      </div>

      <AuthMagicLinkForm />
    </main>
  )
}

How to use it

  1. 1. Copy each of the 2 blocks above into components/ — each block page has its own copy button.
  2. 2. Drop this file at app/forgot-password-page.tsx. The imports already point at @/components/…, so they resolve with no edits.
  3. 3. Delete the sections you do not want. Every block takes props, so the copy changes without the layout moving.

For AI

The component, its props, the design tokens it expects and the command that installs it — as one prompt. Paste it into Claude, Cursor, v0 or ChatGPT and what they build around it will match the rest of the catalog instead of inventing its own system.

See the prompt

More Auth Screens

Open the full page for this page

Signup Page

The signup form with the proof under it rather than above it — the person who arrived here has already decided, and scrolling past testimonials is friction applied to the wrong reader.

Auth Screens3 blocks34 lines
Open the full page for this page

Two-Factor Challenge

The second factor with its fallback on the same screen, because a 2FA prompt with no recovery route is a lockout screen wearing a security screen.

Auth Screens2 blocks40 lines
Open the full page for this page

SSO Sign In

A domain field for the employee who signs in daily, and the capability detail below the fold for the IT reviewer who reads it once.

Auth Screens2 blocks31 lines
Open the full page for this page

Reset Password

The end of the forgot-password flow, shipped with the state it reaches more than any other screen: a focused error summary linking to each field, beside a strength meter that is a real <meter>.

Auth Screens2 blocks36 lines