Add Black Friday Dashboard
This commit is contained in:
8
inventory/package-lock.json
generated
8
inventory/package-lock.json
generated
@@ -84,6 +84,7 @@
|
|||||||
"@eslint/js": "^9.17.0",
|
"@eslint/js": "^9.17.0",
|
||||||
"@types/fs-extra": "^11.0.4",
|
"@types/fs-extra": "^11.0.4",
|
||||||
"@types/lodash": "^4.17.15",
|
"@types/lodash": "^4.17.15",
|
||||||
|
"@types/luxon": "^3.7.1",
|
||||||
"@types/node": "^22.10.5",
|
"@types/node": "^22.10.5",
|
||||||
"@types/react": "^18.3.18",
|
"@types/react": "^18.3.18",
|
||||||
"@types/react-dom": "^18.3.5",
|
"@types/react-dom": "^18.3.5",
|
||||||
@@ -3153,6 +3154,13 @@
|
|||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
|
"node_modules/@types/luxon": {
|
||||||
|
"version": "3.7.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/luxon/-/luxon-3.7.1.tgz",
|
||||||
|
"integrity": "sha512-H3iskjFIAn5SlJU7OuxUmTEpebK6TKB8rxZShDslBMZJ5u9S//KM1sbdAisiSrqwLQncVjnpi2OK2J51h+4lsg==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
"node_modules/@types/node": {
|
"node_modules/@types/node": {
|
||||||
"version": "22.13.4",
|
"version": "22.13.4",
|
||||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.4.tgz",
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.4.tgz",
|
||||||
|
|||||||
@@ -87,6 +87,7 @@
|
|||||||
"@eslint/js": "^9.17.0",
|
"@eslint/js": "^9.17.0",
|
||||||
"@types/fs-extra": "^11.0.4",
|
"@types/fs-extra": "^11.0.4",
|
||||||
"@types/lodash": "^4.17.15",
|
"@types/lodash": "^4.17.15",
|
||||||
|
"@types/luxon": "^3.7.1",
|
||||||
"@types/node": "^22.10.5",
|
"@types/node": "^22.10.5",
|
||||||
"@types/react": "^18.3.18",
|
"@types/react": "^18.3.18",
|
||||||
"@types/react-dom": "^18.3.5",
|
"@types/react-dom": "^18.3.5",
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ const Vendors = lazy(() => import('./pages/Vendors'));
|
|||||||
const Categories = lazy(() => import('./pages/Categories'));
|
const Categories = lazy(() => import('./pages/Categories'));
|
||||||
const Brands = lazy(() => import('./pages/Brands'));
|
const Brands = lazy(() => import('./pages/Brands'));
|
||||||
const PurchaseOrders = lazy(() => import('./pages/PurchaseOrders'));
|
const PurchaseOrders = lazy(() => import('./pages/PurchaseOrders'));
|
||||||
|
const BlackFridayDashboard = lazy(() => import('./pages/BlackFridayDashboard'));
|
||||||
|
|
||||||
// 2. Dashboard app - separate chunk
|
// 2. Dashboard app - separate chunk
|
||||||
const Dashboard = lazy(() => import('./pages/Dashboard'));
|
const Dashboard = lazy(() => import('./pages/Dashboard'));
|
||||||
@@ -210,6 +211,13 @@ function App() {
|
|||||||
</Suspense>
|
</Suspense>
|
||||||
</Protected>
|
</Protected>
|
||||||
} />
|
} />
|
||||||
|
<Route path="/dashboard/black-friday" element={
|
||||||
|
<Protected page="black_friday_dashboard">
|
||||||
|
<Suspense fallback={<PageLoading />}>
|
||||||
|
<BlackFridayDashboard />
|
||||||
|
</Suspense>
|
||||||
|
</Protected>
|
||||||
|
} />
|
||||||
|
|
||||||
<Route path="*" element={<Navigate to="/" replace />} />
|
<Route path="*" element={<Navigate to="/" replace />} />
|
||||||
</Route>
|
</Route>
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import { AuthContext } from "@/contexts/AuthContext";
|
|||||||
// Dashboard is first so users with dashboard access default to it
|
// Dashboard is first so users with dashboard access default to it
|
||||||
const PAGES = [
|
const PAGES = [
|
||||||
{ path: "/dashboard", permission: "access:dashboard" },
|
{ path: "/dashboard", permission: "access:dashboard" },
|
||||||
|
{ path: "/dashboard/black-friday", permission: "access:black_friday_dashboard" },
|
||||||
{ path: "/overview", permission: "access:overview" },
|
{ path: "/overview", permission: "access:overview" },
|
||||||
{ path: "/products", permission: "access:products" },
|
{ path: "/products", permission: "access:products" },
|
||||||
{ path: "/categories", permission: "access:categories" },
|
{ path: "/categories", permission: "access:categories" },
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ import {
|
|||||||
LayoutDashboard,
|
LayoutDashboard,
|
||||||
Percent,
|
Percent,
|
||||||
FileSearch,
|
FileSearch,
|
||||||
|
ShoppingCart,
|
||||||
} from "lucide-react";
|
} from "lucide-react";
|
||||||
import { IconCrystalBall } from "@tabler/icons-react";
|
import { IconCrystalBall } from "@tabler/icons-react";
|
||||||
import {
|
import {
|
||||||
@@ -40,6 +41,12 @@ const dashboardItems = [
|
|||||||
icon: LayoutDashboard,
|
icon: LayoutDashboard,
|
||||||
url: "/dashboard",
|
url: "/dashboard",
|
||||||
permission: "access:dashboard"
|
permission: "access:dashboard"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "Black Friday",
|
||||||
|
icon: ShoppingCart,
|
||||||
|
url: "/dashboard/black-friday",
|
||||||
|
permission: "access:black_friday_dashboard"
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|||||||
1385
inventory/src/pages/BlackFridayDashboard.tsx
Normal file
1385
inventory/src/pages/BlackFridayDashboard.tsx
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user