Component:
Login Software Minimal

<!--
@type: Login
@industry: Software
@style: Minimal
@category: Page Section, UI Element, Content
@framework: HTML/CSS
@license: Free
-->
<style>
:root {
--color-white: #ffffff;
--color-gray-50: #f9fafb;
--color-gray-200: #e5e7eb;
--color-gray-300: #d1d5db;
--color-gray-400: #9ca3af;
--color-gray-500: #6b7280;
--color-gray-600: #4b5563;
--color-gray-700: #374151;
--color-gray-900: #111827;
--color-indigo-500: #6366f1;
--color-indigo-600: #4f46e5;
--color-indigo-700: #4338ca;
--color-linkedin: #0A66C2;
--color-google-blue: #4285F4;
--color-google-green: #34A853;
--color-google-yellow: #FBBC05;
--color-google-red: #EA4335;
}
* {
box-sizing: border-box;
margin: 0;
padding: 0;
font-family: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
}
.login-section {
background-color: var(--color-white);
padding-top: 3rem;
padding-bottom: 3rem;
}
@media (min-width: 640px) {
.login-section {
padding-top: 4rem;
padding-bottom: 4rem;
}
}
@media (min-width: 1024px) {
.login-section {
padding-top: 5rem;
padding-bottom: 5rem;
}
}
.container {
max-width: 80rem;
margin-left: auto;
margin-right: auto;
padding-left: 1rem;
padding-right: 1rem;
}
@media (min-width: 640px) {
.container {
padding-left: 1.5rem;
padding-right: 1.5rem;
}
}
@media (min-width: 1024px) {
.container {
padding-left: 2rem;
padding-right: 2rem;
}
}
.login-form-container {
max-width: 28rem;
margin-left: auto;
margin-right: auto;
}
.login-header {
text-align: center;
margin-bottom: 2rem;
}
.login-heading {
font-size: 1.875rem;
line-height: 2.25rem;
font-weight: 700;
color: var(--color-gray-900);
letter-spacing: -0.025em;
}
.login-subheading {
margin-top: 0.5rem;
font-size: 1rem;
line-height: 1.5rem;
color: var(--color-gray-600);
}
.social-login-buttons {
display: flex;
flex-direction: column;
gap: 0.75rem;
margin-bottom: 1.5rem;
}
.social-login-button {
width: 100%;
display: inline-flex;
justify-content: center;
align-items: center;
padding: 0.5rem 1rem;
border: 1px solid var(--color-gray-300);
border-radius: 0.375rem;
box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
font-size: 0.875rem;
font-weight: 500;
color: var(--color-gray-700);
background-color: var(--color-white);
transition: background-color 0.2s;
cursor: pointer;
}
.social-login-button:hover {
background-color: var(--color-gray-50);
}
.social-login-button:focus {
outline: none;
box-shadow: 0 0 0 2px var(--color-white), 0 0 0 4px var(--color-indigo-500);
}
.social-icon {
height: 1.25rem;
width: 1.25rem;
margin-right: 0.5rem;
}
.linkedin-icon {
color: var(--color-linkedin);
}
.divider {
position: relative;
margin-top: 1.5rem;
margin-bottom: 1.5rem;
}
.divider-line {
position: absolute;
inset: 0;
display: flex;
align-items: center;
}
.divider-line-inner {
width: 100%;
border-top: 1px solid var(--color-gray-200);
}
.divider-text-container {
position: relative;
display: flex;
justify-content: center;
font-size: 0.875rem;
}
.divider-text {
padding-left: 0.5rem;
padding-right: 0.5rem;
background-color: var(--color-white);
color: var(--color-gray-500);
}
.login-form {
display: flex;
flex-direction: column;
gap: 1.5rem;
}
.form-group {
display: flex;
flex-direction: column;
}
.form-label {
display: block;
font-size: 0.875rem;
font-weight: 500;
color: var(--color-gray-700);
}
.form-input-container {
margin-top: 0.25rem;
}
.password-input-container {
position: relative;
}
.form-input {
appearance: none;
display: block;
width: 100%;
padding: 0.5rem 0.75rem;
border: 1px solid var(--color-gray-300);
border-radius: 0.375rem;
box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
font-size: 0.875rem;
}
.form-input::placeholder {
color: var(--color-gray-400);
}
.form-input:focus {
outline: none;
border-color: var(--color-indigo-500);
box-shadow: 0 0 0 1px var(--color-indigo-500);
}
.password-toggle-button {
position: absolute;
top: 0;
bottom: 0;
right: 0;
padding-right: 0.75rem;
display: flex;
align-items: center;
color: var(--color-gray-400);
background: none;
border: none;
cursor: pointer;
}
.password-toggle-button:hover {
color: var(--color-gray-500);
}
.password-toggle-icon {
height: 1.25rem;
width: 1.25rem;
}
.form-footer {
display: flex;
align-items: center;
justify-content: space-between;
}
.remember-me {
display: flex;
align-items: center;
}
.remember-checkbox {
height: 1rem;
width: 1rem;
color: var(--color-indigo-600);
border: 1px solid var(--color-gray-300);
border-radius: 0.25rem;
}
.remember-checkbox:focus {
outline: none;
box-shadow: 0 0 0 2px var(--color-indigo-500);
}
.remember-label {
margin-left: 0.5rem;
display: block;
font-size: 0.875rem;
color: var(--color-gray-700);
}
.forgot-password {
font-size: 0.875rem;
}
.forgot-password-link {
font-weight: 500;
color: var(--color-indigo-600);
text-decoration: none;
}
.forgot-password-link:hover {
color: var(--color-indigo-500);
}
.submit-button {
width: 100%;
display: flex;
justify-content: center;
padding: 0.5rem 1rem;
border: 1px solid transparent;
border-radius: 0.375rem;
box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
font-size: 0.875rem;
font-weight: 500;
color: var(--color-white);
background-color: var(--color-indigo-600);
transition: background-color 0.2s;
cursor: pointer;
}
.submit-button:hover {
background-color: var(--color-indigo-700);
}
.submit-button:focus {
outline: none;
box-shadow: 0 0 0 2px var(--color-white), 0 0 0 4px var(--color-indigo-500);
}
.signup-section {
margin-top: 1.5rem;
text-align: center;
}
.signup-text {
font-size: 0.875rem;
color: var(--color-gray-600);
}
.signup-link {
font-weight: 500;
color: var(--color-indigo-600);
text-decoration: none;
}
.signup-link:hover {
color: var(--color-indigo-500);
}
.hidden {
display: none;
}
</style>
<section class="login-section" aria-labelledby="login-heading">
<div class="container">
<div class="login-form-container">
<!-- Heading -->
<div class="login-header">
<h1 id="login-heading" class="login-heading">
Sign in to your account
</h1>
<p class="login-subheading">
Access your business dashboard and tools
</p>
</div>
<!-- Social Login Buttons -->
<div class="social-login-buttons">
<button type="button" class="social-login-button">
<svg class="social-icon" viewBox="0 0 24 24" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
<path d="M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92c-.26 1.37-1.04 2.53-2.21 3.31v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.09z" fill="#4285F4"/>
<path d="M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23z" fill="#34A853"/>
<path d="M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18C1.43 8.55 1 10.22 1 12s.43 3.45 1.18 4.93l2.85-2.22.81-.62z" fill="#FBBC05"/>
<path d="M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53z" fill="#EA4335"/>
</svg>
Sign in with Google
</button>
<button type="button" class="social-login-button">
<svg class="social-icon linkedin-icon" viewBox="0 0 24 24" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
<path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z" />
</svg>
Sign in with LinkedIn
</button>
<button type="button" class="social-login-button">
<svg class="social-icon" viewBox="0 0 24 24" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
<path d="M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z" />
</svg>
Sign in with GitHub
</button>
</div>
<!-- Divider -->
<div class="divider">
<div class="divider-line">
<div class="divider-line-inner"></div>
</div>
<div class="divider-text-container">
<span class="divider-text">Or continue with</span>
</div>
</div>
<!-- Login Form -->
<form class="login-form" action="#" method="POST">
<div class="form-group">
<label for="email" class="form-label">
Email address
</label>
<div class="form-input-container">
<input id="email" name="email" type="email" autocomplete="email" required class="form-input" placeholder="[email protected]">
</div>
</div>
<div class="form-group">
<label for="password" class="form-label">
Password
</label>
<div class="password-input-container">
<input id="password" name="password" type="password" autocomplete="current-password" required class="form-input" placeholder="••••••••">
<button type="button" id="password-toggle" class="password-toggle-button">
<svg id="password-show-icon" class="password-toggle-icon" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 12a3 3 0 11-6 0 3 3 0 016 0z" />
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z" />
</svg>
<svg id="password-hide-icon" class="password-toggle-icon hidden" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13.875 18.825A10.05 10.05 0 0112 19c-4.478 0-8.268-2.943-9.543-7a9.97 9.97 0 011.563-3.029m5.858.908a3 3 0 114.243 4.243M9.878 9.878l4.242 4.242M9.88 9.88l-3.29-3.29m7.532 7.532l3.29 3.29M3 3l3.59 3.59m0 0A9.953 9.953 0 0112 5c4.478 0 8.268 2.943 9.543 7a10.025 10.025 0 01-4.132 5.411m0 0L21 21" />
</svg>
</button>
</div>
</div>
<div class="form-footer">
<div class="remember-me">
<input id="remember-me" name="remember-me" type="checkbox" class="remember-checkbox">
<label for="remember-me" class="remember-label">
Remember me
</label>
</div>
<div class="forgot-password">
<a href="#" class="forgot-password-link">
Forgot your password?
</a>
</div>
</div>
<div>
<button type="submit" class="submit-button">
Sign in
</button>
</div>
</form>
<!-- Sign up link -->
<div class="signup-section">
<p class="signup-text">
Don't have an account?
<a href="#" class="signup-link">
Sign up for a free trial
</a>
</p>
</div>
</div>
</div>
</section>
<!-- Inline script for password visibility toggle -->
<script>
document.addEventListener('DOMContentLoaded', function() {
const passwordInput = document.getElementById('password');
const toggleButton = document.getElementById('password-toggle');
const showIcon = document.getElementById('password-show-icon');
const hideIcon = document.getElementById('password-hide-icon');
toggleButton.addEventListener('click', function() {
if (passwordInput.type === 'password') {
passwordInput.type = 'text';
showIcon.classList.add('hidden');
hideIcon.classList.remove('hidden');
} else {
passwordInput.type = 'password';
showIcon.classList.remove('hidden');
hideIcon.classList.add('hidden');
}
});
});
</script>
<!--
@type: Login
@industry: Software
@style: Minimal
@category: Page Section, UI Element, Content
@framework: Tailwind
@license: Free
-->
<section class="bg-white py-12 sm:py-16 lg:py-20" aria-labelledby="login-heading">
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<div class="max-w-md mx-auto">
<!-- Heading -->
<div class="text-center mb-8">
<h1 id="login-heading" class="text-3xl font-bold text-gray-900 tracking-tight">
Sign in to your account
</h1>
<p class="mt-2 text-base text-gray-600">
Access your business dashboard and tools
</p>
</div>
<!-- Social Login Buttons -->
<div class="space-y-3 mb-6">
<button type="button" class="w-full inline-flex justify-center items-center px-4 py-2 border border-gray-300 shadow-sm text-sm font-medium rounded-md text-gray-700 bg-white hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500 transition-colors duration-200">
<svg class="h-5 w-5 mr-2" viewBox="0 0 24 24" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
<path d="M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92c-.26 1.37-1.04 2.53-2.21 3.31v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.09z" fill="#4285F4"/>
<path d="M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23z" fill="#34A853"/>
<path d="M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18C1.43 8.55 1 10.22 1 12s.43 3.45 1.18 4.93l2.85-2.22.81-.62z" fill="#FBBC05"/>
<path d="M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53z" fill="#EA4335"/>
</svg>
Sign in with Google
</button>
<button type="button" class="w-full inline-flex justify-center items-center px-4 py-2 border border-gray-300 shadow-sm text-sm font-medium rounded-md text-gray-700 bg-white hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500 transition-colors duration-200">
<svg class="h-5 w-5 mr-2 text-[#0A66C2]" viewBox="0 0 24 24" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
<path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z" />
</svg>
Sign in with LinkedIn
</button>
<button type="button" class="w-full inline-flex justify-center items-center px-4 py-2 border border-gray-300 shadow-sm text-sm font-medium rounded-md text-gray-700 bg-white hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500 transition-colors duration-200">
<svg class="h-5 w-5 mr-2" viewBox="0 0 24 24" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
<path d="M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z" />
</svg>
Sign in with GitHub
</button>
</div>
<!-- Divider -->
<div class="relative my-6">
<div class="absolute inset-0 flex items-center">
<div class="w-full border-t border-gray-200"></div>
</div>
<div class="relative flex justify-center text-sm">
<span class="px-2 bg-white text-gray-500">Or continue with</span>
</div>
</div>
<!-- Login Form -->
<form class="space-y-6" action="#" method="POST">
<div>
<label for="email" class="block text-sm font-medium text-gray-700">
Email address
</label>
<div class="mt-1">
<input id="email" name="email" type="email" autocomplete="email" required class="appearance-none block w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm placeholder-gray-400 focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm" placeholder="[email protected]">
</div>
</div>
<div>
<label for="password" class="block text-sm font-medium text-gray-700">
Password
</label>
<div class="mt-1 relative" x-data="{ show: false }">
<input :type="show ? 'text' : 'password'" id="password" name="password" autocomplete="current-password" required class="appearance-none block w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm placeholder-gray-400 focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm" placeholder="••••••••">
<button type="button" @click="show = !show" class="absolute inset-y-0 right-0 pr-3 flex items-center text-gray-400 hover:text-gray-500">
<svg x-show="!show" class="h-5 w-5" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 12a3 3 0 11-6 0 3 3 0 016 0z" />
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z" />
</svg>
<svg x-show="show" class="h-5 w-5" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" style="display: none;">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13.875 18.825A10.05 10.05 0 0112 19c-4.478 0-8.268-2.943-9.543-7a9.97 9.97 0 011.563-3.029m5.858.908a3 3 0 114.243 4.243M9.878 9.878l4.242 4.242M9.88 9.88l-3.29-3.29m7.532 7.532l3.29 3.29M3 3l3.59 3.59m0 0A9.953 9.953 0 0112 5c4.478 0 8.268 2.943 9.543 7a10.025 10.025 0 01-4.132 5.411m0 0L21 21" />
</svg>
</button>
</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">
<label for="remember-me" class="ml-2 block text-sm text-gray-700">
Remember me
</label>
</div>
<div class="text-sm">
<a href="#" class="font-medium text-indigo-600 hover:text-indigo-500">
Forgot your password?
</a>
</div>
</div>
<div>
<button type="submit" class="w-full flex justify-center py-2 px-4 border border-transparent rounded-md shadow-sm text-sm font-medium text-white bg-indigo-600 hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500 transition-colors duration-200">
Sign in
</button>
</div>
</form>
<!-- Sign up link -->
<div class="mt-6 text-center">
<p class="text-sm text-gray-600">
Don't have an account?
<a href="#" class="font-medium text-indigo-600 hover:text-indigo-500">
Sign up for a free trial
</a>
</p>
</div>
</div>
</div>
</section>
<!-- Alpine.js for password visibility toggle -->
<script src="https://unpkg.com/[email protected]/dist/cdn.min.js"></script>
This is a Pro component
Access the full component collection
Get all premium components and focus on building your business
Only 50 early bird spots left 40% offUnlock for $29
(one-time payment)Early bird discount. Regular price $49
Premium components
Get access to all pro Tailwind CSS components. New ones added monthly
Save components
Save your favorite components to your account
Unlimited usage
Use components as often as you want
Landing page submissions
(Coming soon) (2025. 09.)
Get your landing pages featured on LandingGo and earn a
strong backlink
17 DR dofollow backlink from the main page