diff --git a/src/App.tsx b/src/App.tsx
index 0f012e4..710909c 100644
--- a/src/App.tsx
+++ b/src/App.tsx
@@ -31,6 +31,18 @@ import AdminUserFormPage from './pages/admin-users/admin-user-form/AdminUserForm
import PermissionsListPage from './pages/permissions/permissions-list/PermissionsListPage';
import PermissionFormPage from './pages/permissions/permission-form/PermissionFormPage';
+// Product Options Pages
+import ProductOptionsListPage from './pages/product-options/product-options-list/ProductOptionsListPage';
+import ProductOptionFormPage from './pages/product-options/product-option-form/ProductOptionFormPage';
+
+// Categories Pages
+import CategoriesListPage from './pages/categories/categories-list/CategoriesListPage';
+import CategoryFormPage from './pages/categories/category-form/CategoryFormPage';
+
+// Products Pages
+import ProductsListPage from './pages/products/products-list/ProductsListPage';
+import ProductFormPage from './pages/products/product-form/ProductFormPage';
+
const ProtectedRoute = ({ children }: { children: any }) => {
const { user, isLoading } = useAuth();
@@ -56,7 +68,7 @@ const AppRoutes = () => {
}>
} />
} />
- } />
+ } />
} />
} />
} />
@@ -77,6 +89,20 @@ const AppRoutes = () => {
} />
} />
} />
+
+ {/* Product Options Routes */}
+ } />
+ } />
+ } />
+
+ {/* Categories Routes */}
+ } />
+ } />
+ } />
+
+ {/* Products Routes */}
+ } />
+ } />
);
diff --git a/src/components/layout/Sidebar.tsx b/src/components/layout/Sidebar.tsx
index a4e95bc..9363c9e 100644
--- a/src/components/layout/Sidebar.tsx
+++ b/src/components/layout/Sidebar.tsx
@@ -8,7 +8,10 @@ import {
Key,
LogOut,
ChevronDown,
- ChevronRight
+ ChevronRight,
+ Package,
+ FolderOpen,
+ Sliders
} from 'lucide-react';
import { useAuth } from '../../contexts/AuthContext';
import { PermissionWrapper } from '../common/PermissionWrapper';
@@ -27,6 +30,27 @@ const menuItems: MenuItem[] = [
icon: Home,
path: '/',
},
+ {
+ title: 'مدیریت محصولات',
+ icon: Package,
+ children: [
+ {
+ title: 'محصولات',
+ icon: Package,
+ path: '/products',
+ },
+ {
+ title: 'دستهبندیها',
+ icon: FolderOpen,
+ path: '/categories',
+ },
+ {
+ title: 'گزینههای محصول',
+ icon: Sliders,
+ path: '/product-options',
+ },
+ ]
+ },
{
title: 'مدیریت سیستم',
icon: Settings,
@@ -55,7 +79,7 @@ const menuItems: MenuItem[] = [
export const Sidebar = () => {
const { user, logout, hasPermission } = useAuth();
- const [expandedItems, setExpandedItems] = React.useState(['مدیریت سیستم']);
+ const [expandedItems, setExpandedItems] = React.useState(['مدیریت محصولات', 'مدیریت سیستم']);
const toggleExpanded = (title: string) => {
setExpandedItems(prev =>
diff --git a/src/constant/routes.ts b/src/constant/routes.ts
index 9e3b9c3..d4b2e15 100644
--- a/src/constant/routes.ts
+++ b/src/constant/routes.ts
@@ -35,4 +35,45 @@ export const API_ROUTES = {
CREATE_PERMISSION: "api/v1/admin/permissions",
UPDATE_PERMISSION: (id: string) => `api/v1/admin/permissions/${id}`,
DELETE_PERMISSION: (id: string) => `api/v1/admin/permissions/${id}`,
+
+ // Product Options APIs
+ GET_PRODUCT_OPTIONS: "api/v1/product-options",
+ GET_PRODUCT_OPTION: (id: string) => `api/v1/product-options/${id}`,
+ CREATE_PRODUCT_OPTION: "api/v1/products/options",
+ UPDATE_PRODUCT_OPTION: (id: string) => `api/v1/products/options/${id}`,
+ DELETE_PRODUCT_OPTION: (id: string) => `api/v1/product-options/${id}`,
+
+ // Categories APIs
+ GET_CATEGORIES: "api/v1/products/categories",
+ GET_CATEGORY: (id: string) => `api/v1/products/categories/${id}`,
+ CREATE_CATEGORY: "api/v1/products/categories",
+ UPDATE_CATEGORY: (id: string) => `api/v1/products/categories/${id}`,
+ DELETE_CATEGORY: (id: string) => `api/v1/products/categories/${id}`,
+
+ // Products APIs
+ GET_PRODUCTS: "api/v1/products",
+ GET_PRODUCT: (id: string) => `api/v1/products/${id}`,
+ CREATE_PRODUCT: "api/v1/products",
+ UPDATE_PRODUCT: (id: string) => `api/v1/products/${id}`,
+ DELETE_PRODUCT: (id: string) => `api/v1/products/${id}`,
+ GET_PRODUCT_VARIANTS: (id: string) => `api/v1/products/${id}/variants`,
+ CREATE_PRODUCT_VARIANT: (id: string) => `api/v1/products/${id}/variants`,
+ UPDATE_PRODUCT_VARIANT: (variantId: string) =>
+ `api/v1/products/variants/${variantId}`,
+ DELETE_PRODUCT_VARIANT: (variantId: string) =>
+ `api/v1/products/variants/${variantId}`,
+
+ // Files APIs
+ GET_FILES: "api/v1/admin/files",
+ UPLOAD_FILE: "api/v1/admin/files",
+ GET_FILE: (id: string) => `api/v1/admin/files/${id}`,
+ UPDATE_FILE: (id: string) => `api/v1/admin/files/${id}`,
+ DELETE_FILE: (id: string) => `api/v1/admin/files/${id}`,
+ DOWNLOAD_FILE: (serveKey: string) => `api/v1/files/${serveKey}`,
+
+ // Images APIs
+ GET_IMAGES: "api/v1/images",
+ CREATE_IMAGE: "api/v1/images",
+ UPDATE_IMAGE: (imageId: string) => `api/v1/products/images/${imageId}`,
+ DELETE_IMAGE: (imageId: string) => `api/v1/products/images/${imageId}`,
};
diff --git a/src/utils/query-key.ts b/src/utils/query-key.ts
index 78aa6e9..0cd271d 100644
--- a/src/utils/query-key.ts
+++ b/src/utils/query-key.ts
@@ -29,4 +29,42 @@ export const QUERY_KEYS = {
CREATE_PERMISSION: "create_permission",
UPDATE_PERMISSION: "update_permission",
DELETE_PERMISSION: "delete_permission",
+
+ // Product Options
+ GET_PRODUCT_OPTIONS: "get_product_options",
+ GET_PRODUCT_OPTION: "get_product_option",
+ CREATE_PRODUCT_OPTION: "create_product_option",
+ UPDATE_PRODUCT_OPTION: "update_product_option",
+ DELETE_PRODUCT_OPTION: "delete_product_option",
+
+ // Categories
+ GET_CATEGORIES: "get_categories",
+ GET_CATEGORY: "get_category",
+ CREATE_CATEGORY: "create_category",
+ UPDATE_CATEGORY: "update_category",
+ DELETE_CATEGORY: "delete_category",
+
+ // Products
+ GET_PRODUCTS: "get_products",
+ GET_PRODUCT: "get_product",
+ CREATE_PRODUCT: "create_product",
+ UPDATE_PRODUCT: "update_product",
+ DELETE_PRODUCT: "delete_product",
+ GET_PRODUCT_VARIANTS: "get_product_variants",
+ CREATE_PRODUCT_VARIANT: "create_product_variant",
+ UPDATE_PRODUCT_VARIANT: "update_product_variant",
+ DELETE_PRODUCT_VARIANT: "delete_product_variant",
+
+ // Files
+ GET_FILES: "get_files",
+ UPLOAD_FILE: "upload_file",
+ GET_FILE: "get_file",
+ UPDATE_FILE: "update_file",
+ DELETE_FILE: "delete_file",
+
+ // Images
+ GET_IMAGES: "get_images",
+ CREATE_IMAGE: "create_image",
+ UPDATE_IMAGE: "update_image",
+ DELETE_IMAGE: "delete_image",
};