LoginView.vue 2.9 KB

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