ユーザー認証とセキュリティに関連するコンポーネント
ダークテーマをサポートするレスポンシブ認証コンポーネントで、Skeuomorphism スタイルで実行されます。
<div class="min-h-screen bg-gradient-to-br from-gray-200 to-gray-400 dark:from-gray-800 dark:to-gray-900 py-12 px-4 sm:px-6 lg:px-8 flex flex-col justify-center"> <div class="sm:mx-auto sm:w-full sm:max-w-md"> <div class="bg-white dark:bg-gray-700 py-8 px-4 shadow-xl rounded-3xl sm:rounded-br-none sm:rounded-tl-none sm:px-10 border-t-4 border-b-4 border-gray-300 dark:border-gray-600"> <div class="sm:mx-auto sm:w-full sm:max-w-md text-center"> <svg class="mx-auto h-12 w-12 text-gray-600 dark:text-gray-300" fill="none" viewBox="0 0 24 24" stroke="currentColor"> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 15v2m-6 4h12a2 2 0 002-2v-6a2 2 0 00-2-2H6a2 2 0 00-2 2v6a2 2 0 002 2zm10-10V7a4 4 0 00-8 0v4h8z" /> </svg> <h2 class="mt-6 text-center text-3xl font-extrabold text-gray-900 dark:text-white"> Sign in to your account </h2> </div> <form class="mt-8 space-y-6" action="#" method="POST"> <input type="hidden" name="remember" value="true"> <div class="rounded-md shadow-sm -space-y-px"> <div> <label for="email-address" class="sr-only">Email address</label> <input id="email-address" name="email" type="email" autocomplete="email" required class="appearance-none rounded-none relative block w-full px-3 py-2 border border-gray-300 placeholder-gray-500 text-gray-900 rounded-t-md focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 focus:z-10 sm:text-sm dark:bg-gray-600 dark:border-gray-500 dark:placeholder-gray-400 dark:text-white" placeholder="Email address"> </div> <div> <label for="password" class="sr-only">Password</label> <input id="password" name="password" type="password" autocomplete="current-password" required class="appearance-none rounded-none relative block w-full px-3 py-2 border border-gray-300 placeholder-gray-500 text-gray-900 rounded-b-md focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 focus:z-10 sm:text-sm dark:bg-gray-600 dark:border-gray-500 dark:placeholder-gray-400 dark:text-white" placeholder="Password"> </div> </div> <div class="flex items-center justify-between"> <div class="flex items-center"> <input id="remember-me" name="remember-me" type="checkbox" class="h-4 w-4 text-indigo-600 focus:ring-indigo-500 border-gray-300 rounded dark:bg-gray-500 dark:border-gray-400"> <label for="remember-me" class="ml-2 block text-sm text-gray-900 dark:text-gray-200"> Remember me </label> </div> <div class="text-sm"> <a href="#" class="font-medium text-indigo-600 hover:text-indigo-500 dark:text-indigo-400 dark:hover:text-indigo-300"> Forgot your password? </a> </div> </div> <div> <button type="submit" class="group relative w-full flex justify-center py-2 px-4 border border-transparent text-sm font-medium rounded-md text-white bg-gradient-to-r from-indigo-600 to-indigo-700 hover:from-indigo-700 hover:to-indigo-800 focus:outline-none focus:ring-2 focus:ring- offsetting-2 focus:ring-indigo-500 shadow-lg transform transition duration-300 ease-in-out hover:scale-105"> <span class="absolute left-0 inset-y-0 flex items-center pl-3"> <svg class="h-5 w-5 text-indigo-500 group-hover:text-indigo-400" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"> <path fill-rule="evenodd" d="M5 9V7a5 5 0 0110 0v2h1a2 2 0 012 2v5a2 2 0 01-2 2H4a2 2 0 01-2-2v-5a2 2 0 012-2h1zm5-3a1 1 0 011 1v3a1 1 0 11-2 0V7a1 1 0 011-1z" clip-rule="evenodd" /> </svg> </span> Sign in </button> </div> </form> </div> </div> </div>
Tailwind CSS で設計されたスキューモーフィック認証コンポーネントで、レスポンシブ エフェクトとダーク テーマのサポートが特徴です。
<div class="flex items-center justify-center min-h-screen bg-gray-100 dark:bg-gray-900"> <div class="max-w-md w-full bg-white dark:bg-gray-800 shadow-lg rounded-lg p-8"> <h2 class="text-2xl font-bold text-gray-800 dark:text-white text-center mb-6">Welcome Back</h2> <form> <div class="mb-4"> <label class="block text-gray-700 dark:text-gray-300 font-semibold mb-2" for="email">Email</label> <input class="shadow appearance-none border rounded w-full py-2 px-3 text-gray-700 dark:text-gray-300 leading-tight focus:outline-none focus:shadow-outline dark:bg-gray-700" id="email" type="email" placeholder="[email protected]"> </div> <div class="mb-6"> <label class="block text-gray-700 dark:text-gray-300 font-semibold mb-2" for="password">Password</label> <input class="shadow appearance-none border rounded w-full py-2 px-3 text-gray-700 dark:text-gray-300 leading-tight focus:outline-none focus:shadow-outline dark:bg-gray-700" id="password" type="password" placeholder="********"> </div> <div class="flex items-center justify-between mb-4"> <div class="flex items-center"> <input type="checkbox" class="form-checkbox h-4 w-4 text-gray-600 dark:text-gray-400"> <label class="ml-2 block text-gray-700 dark:text-gray-300">Remember Me</label> </div> <a href="#" class="text-sm text-blue-600 dark:text-blue-400 hover:underline">Forgot Password?</a> </div> <div> <button class="w-full bg-blue-600 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded focus:outline-none focus:shadow-outline">Login</button> </div> </form> <div class="mt-6 text-center"> <p class="text-sm text-gray-600 dark:text-gray-400">Don't have an account? <a href="#" class="text-blue-600 dark:text-blue-400 hover:underline">Sign Up</a></p> </div> <div class="mt-6 text-center border-t pt-4"> <p class="text-gray-600 dark:text-gray-400 text-sm">or login with</p> <div class="flex justify-center mt-2"> <img class="h-8 w-8 rounded-full mx-2" src="https://picsum.photos/200/200" alt="Random user avatar"> <img class="h-8 w-8 rounded-full mx-2" src="https://picsum.photos/200/201" alt="Random user avatar"> <img class="h-8 w-8 rounded-full mx-2" src="https://picsum.photos/200/202" alt="Random user avatar"> </div> </div> </div> </div>
ダークモードのサポート、ダーク背景のTailwind CSS、ログインおよびサインアップフォーム、UI要素のランダムなプレースホルダー画像を使用したレスポンシブ認証コンポーネント。
<div class="flex items-center justify-center min-h-screen bg-gray-900 text-white"> <div class="w-full max-w-sm"> <div class="mb-6 text-center"> <h1 class="text-2xl font-bold">Authentication</h1> <p class="text-gray-400">Please sign in or create an account</p> </div> <div class="bg-gray-800 rounded-lg shadow-lg p-6"> <form> <div class="mb-4"> <label for="email" class="block mb-2 text-sm font-medium">Email</label> <input type="email" id="email" placeholder="[email protected]" class="w-full px-3 py-2 text-gray-900 bg-gray-200 rounded focus:outline-none focus:ring focus:ring-blue-500" required> </div> <div class="mb-4"> <label for="password" class="block mb-2 text-sm font-medium">Password</label> <input type="password" id="password" placeholder="********" class="w-full px-3 py-2 text-gray-900 bg-gray-200 rounded focus:outline-none focus:ring focus:ring-blue-500" required> </div> <div class="flex items-center justify-between mb-6"> <div> <input type="checkbox" id="remember" class="w-4 h-4 text-blue-600 border-gray-300 rounded focus:ring-blue-500"> <label for="remember" class="ml-2 text-sm">Remember me</label> </div> <a href="#" class="text-sm text-blue-500 hover:underline">Forgot password?</a> </div> <button type="submit" class="w-full py-2 mt-2 text-white bg-blue-600 rounded hover:bg-blue-700 focus:outline-none focus:ring focus:ring-blue-500">Sign In</button> </form> <div class="mt-4 text-center"> <p class="text-gray-400">or</p> <button class="w-full py-2 mt-2 text-white bg-gray-700 rounded hover:bg-gray-600 focus:outline-none">Sign Up</button> </div> </div> <div class="mt-6 text-center"> <img src="https://picsum.photos/100/100" alt="Random placeholder" class="rounded-full mx-auto mb-2"> <p class="text-gray-400 text-sm">Random User Avatar</p> </div> </div> </div>
ダークテーマをサポートするログインフォームとサインアップフォーム、レスポンシブデザイン、プレースホルダー画像を備えた最小限の認証コンポーネント。
<div class="min-h-screen flex items-center justify-center bg-gray-100 dark:bg-gray-900 p-4"> <div class="bg-white dark:bg-gray-800 rounded-lg shadow-md p-8 w-full max-w-sm"> <h2 class="text-2xl font-semibold text-center text-gray-800 dark:text-gray-200">Welcome Back!</h2> <p class="text-gray-600 dark:text-gray-400 text-center mb-6">Please login to your account</p> <form> <div class="mb-4"> <label class="block text-gray-700 dark:text-gray-300" for="email">Email</label> <input type="email" id="email" name="email" class="w-full p-2 border rounded-lg border-gray-300 dark:border-gray-600 bg-gray-50 dark:bg-gray-700 text-gray-800 dark:text-gray-200 focus:outline-none focus:border-blue-500 dark:focus:border-blue-400" required> </div> <div class="mb-6"> <label class="block text-gray-700 dark:text-gray-300" for="password">Password</label> <input type="password" id="password" name="password" class="w-full p-2 border rounded-lg border-gray-300 dark:border-gray-600 bg-gray-50 dark:bg-gray-700 text-gray-800 dark:text-gray-200 focus:outline-none focus:border-blue-500 dark:focus:border-blue-400" required> </div> <button type="submit" class="w-full py-2 bg-blue-600 text-white rounded-lg hover:bg-blue-700 dark:bg-blue-500 dark:hover:bg-blue-400 transition duration-150">Login</button> </form> <p class="mt-4 text-center text-gray-600 dark:text-gray-400">Don't have an account? <a href="#" class="text-blue-600 dark:text-blue-400 hover:underline">Sign up</a></p> </div> </div> <div class="min-h-screen flex items-center justify-center bg-gray-100 dark:bg-gray-900 p-4"> <div class="bg-white dark:bg-gray-800 rounded-lg shadow-md p-8 w-full max-w-sm mt-8"> <h2 class="text-2xl font-semibold text-center text-gray-800 dark:text-gray-200">Create Account</h2> <p class="text-gray-600 dark:text-gray-400 text-center mb-6">Join us today</p> <form> <div class="mb-4"> <label class="block text-gray-700 dark:text-gray-300" for="username">Username</label> <input type="text" id="username" name="username" class="w-full p-2 border rounded-lg border-gray-300 dark:border-gray-600 bg-gray-50 dark:bg-gray-700 text-gray-800 dark:text-gray-200 focus:outline-none focus:border-blue-500 dark:focus:border-blue-400" required> </div> <div class="mb-4"> <label class="block text-gray-700 dark:text-gray-300" for="email">Email</label> <input type="email" id="email" name="email" class="w-full p-2 border rounded-lg border-gray-300 dark:border-gray-600 bg-gray-50 dark:bg-gray-700 text-gray-800 dark:text-gray-200 focus:outline-none focus:border-blue-500 dark:focus:border-blue-400" required> </div> <div class="mb-6"> <label class="block text-gray-700 dark:text-gray-300" for="password">Password</label> <input type="password" id="password" name="password" class="w-full p-2 border rounded-lg border-gray-300 dark:border-gray-600 bg-gray-50 dark:bg-gray-700 text-gray-800 dark:text-gray-200 focus:outline-none focus:border-blue-500 dark:focus:border-blue-400" required> </div> <button type="submit" class="w-full py-2 bg-blue-600 text-white rounded-lg hover:bg-blue-700 dark:bg-blue-500 dark:hover:bg-blue-400 transition duration-150">Sign Up</button> </form> <p class="mt-4 text-center text-gray-600 dark:text-gray-400">Already have an account? <a href="#" class="text-blue-600 dark:text-blue-400 hover:underline">Login</a></p> </div> </div>
ダークモードUI用に設計されたレスポンシブ認証コンポーネントで、Tailwind CSSスタイルを使用したログインおよびサインアップフォームを備えています。
<div class="min-h-screen flex items-center justify-center bg-gray-900 text-white"> <div class="bg-gray-800 rounded-lg shadow-lg p-8 w-96"> <h2 class="text-2xl font-bold mb-6 text-center">Welcome Back!</h2> <form> <div class="mb-4"> <label class="block text-sm font-semibold mb-2" for="email">Email</label> <input type="email" id="email" class="w-full p-2 bg-gray-700 text-white rounded focus:outline-none focus:ring-2 focus:ring-indigo-500" placeholder="[email protected]" required /> </div> <div class="mb-4"> <label class="block text-sm font-semibold mb-2" for="password">Password</label> <input type="password" id="password" class="w-full p-2 bg-gray-700 text-white rounded focus:outline-none focus:ring-2 focus:ring-indigo-500" placeholder="********" required /> </div> <button type="submit" class="w-full bg-indigo-600 hover:bg-indigo-500 text-white font-semibold py-2 rounded focus:outline-none focus:ring-2 focus:ring-indigo-500 transition duration-300">Login</button> </form> <div class="mt-4 text-center"> <a href="#" class="text-sm text-indigo-400 hover:underline">Forgot your password?</a> </div> <div class="mt-6 border-t border-gray-600"></div> <h2 class="text-2xl font-bold mt-6 text-center">Create an Account</h2> <form> <div class="mb-4"> <label class="block text-sm font-semibold mb-2" for="new-email">Email</label> <input type="email" id="new-email" class="w-full p-2 bg-gray-700 text-white rounded focus:outline-none focus:ring-2 focus:ring-indigo-500" placeholder="[email protected]" required /> </div> <div class="mb-4"> <label class="block text-sm font-semibold mb-2" for="new-password">Password</label> <input type="password" id="new-password" class="w-full p-2 bg-gray-700 text-white rounded focus:outline-none focus:ring-2 focus:ring-indigo-500" placeholder="********" required /> </div> <div class="mb-4"> <label class="block text-sm font-semibold mb-2" for="avatar">Upload Avatar</label> <input type="file" id="avatar" class="block w-full text-sm text-gray-500 bg-gray-600 rounded focus:outline-none" /> </div> <button type="submit" class="w-full bg-indigo-600 hover:bg-indigo-500 text-white font-semibold py-2 rounded focus:outline-none focus:ring-2 focus:ring-indigo-500 transition duration-300">Sign Up</button> </form> <div class="mt-4 text-center"> <small>Or sign up using</small> <div class="flex justify-center mt-2"> <img src="https://picsum.photos/30/30" class="rounded-full mx-1" alt="Random Avatar" /> <img src="https://picsum.photos/30/30" class="rounded-full mx-1" alt="Random Avatar" /> <img src="https://picsum.photos/30/30" class="rounded-full mx-1" alt="Random Avatar" /> </div> </div> </div> </div>
ダークモードUIで設計されたレスポンシブ認証コンポーネントで、プレースホルダー画像付きのログインフォームとサインアップフォームを備えています。
<div class="min-h-screen flex items-center justify-center bg-gray-900 p-4"> <div class="bg-gray-800 rounded-lg shadow-lg p-6 max-w-sm w-full"> <h2 class="text-white text-2xl mb-6 text-center">Welcome Back</h2> <form> <div class="mb-4"> <label class="block text-gray-300 mb-2" for="email">Email</label> <input class="w-full px-4 py-2 rounded bg-gray-700 text-white focus:outline-none focus:ring focus:ring-indigo-500" type="email" id="email" placeholder="[email protected]" required> </div> <div class="mb-6"> <label class="block text-gray-300 mb-2" for="password">Password</label> <input class="w-full px-4 py-2 rounded bg-gray-700 text-white focus:outline-none focus:ring focus:ring-indigo-500" type="password" id="password" placeholder="********" required> </div> <button class="w-full bg-indigo-600 hover:bg-indigo-500 text-white font-bold py-2 rounded focus:outline-none focus:ring focus:ring-indigo-400 transition duration-200">Login</button> </form> <div class="mt-4 text-center"> <span class="text-gray-400">or</span> </div> <div class="mt-4"> <p class="text-gray-400 text-center">Don't have an account? <a href="#" class="text-indigo-400 hover:underline">Sign up</a></p> </div> </div> </div> <div class="min-h-screen flex items-center justify-center bg-gray-900 p-4 mt-10"> <div class="bg-gray-800 rounded-lg shadow-lg p-6 max-w-sm w-full"> <h2 class="text-white text-2xl mb-6 text-center">Create Account</h2> <form> <div class="mb-4"> <label class="block text-gray-300 mb-2" for="name">Name</label> <input class="w-full px-4 py-2 rounded bg-gray-700 text-white focus:outline-none focus:ring focus:ring-indigo-500" type="text" id="name" placeholder="John Doe" required> </div> <div class="mb-4"> <label class="block text-gray-300 mb-2" for="email-signup">Email</label> <input class="w-full px-4 py-2 rounded bg-gray-700 text-white focus:outline-none focus:ring focus:ring-indigo-500" type="email" id="email-signup" placeholder="[email protected]" required> </div> <div class="mb-6"> <label class="block text-gray-300 mb-2" for="password-signup">Password</label> <input class="w-full px-4 py-2 rounded bg-gray-700 text-white focus:outline-none focus:ring focus:ring-indigo-500" type="password" id="password-signup" placeholder="********" required> </div> <button class="w-full bg-indigo-600 hover:bg-indigo-500 text-white font-bold py-2 rounded focus:outline-none focus:ring focus:ring-indigo-400 transition duration-200">Sign Up</button> </form> <div class="mt-4 text-center"> <span class="text-gray-400">or</span> </div> <div class="mt-4"> <p class="text-gray-400 text-center">Already have an account? <a href="#" class="text-indigo-400 hover:underline">Login</a></p> </div> </div> </div>