-
@@ -15,17 +15,17 @@
+ class="no-underline text-current block group p-8 bg-white dark:bg-gray-900 border border-gray-200 dark:border-gray-800 rounded-2xl shadow-sm hover:shadow-xl hover:-translate-y-1 transition-all duration-300">
🔐
- Access Portal
+ Access Portal
Sign in to manage your personalized dashboard and academic
data.
+ class="no-underline text-current block group p-8 bg-white dark:bg-gray-900 border border-gray-200 dark:border-gray-800 rounded-2xl shadow-sm hover:shadow-xl hover:-translate-y-1 transition-all duration-300">
🛠️
- System Test
+ System Test
Verify API connections and authentication state
persistence.
@@ -36,8 +36,8 @@
-
-
+
+
System Operational
diff --git a/app/pages/profile/index.vue b/app/pages/profile/index.vue
index a0fb397..5ececc7 100644
--- a/app/pages/profile/index.vue
+++ b/app/pages/profile/index.vue
@@ -1,5 +1,5 @@
- Profile - {{user.name}}
+ Profile - {{ user.name }}
@@ -13,11 +13,10 @@
+ class="h-full w-full object-cover transition-transform hover:scale-105">
-
+ :class="user.isActive ? 'bg-emerald-500' : 'bg-gray-400'" title="Online Status" />
{{ user.name }}
@@ -139,7 +138,7 @@
class="mt-4 pt-4 border-t border-slate-50 flex flex-wrap items-center gap-4 text-xs font-medium z-10 relative">
-
+
{{ pub.field }}
diff --git a/app/pages/profile/update-password.vue b/app/pages/profile/update-password.vue
new file mode 100644
index 0000000..b459690
--- /dev/null
+++ b/app/pages/profile/update-password.vue
@@ -0,0 +1,108 @@
+
+
+
+
+
+
+
+
Password Update
+
Please update your password to
+ secure your account.
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/stores/notification-store.js b/app/stores/notification-store.js
new file mode 100644
index 0000000..d7373c2
--- /dev/null
+++ b/app/stores/notification-store.js
@@ -0,0 +1,22 @@
+import { defineStore } from 'pinia'
+
+export const useNotificationStore = defineStore('notifications', {
+ state: () => ({
+ notifications: []
+ }),
+ actions: {
+ add(message, type = 'success', duration = 3000) {
+ const id = Date.now()
+ this.notifications.push({ id, message, type })
+
+ setTimeout(() => {
+ this.remove(id)
+ }, duration)
+ },
+ remove(id) {
+ this.notifications = this.notifications.filter(n => n.id !== id)
+ },
+ error(msg) { this.add(msg, 'error') },
+ success(msg) { this.add(msg, 'success') }
+ }
+})
\ No newline at end of file