Skip to content

Commit 796c363

Browse files
Refactor Member and Organisation Layouts
- Removed the OrganisationLayout component and its associated files. - Created a new MemberLayout component with Sidebar, Header, and MobileSidebar. - Implemented NavItem component for navigation links in the sidebar. - Added DashboardPage and related types for the Member dashboard. - Updated routes to include new Member and Organisation routes. - Refactored sidebar items and layout structure for better organization and maintainability.
1 parent ee397c0 commit 796c363

31 files changed

Lines changed: 202 additions & 228 deletions

src/App.tsx

Lines changed: 9 additions & 186 deletions
Original file line numberDiff line numberDiff line change
@@ -1,55 +1,15 @@
11
import { useEffect } from "react";
22

3-
import { BrowserRouter, Route, Routes } from "react-router-dom";
3+
import { BrowserRouter } from "react-router-dom";
44

55
import "./App.css";
66

7-
8-
9-
import DashboardPage from "./features/Member/v1/Pages/DashboardPage";
10-
11-
import MemberPage from "./features/Member/v1/Pages/MemberPage";
12-
13-
import MemberLayout from "./layouts/MemberLayout";
14-
15-
import AddMemberPage from "./features/AddMember/v1/Page/AddMemberPage";
16-
17-
import CreateNewEvent from "./features/Events/v1/Pages/CreateNewEvent";
18-
19-
import Contact from "./features/Contact_And_Support/v1/Pages/Contact";
20-
21-
import ViewEvent from "./features/Events/v1/Pages/ViewEvent";
22-
import LoginPage from "./features/Auth/v1/Pages/LoginPage";
23-
24-
import SignUpPage from "./features/Auth/v1/Pages/SignUpPage";
25-
26-
import AnalyticsPage from "./features/Member/v1/Pages/Analytics";
27-
28-
import NotificationsPage from "./features/Member/v1/Pages/Notifications";
29-
30-
import SettingsPage from "./features/Member/v1/Pages/Settings";
31-
32-
import TasksPage from "./features/Member/v1/Pages/Tasks";
33-
34-
import TeamsPage from "./features/Member/v1/Pages/Teams";
35-
36-
import WorkspacePage from "./features/Member/v1/Pages/WorkSpace";
37-
38-
import MessagesPage from "./features/Member/v1/Pages/Messages";
39-
40-
import BillingPage from "./features/Member/v1/Pages/Billing";
41-
import { dashboardData } from "./features/member/mock/dashboardData";
7+
import { dashboardData } from "./features/Member/v1/mock/dashboardData";
428
import { startAutoUpdater } from "./system/updater/autoUpdater";
439

44-
import ProtectedRoute from "./routes/ProtectedRoute";
45-
4610
import { ThemeProvider } from "next-themes";
47-
48-
import Organisation_Template from "./features/template/LoginUserTemplate";
49-
import DashBoardPage from "./features/Dashboard/Organisation/v1/Pages/DashBoardPage";
50-
51-
52-
11+
import OrgRoute from "./routes/OrgRoute";
12+
import MemberRoutes from "./routes/MemberRoutes";
5313

5414
function App() {
5515
useEffect(() => {
@@ -60,151 +20,14 @@ function App() {
6020

6121
return (
6222
<ThemeProvider attribute="class" defaultTheme="light">
23+
<BrowserRouter>
6324

64-
<BrowserRouter>
65-
<Routes>
66-
{/* Public Routes */}
67-
<Route path="/" element={<LoginPage />} />
68-
69-
<Route path="/signup" element={<SignUpPage />} />
70-
71-
{/* Member Routes */}
72-
73-
74-
75-
<Route path="/org" element={<Organisation_Template />}>
76-
{/* Dashboard */}
77-
<Route
78-
index
79-
element={
80-
<ProtectedRoute user={user} allowedRoles={["organization"]}>
81-
<DashBoardPage />
82-
</ProtectedRoute>
83-
}
84-
/>
85-
86-
<Route
87-
path="dashboard"
88-
element={
89-
<ProtectedRoute user={user} allowedRoles={["organization"]}>
90-
<DashBoardPage />
91-
</ProtectedRoute>
92-
}
93-
/>
94-
95-
96-
<Route path="teams" element={<MemberPage />} />
97-
98-
99-
100-
101-
{/* Events */}
102-
<Route path="events" element={<ViewEvent />} />
103-
104-
<Route path="create-event" element={<CreateNewEvent />} />
105-
106-
{/* Contact */}
107-
<Route path="contact" element={<Contact />} />
108-
109-
{/* Add Member */}
110-
<Route path="add-member" element={<AddMemberPage />} />
111-
112-
113-
</Route>
114-
115-
116-
<Route path="/member" element={<MemberLayout />}>
117-
{/* Dashboard */}
118-
<Route
119-
index
120-
element={
121-
<ProtectedRoute user={user} allowedRoles={["Member"]}>
122-
<DashboardPage />
123-
</ProtectedRoute>
124-
}
125-
/>
126-
127-
<Route
128-
path="dashboard"
129-
element={
130-
<ProtectedRoute user={user} allowedRoles={["Member"]}>
131-
<DashboardPage />
132-
</ProtectedRoute>
133-
}
134-
/>
135-
136-
137-
138-
{/* Member Modules */}
139-
<Route path="analytics" element={<AnalyticsPage />} />
140-
141-
<Route path="notifications" element={<NotificationsPage />} />
142-
143-
<Route path="settings" element={<SettingsPage />} />
144-
145-
<Route path="tasks" element={<TasksPage />} />
146-
147-
148-
149-
<Route path="workspace" element={<WorkspacePage />} />
150-
151-
<Route path="messages" element={<MessagesPage />} />
152-
153-
<Route path="billing" element={<BillingPage />} />
154-
155-
{/* Events */}
156-
<Route path="events" element={<ViewEvent />} />
25+
<OrgRoute />
15726

27+
<MemberRoutes />
15828

159-
160-
{/* Contact */}
161-
<Route path="contact" element={<Contact />} />
162-
163-
164-
{/* 404 */}
165-
<Route
166-
path="*"
167-
element={
168-
<div
169-
className="
170-
flex items-center justify-center
171-
172-
h-[60vh]
173-
174-
text-xl font-semibold
175-
176-
text-gray-500
177-
dark:text-zinc-400
178-
"
179-
>
180-
404 Not Found
181-
</div>
182-
}
183-
/>
184-
</Route>
185-
186-
{/* Unauthorized */}
187-
<Route
188-
path="/unauthorized"
189-
element={
190-
<div
191-
className="
192-
flex items-center justify-center
193-
194-
h-screen
195-
196-
text-xl font-semibold
197-
198-
text-red-500
199-
"
200-
>
201-
Unauthorized Access
202-
</div>
203-
}
204-
/>
205-
</Routes>
206-
</BrowserRouter>
207-
</ThemeProvider>
29+
</BrowserRouter>
30+
</ThemeProvider>
20831
);
20932
}
21033

src/features/Member/v1/Pages/DashboardPage.tsx renamed to src/features/Dashboard/Member/v1/Page/DashboardPage.tsx

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,7 @@ import SmartReminders from "@/features/Dashboard/components/SmartReminders";
1212
import SummaryCard from "@/features/Dashboard/components/SummaryCard";
1313
import TaskOverview from "@/features/Dashboard/components/TaskOverview";
1414
import UpcomingUrgentTasks from "@/features/Dashboard/components/UpcomingUrgentTasks";
15-
import { useDashboardData } from "@/features/Dashboard/hooks/useDashboardData";
16-
17-
18-
15+
import { useDashboardData } from "@/features/Member/v1/hooks/useDashboardData";
1916

2017
export default function DashboardPage() {
2118
const { data, isLoading, error } = useDashboardData();
File renamed without changes.
Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,5 @@
1-
2-
31
const DashBoardPage = () => {
4-
return (
5-
<div>
6-
7-
</div>
8-
)
9-
}
2+
return <div></div>;
3+
};
104

11-
export default DashBoardPage
5+
export default DashBoardPage;

src/features/Dashboard/components/Achievements.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { Trophy, Flame, Star, Award } from "lucide-react";
2-
import { AchievementsData } from "../Member/dashboard";
2+
import { AchievementsData } from "../Member/v1/Type/dashboard";
33

44
interface Props {
55
data: AchievementsData;

src/features/Dashboard/components/IssuesPanel.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { AlertCircle, CheckCircle, AlertTriangle } from "lucide-react";
22
import { useTheme } from "@/theme";
3-
import { Issues } from "../Member/dashboard";
3+
import { Issues } from "../Member/v1/Type/dashboard";
44

55
interface Props {
66
data: Issues;

src/features/Dashboard/components/PerformanceStats.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { LineChart, Line, XAxis, Tooltip, ResponsiveContainer } from "recharts";
22
import { useTheme } from "@/theme";
3-
import { Performance } from "../Member/dashboard";
3+
import { Performance } from "../Member/v1/Type/dashboard";
44

55
interface Props {
66
data: Performance;

src/features/Dashboard/components/ProductivityScore.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { calculateProductivityScore } from "@/utils/productivity";
2-
import { Performance } from "../Member/dashboard";
2+
import { Performance } from "../Member/v1/Type/dashboard";
33

44
interface Props {
55
data: Performance;

src/features/Events/v1/Sections/Capacity_And_Registration.tsx

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
import Input from "@/Component/ui/Input";
2-
import { getTheme } from "@/config/them.config";
2+
33
import React, { memo, useCallback } from "react";
44
import { FaTicketSimple } from "react-icons/fa6";
55
import DropDown from "@/Component/ui/DropDown";
6+
import { theme } from "@/theme";
67

78
const Capacity_And_Registration = () => {
8-
let theme = getTheme("light");
9+
910

1011
let [eventData, setEventData] = React.useState({
1112
MaxAttendees: "",
@@ -25,8 +26,8 @@ const Capacity_And_Registration = () => {
2526
<div
2627
className="flex flex-col w-full mt-[5vh] p-8 border-2 rounded-lg"
2728
style={{
28-
background: theme.background.primary,
29-
borderColor: theme.borderColor.primary,
29+
background: theme.bg.surface,
30+
borderColor: theme.border.default,
3031
}}
3132
>
3233
<span className="font-extrabold text-xl text-gray-800 uppercase mb-[3vh] flex items-center gap-3">

src/features/Events/v1/Sections/Settings.tsx

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,16 @@
11
import { getTheme } from "@/config/them.config";
22
import { IoSettingsSharp } from "react-icons/io5";
33
import EventSetting from "../Components/EventSetting";
4+
import { theme } from "@/theme";
45

56
const Settings = () => {
6-
let theme = getTheme("light");
7+
78
return (
89
<div
910
className="flex flex-col w-full p-4 border-2 rounded-lg "
1011
style={{
11-
background: theme.background.primary,
12-
borderColor: theme.borderColor.primary,
12+
background: theme.bg.surface,
13+
borderColor: theme.border.default,
1314
}}
1415
>
1516
<span className="font-bold text-xl text-gray-800 uppercase mb-[3vh] flex items-center justify-between gap-3">

0 commit comments

Comments
 (0)