LoginView.vue 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. <template>
  2. <div class="min-h-screen flex bg-gradient-to-b from-white to-purple-500">
  3. <div class="w-full flex flex-col items-center justify-center p-8">
  4. <div class="max-w-md w-full mx-auto mt-8">
  5. <div class="mb-8">
  6. <h2 class="text-3xl font-semibold text-gray-800 mb-2">Login</h2>
  7. <p class="text-gray-500">Welcome back!</p>
  8. </div>
  9. <form @submit.prevent="handleLogin" class="space-y-6">
  10. <div>
  11. <label for="username" class="block text-gray-700">Username</label>
  12. <input
  13. type="text"
  14. id="username"
  15. v-model="username"
  16. placeholder="Enter your username"
  17. class="w-full px-4 py-3 rounded-lg bg-gray-100 border border-gray-300 text-gray-700 focus:outline-none focus:border-purple-500"
  18. />
  19. </div>
  20. <div>
  21. <label for="password" class="block text-gray-700">Password</label>
  22. <input
  23. type="password"
  24. id="password"
  25. v-model="password"
  26. placeholder="Enter your password"
  27. class="w-full px-4 py-3 rounded-lg bg-gray-100 border border-gray-300 text-gray-700 focus:outline-none focus:border-purple-500"
  28. />
  29. </div>
  30. <div class="flex items-center justify-between">
  31. <div class="flex items-center">
  32. <input
  33. type="checkbox"
  34. id="remember"
  35. v-model="rememberMe"
  36. class="w-4 h-4 rounded border-gray-300 bg-gray-100 text-purple-500 focus:ring-purple-500"
  37. />
  38. <label for="remember" class="ml-2 text-gray-500">Remember me</label>
  39. </div>
  40. <a href="#" class="text-purple-500 hover:text-purple-600">Forgot password?</a>
  41. </div>
  42. <button
  43. type="submit"
  44. class="w-full py-3 rounded-lg bg-purple-500 hover:bg-purple-600 text-white font-medium transition-colors"
  45. >
  46. Login
  47. </button>
  48. <div class="mt-4">
  49. <label for="language" class="block text-gray-700">Language</label>
  50. <select
  51. id="language"
  52. v-model="language"
  53. class="w-full px-4 py-3 rounded-lg bg-gray-100 border border-gray-300 text-gray-700 focus:outline-none focus:border-purple-500"
  54. >
  55. <option value="en">English</option>
  56. <option value="es">Español</option>
  57. <option value="fr">Français</option>
  58. </select>
  59. </div>
  60. </form>
  61. </div>
  62. </div>
  63. </div>
  64. </template>
  65. <script setup>
  66. import { ref } from 'vue'
  67. import { useRouter } from 'vue-router'
  68. const router = useRouter()
  69. const username = ref('')
  70. const password = ref('')
  71. const rememberMe = ref(false)
  72. const language = ref('en')
  73. const handleLogin = () => {
  74. if (username.value === 'admin' && password.value === 'admin') {
  75. router.push('/portal')
  76. } else {
  77. alert('Invalid username or password')
  78. }
  79. }
  80. </script>