import { createRouter, createWebHistory } from 'vue-router' const router = createRouter({ history: createWebHistory(), routes: [ { path: '/admin', redirect: '/admin/dashboard' }, { path: '/', name: 'home', component: () => import('@/views/public/HomeView.vue') }, { path: '/login', name: 'login', component: () => import('@/views/account/LoginView.vue') }, { path: '/listings', name: 'listings', component: () => import('@/views/public/ListingsView.vue') }, { path: '/listings/:id', name: 'listing-detail', component: () => import('@/views/public/ListingDetailView.vue') }, { path: '/orders/create', name: 'order-create', component: () => import('@/views/account/OrderCreateView.vue') }, { path: '/orders', name: 'orders', component: () => import('@/views/account/OrdersView.vue') }, { path: '/orders/:id', name: 'order-detail', component: () => import('@/views/account/OrderDetailView.vue') }, { path: '/wallet', name: 'wallet', component: () => import('@/views/account/WalletView.vue') }, { path: '/notifications', name: 'notifications', component: () => import('@/views/account/NotificationsView.vue') }, { path: '/realname', name: 'realname', component: () => import('@/views/account/RealnameView.vue') }, { path: '/seller/listings', name: 'seller-listings', component: () => import('@/views/seller/SellerListingsView.vue') }, { path: '/seller/listings/create', name: 'seller-listing-create', component: () => import('@/views/seller/SellerListingCreateView.vue') }, { path: '/seller/handoffs', name: 'seller-handoffs', component: () => import('@/views/seller/SellerHandoffsView.vue') }, { path: '/seller/earnings', name: 'seller-earnings', component: () => import('@/views/seller/SellerEarningsView.vue') }, { path: '/admin/login', name: 'admin-login', component: () => import('@/views/admin/AdminLoginView.vue'), meta: { layout: 'blank' } }, { path: '/admin/dashboard', name: 'admin-dashboard', component: () => import('@/views/admin/AdminDashboardView.vue'), meta: { layout: 'admin', requiresAdmin: true }, }, { path: '/admin/users', name: 'admin-users', component: () => import('@/views/admin/AdminUsersView.vue'), meta: { layout: 'admin', requiresAdmin: true }, }, { path: '/admin/orders', name: 'admin-orders', component: () => import('@/views/admin/AdminOrdersView.vue'), meta: { layout: 'admin', requiresAdmin: true }, }, { path: '/admin/orders/:id', name: 'admin-order-detail', component: () => import('@/views/admin/AdminOrderDetailView.vue'), meta: { layout: 'admin', requiresAdmin: true }, }, { path: '/admin/listings', name: 'admin-listings', component: () => import('@/views/admin/AdminListingsView.vue'), meta: { layout: 'admin', requiresAdmin: true }, }, { path: '/admin/listings/review', name: 'admin-listing-review', component: () => import('@/views/admin/AdminListingReviewView.vue'), meta: { layout: 'admin', requiresAdmin: true }, }, { path: '/admin/disputes', name: 'admin-disputes', component: () => import('@/views/admin/AdminDisputesView.vue'), meta: { layout: 'admin', requiresAdmin: true }, }, { path: '/admin/wallet-ledger', name: 'admin-wallet-ledger', component: () => import('@/views/admin/AdminWalletLedgerView.vue'), meta: { layout: 'admin', requiresAdmin: true }, }, { path: '/admin/system-configs', name: 'admin-system-configs', component: () => import('@/views/admin/AdminSystemConfigsView.vue'), meta: { layout: 'admin', requiresAdmin: true }, }, { path: '/admin/audit-logs', name: 'admin-audit-logs', component: () => import('@/views/admin/AdminAuditLogsView.vue'), meta: { layout: 'admin', requiresAdmin: true }, }, ], }) router.beforeEach((to) => { if (to.path === '/admin/login' && localStorage.getItem('admin_access_token')) { return '/admin/dashboard' } if (to.meta.requiresAdmin) { const token = localStorage.getItem('admin_access_token') if (!token) { return '/admin/login' } } return true }) export default router