124 lines
7.8 KiB
PHP
124 lines
7.8 KiB
PHP
<!DOCTYPE html>
|
|
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<meta name="csrf-token" content="{{ csrf_token() }}">
|
|
<title>{{ config('app.name', 'Laravel') }}</title>
|
|
<!-- Fonts -->
|
|
<link rel="preconnect" href="https://fonts.bunny.net">
|
|
<link href="https://fonts.bunny.net/css?family=inter:400,500,600,700&display=swap" rel="stylesheet" />
|
|
<script>
|
|
// Dark mode
|
|
const html = document.querySelector('html');
|
|
const isLightOrAuto = localStorage.getItem('hs_theme') === 'light' || (localStorage.getItem('hs_theme') !== 'dark' && !window.matchMedia('(prefers-color-scheme: dark)').matches);
|
|
const isDarkOrAuto = localStorage.getItem('hs_theme') === 'dark' || (localStorage.getItem('hs_theme') !== 'light' && window.matchMedia('(prefers-color-scheme: dark)').matches);
|
|
|
|
if (isLightOrAuto && html.classList.contains('dark')) html.classList.remove('dark');
|
|
else if (isDarkOrAuto && html.classList.contains('light')) html.classList.remove('light');
|
|
else if (isDarkOrAuto && !html.classList.contains('dark')) html.classList.add('dark');
|
|
else if (isLightOrAuto && !html.classList.contains('light')) html.classList.add('light');
|
|
</script>
|
|
@vite(['resources/css/app.css', 'resources/js/app.js'])
|
|
</head>
|
|
<body class="font-sans antialiased bg-white dark:bg-slate-900">
|
|
<div class="flex h-screen">
|
|
<!-- Sidebar - Image Section -->
|
|
<div class="hidden md:flex md:w-1/2 lg:w-3/5 bg-gray-50 border-r border-gray-200 dark:bg-slate-800 dark:border-slate-700 justify-center items-center relative overflow-hidden">
|
|
<!-- Background Pattern or Gradient -->
|
|
<div class="absolute inset-0 bg-gradient-to-tr from-blue-600 to-purple-500 opacity-90 dark:from-blue-900 dark:to-purple-900"></div>
|
|
|
|
<div class="relative z-10 text-center px-6">
|
|
<h2 class="text-3xl font-bold text-white sm:text-4xl">
|
|
{{ config('app.name', 'Star Cloud') }}
|
|
</h2>
|
|
<p class="mt-3 text-lg text-blue-100">
|
|
智能販賣機管理平台
|
|
</p>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Main Content - Login Form -->
|
|
<div class="w-full md:w-1/2 lg:w-2/5 flex flex-col justify-center px-4 sm:px-6 md:px-8 lg:px-10 py-8">
|
|
<div class="max-w-md w-full mx-auto">
|
|
<div class="text-center mb-8">
|
|
<h1 class="block text-2xl font-bold text-gray-800 dark:text-white">登入</h1>
|
|
<p class="mt-2 text-sm text-gray-600 dark:text-gray-400">
|
|
請輸入您的帳號密碼以繼續
|
|
</p>
|
|
</div>
|
|
|
|
<!-- Session Status -->
|
|
@if (session('status'))
|
|
<div class="mb-4 text-sm font-medium text-green-600">
|
|
{{ session('status') }}
|
|
</div>
|
|
@endif
|
|
|
|
<form method="POST" action="{{ route('login') }}">
|
|
@csrf
|
|
|
|
<div class="grid gap-y-4">
|
|
<!-- Form Group -->
|
|
<div>
|
|
<label for="username" class="block text-sm mb-2 dark:text-white">帳號</label>
|
|
<div class="relative">
|
|
<input type="text" id="username" name="username" value="{{ old('username') }}" class="py-3 px-4 block w-full border-gray-200 rounded-lg text-sm focus:border-blue-500 focus:ring-blue-500 disabled:opacity-50 disabled:pointer-events-none dark:bg-slate-900 dark:border-slate-700 dark:text-gray-400 dark:focus:ring-gray-600" required autofocus autocomplete="username">
|
|
<div class="hidden absolute inset-y-0 end-0 flex items-center pointer-events-none pe-3">
|
|
<svg class="h-5 w-5 text-red-500" width="16" height="16" fill="currentColor" viewBox="0 0 16 16" aria-hidden="true">
|
|
<path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0zM8 4a.905.905 0 0 0-.9.995l.35 3.507a.552.552 0 0 0 1.1 0l.35-3.507A.905.905 0 0 0 8 4zm.002 6a1 1 0 1 0 0 2 1 1 0 0 0 0-2z"/>
|
|
</svg>
|
|
</div>
|
|
</div>
|
|
@if ($errors->get('username'))
|
|
<p class="text-xs text-red-600 mt-2" id="username-error">{{ $errors->first('username') }}</p>
|
|
@endif
|
|
</div>
|
|
<!-- End Form Group -->
|
|
|
|
<!-- Form Group -->
|
|
<div>
|
|
<div class="flex justify-between items-center">
|
|
<label for="password" class="block text-sm mb-2 dark:text-white">密碼</label>
|
|
@if (Route::has('password.request'))
|
|
<a class="text-sm text-blue-600 decoration-2 hover:underline font-medium dark:text-blue-500" href="{{ route('password.request') }}">
|
|
忘記密碼?
|
|
</a>
|
|
@endif
|
|
</div>
|
|
<div class="relative">
|
|
<input type="password" id="password" name="password" class="py-3 px-4 block w-full border-gray-200 rounded-lg text-sm focus:border-blue-500 focus:ring-blue-500 disabled:opacity-50 disabled:pointer-events-none dark:bg-slate-900 dark:border-slate-700 dark:text-gray-400 dark:focus:ring-gray-600" required autocomplete="current-password">
|
|
<div class="hidden absolute inset-y-0 end-0 flex items-center pointer-events-none pe-3">
|
|
<svg class="h-5 w-5 text-red-500" width="16" height="16" fill="currentColor" viewBox="0 0 16 16" aria-hidden="true">
|
|
<path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0zM8 4a.905.905 0 0 0-.9.995l.35 3.507a.552.552 0 0 0 1.1 0l.35-3.507A.905.905 0 0 0 8 4zm.002 6a1 1 0 1 0 0 2 1 1 0 0 0 0-2z"/>
|
|
</svg>
|
|
</div>
|
|
</div>
|
|
@if ($errors->get('password'))
|
|
<p class="text-xs text-red-600 mt-2" id="password-error">{{ $errors->first('password') }}</p>
|
|
@endif
|
|
</div>
|
|
<!-- End Form Group -->
|
|
|
|
<!-- Checkbox -->
|
|
<div class="flex items-center">
|
|
<div class="flex">
|
|
<input id="remember-me" name="remember" type="checkbox" class="shrink-0 mt-0.5 border-gray-200 rounded text-blue-600 focus:ring-blue-500 dark:bg-gray-800 dark:border-gray-700 dark:checked:bg-blue-500 dark:checked:border-blue-500 dark:focus:ring-offset-gray-800">
|
|
</div>
|
|
<div class="ms-3">
|
|
<label for="remember-me" class="text-sm dark:text-white">記住我</label>
|
|
</div>
|
|
</div>
|
|
<!-- End Checkbox -->
|
|
|
|
<button type="submit" class="w-full py-3 px-4 inline-flex justify-center items-center gap-x-2 text-sm font-semibold rounded-lg border border-transparent bg-blue-600 text-white hover:bg-blue-700 disabled:opacity-50 disabled:pointer-events-none dark:focus:outline-none dark:focus:ring-1 dark:focus:ring-gray-600">
|
|
登入
|
|
</button>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</body>
|
|
</html>
|