diff --git a/apps/admin/src/App.tsx b/apps/admin/src/App.tsx
index ad9aacd..e37c0b2 100644
--- a/apps/admin/src/App.tsx
+++ b/apps/admin/src/App.tsx
@@ -47,6 +47,12 @@ import ProductAttributesPage from './pages/ProductAttributesPage'
import TiktokPriceSimulatorPage from './pages/TiktokPriceSimulatorPage'
import TiktokShopCasePage from './pages/TiktokShopCasePage'
import ShopeeShopCasePage from './pages/ShopeeShopCasePage'
+import BackupDashboardPage from './pages/backup/BackupDashboardPage'
+import BackupDatabasePage from './pages/backup/BackupDatabasePage'
+import BackupCatalogPage from './pages/backup/BackupCatalogPage'
+import BackupOrdersPage from './pages/backup/BackupOrdersPage'
+import BackupCmsPage from './pages/backup/BackupCmsPage'
+import BackupMediaPage from './pages/backup/BackupMediaPage'
function App() {
return (
@@ -105,6 +111,13 @@ function App() {
} />
} />
} />
+ {/* Backup & Restore */}
+ } />
+ } />
+ } />
+ } />
+ } />
+ } />
diff --git a/apps/admin/src/components/Sidebar.tsx b/apps/admin/src/components/Sidebar.tsx
index 7d60d14..03a33e7 100644
--- a/apps/admin/src/components/Sidebar.tsx
+++ b/apps/admin/src/components/Sidebar.tsx
@@ -30,6 +30,9 @@ import {
Calculator,
Info,
ChevronLeft,
+ DatabaseBackup,
+ FileJson,
+ FolderArchive,
} from 'lucide-react'
const MAIN_MENU = [
@@ -96,6 +99,14 @@ const MENU_MANAGER_MENU = [
{ icon: Store, label: 'Footer Brand', to: '/menu-manager/footer-brand' },
]
+const BACKUP_MENU = [
+ { icon: DatabaseBackup, label: 'Database Backup', to: '/backup/database' },
+ { icon: Package, label: 'Catalog Export', to: '/backup/catalog' },
+ { icon: ShoppingCart, label: 'Orders Export', to: '/backup/orders' },
+ { icon: FileJson, label: 'CMS Export', to: '/backup/cms' },
+ { icon: FolderArchive, label: 'Media Files', to: '/backup/media' },
+]
+
const SETTINGS_MENU = [
{ icon: Store, label: 'Store Settings', to: '/settings' },
{ icon: CreditCard, label: 'Payment & Shipping',to: '/settings/payments' },
@@ -121,6 +132,7 @@ export default function Sidebar({ isCollapsed, onToggle }: SidebarProps) {
const isInCms = ['/page-builder', '/cms-mockup', '/media', '/articles'].some(p => location.pathname.startsWith(p))
const isInCustomer = ['/customers', '/subscribers', '/contacts'].some(p => location.pathname.startsWith(p))
const isInMenuManager = location.pathname.startsWith('/menu-manager')
+ const isInBackup = location.pathname.startsWith('/backup')
const isInSettings = location.pathname.startsWith('/settings')
const [productOpen, setProductOpen] = useState(isInProduct)
@@ -132,6 +144,7 @@ export default function Sidebar({ isCollapsed, onToggle }: SidebarProps) {
const [cmsOpen, setCmsOpen] = useState(isInCms)
const [customerOpen, setCustomerOpen] = useState(isInCustomer)
const [menuManagerOpen, setMenuManagerOpen] = useState(isInMenuManager)
+ const [backupOpen, setBackupOpen] = useState(isInBackup)
const [settingsOpen, setSettingsOpen] = useState(isInSettings)
const handleLogout = () => {
@@ -455,6 +468,36 @@ export default function Sidebar({ isCollapsed, onToggle }: SidebarProps) {
)}
+ {/* Backup & Restore Group */}
+
+
+
+ {!isCollapsed && backupOpen && (
+
+ {BACKUP_MENU.map((item) => (
+
+ `sidebar-link text-sm ${isActive ? 'sidebar-link-active' : 'sidebar-link-inactive'}`
+ }
+ >
+
+ {item.label}
+
+ ))}
+
+ )}
+
+
{/* Settings Group */}