+
Checking session…
diff --git a/src/components/AdminSidebar.tsx b/src/components/AdminSidebar.tsx
index b655d61..8bae74d 100644
--- a/src/components/AdminSidebar.tsx
+++ b/src/components/AdminSidebar.tsx
@@ -6,49 +6,63 @@ type LinkItem = {
label: string;
icon: string;
aliasPrefix?: string;
+ group?: string;
};
const links: LinkItem[] = [
- { href: '/admin', label: 'Dashboard', icon: 'dashboard.svg' },
- { href: '/admin/department', label: 'Department Management', icon: 'department.svg' },
- { href: '/admin/designation', label: 'Designation Management', icon: 'designation.svg' },
- { href: '/admin/employees', label: 'Employee Management', icon: 'users.svg' },
- { href: '/admin/roles', label: 'Internal Role Management', icon: 'role.svg' },
- { href: '/admin/runtime-roles', label: 'External Role Management', icon: 'role.svg' },
- { href: '/admin/onboarding-schemas', label: 'External Onboarding Management', icon: 'reviews.svg' },
- { href: '/admin/internal-dashboard-management', label: 'Internal Dashboard Management', icon: 'dashboard.svg' },
- { href: '/admin/external-dashboard-management', label: 'External Dashboard Management', icon: 'dashboard.svg', aliasPrefix: '/admin/role-ui-configs' },
- { href: '/admin/approval', label: 'Approval Management', icon: 'approval.svg' },
- { href: '/admin/users', label: 'Users Management', icon: 'users.svg' },
- { href: '/admin/company', label: 'Company Management', icon: 'company.svg' },
- { href: '/admin/candidate', label: 'Candidate Management', icon: 'candidate.svg' },
- { href: '/admin/customer', label: 'Customer Management', icon: 'users.svg' },
- { href: '/admin/photographer', label: 'Photographer Management', icon: 'photographer.svg' },
- { href: '/admin/makeup-artist', label: 'Makeup Artist Management', icon: 'makeup-artist.svg' },
- { href: '/admin/tutors', label: 'Tutors Management', icon: 'tutor.svg' },
- { href: '/admin/developers', label: 'Developers Management', icon: 'developers.svg' },
- { href: '/admin/video-editors', label: 'Video Editor Management', icon: 'developers.svg' },
- { href: '/admin/fitness-trainers', label: 'Fitness Trainer Management', icon: 'tutor.svg' },
- { href: '/admin/catering-services', label: 'Catering Services Management', icon: 'company.svg' },
- { href: '/admin/graphic-designers', label: 'Graphics Designer Management', icon: 'developers.svg' },
- { href: '/admin/social-media-managers', label: 'Social Media Manager Management', icon: 'developers.svg' },
- { href: '/admin/jobs', label: 'Jobs Management', icon: 'jobs.svg' },
- { href: '/admin/leads', label: 'Leads Management', icon: 'leads.svg' },
- { href: '/admin/pricing', label: 'Pricing Management', icon: 'pricing.svg' },
- { href: '/admin/credit', label: 'Credit Management', icon: 'credits.svg' },
- { href: '/admin/coupon', label: 'Coupon Management', icon: 'coupon.svg' },
- { href: '/admin/discount', label: 'Discount Management', icon: 'discount.svg' },
- { href: '/admin/tax', label: 'Tax Management', icon: 'tax.svg' },
- { href: '/admin/order', label: 'Order Management', icon: 'order.svg' },
- { href: '/admin/invoice', label: 'Invoice Management', icon: 'invoice.svg' },
- { href: '/admin/review', label: 'Review Management', icon: 'reviews.svg' },
- { href: '/admin/support', label: 'Support Management', icon: 'support.svg' },
- { href: '/admin/kb', label: 'Knowledge Base Management', icon: 'reviews.svg' },
- { href: '/admin/notifications', label: 'Notifications', icon: 'reviews.svg' },
- { href: '/admin/report', label: 'Report Management', icon: 'report.svg' },
- { href: '/admin/ledger', label: 'Ledger Management', icon: 'ledger.svg' },
+ { href: '/admin', label: 'Dashboard', icon: 'dashboard.svg', group: 'Overview' },
+
+ { href: '/admin/department', label: 'Department', icon: 'department.svg', group: 'Organization' },
+ { href: '/admin/designation', label: 'Designation', icon: 'designation.svg', group: 'Organization' },
+ { href: '/admin/employees', label: 'Employees', icon: 'users.svg', group: 'Organization' },
+
+ { href: '/admin/roles', label: 'Internal Roles', icon: 'role.svg', group: 'Access & Roles' },
+ { href: '/admin/runtime-roles', label: 'External Roles', icon: 'role.svg', group: 'Access & Roles' },
+ { href: '/admin/onboarding-schemas', label: 'Onboarding Flows', icon: 'reviews.svg', group: 'Access & Roles' },
+
+ { href: '/admin/internal-dashboard-management', label: 'Internal Dashboards', icon: 'dashboard.svg', group: 'Dashboards' },
+ { href: '/admin/external-dashboard-management', label: 'External Dashboards', icon: 'dashboard.svg', aliasPrefix: '/admin/role-ui-configs', group: 'Dashboards' },
+
+ { href: '/admin/users', label: 'Users', icon: 'users.svg', group: 'People' },
+ { href: '/admin/company', label: 'Companies', icon: 'company.svg', group: 'People' },
+ { href: '/admin/candidate', label: 'Candidates', icon: 'candidate.svg', group: 'People' },
+ { href: '/admin/customer', label: 'Customers', icon: 'users.svg', group: 'People' },
+ { href: '/admin/photographer', label: 'Photographers', icon: 'photographer.svg', group: 'People' },
+ { href: '/admin/makeup-artist', label: 'Makeup Artists', icon: 'makeup-artist.svg', group: 'People' },
+ { href: '/admin/tutors', label: 'Tutors', icon: 'tutor.svg', group: 'People' },
+ { href: '/admin/developers', label: 'Developers', icon: 'developers.svg', group: 'People' },
+ { href: '/admin/video-editors', label: 'Video Editors', icon: 'developers.svg', group: 'People' },
+ { href: '/admin/fitness-trainers', label: 'Fitness Trainers', icon: 'tutor.svg', group: 'People' },
+ { href: '/admin/catering-services', label: 'Catering Services', icon: 'company.svg', group: 'People' },
+ { href: '/admin/graphic-designers', label: 'Graphic Designers', icon: 'developers.svg', group: 'People' },
+ { href: '/admin/social-media-managers', label: 'Social Media Mgr.', icon: 'developers.svg', group: 'People' },
+
+ { href: '/admin/jobs', label: 'Jobs', icon: 'jobs.svg', group: 'Content' },
+ { href: '/admin/leads', label: 'Leads', icon: 'leads.svg', group: 'Content' },
+ { href: '/admin/review', label: 'Reviews', icon: 'reviews.svg', group: 'Content' },
+ { href: '/admin/kb', label: 'Knowledge Base', icon: 'reviews.svg', group: 'Content' },
+ { href: '/admin/notifications', label: 'Notifications', icon: 'reviews.svg', group: 'Content' },
+
+ { href: '/admin/pricing', label: 'Pricing', icon: 'pricing.svg', group: 'Finance' },
+ { href: '/admin/credit', label: 'Credits', icon: 'credits.svg', group: 'Finance' },
+ { href: '/admin/coupon', label: 'Coupons', icon: 'coupon.svg', group: 'Finance' },
+ { href: '/admin/discount', label: 'Discounts', icon: 'discount.svg', group: 'Finance' },
+ { href: '/admin/tax', label: 'Tax', icon: 'tax.svg', group: 'Finance' },
+ { href: '/admin/order', label: 'Orders', icon: 'order.svg', group: 'Finance' },
+ { href: '/admin/invoice', label: 'Invoices', icon: 'invoice.svg', group: 'Finance' },
+ { href: '/admin/ledger', label: 'Ledger', icon: 'ledger.svg', group: 'Finance' },
+
+ { href: '/admin/approval', label: 'Approvals', icon: 'approval.svg', group: 'Operations' },
+ { href: '/admin/support', label: 'Support', icon: 'support.svg', group: 'Operations' },
+ { href: '/admin/report', label: 'Reports', icon: 'report.svg', group: 'Operations' },
];
+// Build ordered group list preserving first appearance
+const GROUP_ORDER: string[] = [];
+for (const item of links) {
+ if (item.group && !GROUP_ORDER.includes(item.group)) GROUP_ORDER.push(item.group);
+}
+
export default function AdminSidebar() {
const location = useLocation();
const [collapsed, setCollapsed] = createSignal(false);
@@ -61,82 +75,86 @@ export default function AdminSidebar() {
return (