Skip to content
  • No data uploaded
  • Instant results

Tailwind CSS Login Modal for React — Glassmorphism

A production-ready glassmorphism login modal: a centered sign-in dialog with email and password fields, “remember me”, a forgot-password link and a social sign-in button. Pick your brand color, toggle dark mode and corner radius — the live preview and the React code update instantly in your browser.

Live component editor

Library
Framework
Style
Theme
Corner radius
Live preview
import { useState } from 'react';

export default function LoginModal() {
  const [open, setOpen] = useState(true);

  return (
    <div>
      <button type="button" className="inline-flex items-center justify-center px-4 py-2.5 text-sm font-semibold rounded-lg bg-[#4f46e5] hover:bg-[#433cc3] text-white shadow-sm transition-colors focus:outline-none focus:ring-2 focus:ring-[#4f46e5] focus:ring-offset-2 focus:ring-offset-white" onClick={() => setOpen(true)}>Sign in</button>
      <div hidden={!open}>
        <div className="fixed inset-0 z-50 flex items-center justify-center p-4 bg-slate-900/50 backdrop-blur-sm" role="dialog" aria-modal="true" aria-labelledby="login-title">
          <div className="relative w-full max-w-md p-8 bg-white/60 backdrop-blur-xl border border-white/60 shadow-2xl rounded-xl">
            <button type="button" className="absolute top-0 right-0 m-3 inline-flex items-center justify-center w-8 h-8 rounded-full text-slate-500 hover:bg-slate-900/5" aria-label="Close" onClick={() => setOpen(false)}>&times;</button>
            <h2 id="login-title" className="text-2xl font-bold mb-1 text-slate-900">Welcome back</h2>
            <p className="text-sm mb-6 text-slate-500">Sign in to continue to your dashboard.</p>
            <form className="flex flex-col gap-4">
              <div>
                <label htmlFor="login-email" className="block mb-1.5 text-sm font-medium text-slate-700">Email</label>
                <input id="login-email" type="email" autoComplete="email" placeholder="you@company.com" className="block w-full px-3 py-2 text-sm rounded-lg border bg-white/70 border-white/80 text-slate-900 placeholder-slate-400 focus:outline-none focus:ring-2 focus:ring-[#4f46e5] focus:border-[#4f46e5]" required />
              </div>
              <div>
                <div className="flex items-center justify-between">
                  <label htmlFor="login-password" className="block mb-1.5 text-sm font-medium text-slate-700">Password</label>
                  <a href="#" className="text-sm font-medium text-[#4f46e5] hover:underline">Forgot?</a>
                </div>
                <input id="login-password" type="password" autoComplete="current-password" placeholder="••••••••" className="block w-full px-3 py-2 text-sm rounded-lg border bg-white/70 border-white/80 text-slate-900 placeholder-slate-400 focus:outline-none focus:ring-2 focus:ring-[#4f46e5] focus:border-[#4f46e5]" required />
              </div>
              <label className="flex items-center gap-2 text-sm text-slate-700">
                <input type="checkbox" className="h-4 w-4 accent-[#4f46e5]" /> Remember me for 30 days
              </label>
              <button type="submit" className="inline-flex items-center justify-center px-4 py-2.5 text-sm font-semibold rounded-lg bg-[#4f46e5] hover:bg-[#433cc3] text-white shadow-sm transition-colors focus:outline-none focus:ring-2 focus:ring-[#4f46e5] focus:ring-offset-2 focus:ring-offset-white w-full">Sign in</button>
            </form>
            <div className="flex items-center gap-3 my-6">
              <span className="flex-1 border-t border-slate-200"></span>
              <span className="text-xs uppercase text-slate-500">or</span>
              <span className="flex-1 border-t border-slate-200"></span>
            </div>
            <button type="button" className="inline-flex items-center justify-center px-4 py-2.5 text-sm font-semibold rounded-lg border transition-colors border-white/80 bg-white/40 text-slate-800 hover:bg-white/70 focus:outline-none focus:ring-2 focus:ring-[#4f46e5] focus:ring-offset-2 focus:ring-offset-white w-full">Continue with Google</button>
            <p className="mt-6 text-center text-sm text-slate-500">No account? <a href="#" className="font-medium text-[#4f46e5] hover:underline">Create one</a></p>
          </div>
        </div>
      </div>
    </div>
  );
}
All components →

Free Tailwind CSS Login Modal for React — Glassmorphism by pGento

Install Tailwind CSS for React

Create a React project with Vite, then add Tailwind CSS v3:

npm create vite@latest my-app -- --template react
cd my-app
npm install
npm install -D tailwindcss@3 postcss autoprefixer
npx tailwindcss init -p

Set content: ['./index.html', './src/**/*.{js,jsx}'] in tailwind.config.js, and add to src/index.css:

@tailwind base;
@tailwind components;
@tailwind utilities;

The brand color is applied with arbitrary values such as bg-[#4f46e5], so no theme configuration is needed.

Use the login modal in React

// App.jsx
import LoginModal from './LoginModal';

export default function App() {
  return <LoginModal />;
}

Accessibility & customization

The dialog uses role="dialog", aria-modal="true" and aria-labelledby pointing at its title. Every field has a visible <label>, the close button has an aria-label, and inputs use the correct autocomplete tokens so password managers work.

Every color, radius and dark-mode choice is baked into plain utility classes, so the copied code has no runtime dependency on this site. The glass style relies on backdrop-filter, supported in all current browsers; place it over a colorful background for the best effect.

Compatibility

ItemDetails
CSS frameworkTailwind CSS v3.4+
LibraryReact 18+ (function component)
Interactive stateopen
Dark modeYes — toggle in the editor
StyleGlassmorphism (backdrop blur)

Frequently asked questions

How do I install this Tailwind login modal in React?
Create a React project, install Tailwind CSS as shown in the installation section, then paste the generated code.
Can I change the color of the login modal?
Yes. Use the brand color picker or type any hex code — the preview and code update instantly, and the color is written directly into the classes you copy.
Does the login modal support dark mode?
Yes. Toggle “Dark mode” in the editor to generate a dark palette version of the same component.
Is the login modal accessible?
The dialog uses role="dialog", aria-modal="true" and aria-labelledby pointing at its title. Every field has a visible <label>, the close button has an aria-label, and inputs use the correct autocomplete tokens so password managers work.
Is this component free for commercial use?
Yes. The generated code is yours to use in personal and commercial projects without attribution.
Tailwind CSS Login Modal for React — Glassmorphism

Embed this tool on your site

Paste this code into any web page. It stays free, fast and ad-free inside your site.

Print or save as PDF

Prints just this tool and its result. Choose “Save as PDF” as the printer to get a file. Branding is stored only in this browser.