From 5b97af4e0f99c0d54928e459fe8f05ad17b6fd86 Mon Sep 17 00:00:00 2001 From: Ashwin Kumar Date: Thu, 26 Mar 2026 08:01:23 +0100 Subject: [PATCH] feat(admin): redesign sidebar, dashboard, dept, designation & roles UI - Sidebar: white bg, rounded pill nav items, orange left indicator for active - Dashboard: remove Export/View All buttons, add Customise Dashboard + drag handles on widgets - Department/Designation/Roles: new design system with orange label header, stat cards, light table header, 3-dot action menus, status badges Co-Authored-By: Claude Sonnet 4.6 --- src/components/AdminSidebar.tsx | 119 +++--- src/routes/admin/department.tsx | 654 +++++++++++++++++++----------- src/routes/admin/designation.tsx | 596 ++++++++++++++++++--------- src/routes/admin/index.tsx | 441 ++++++++++---------- src/routes/admin/roles/create.tsx | 117 +++--- src/routes/admin/roles/index.tsx | 429 +++++++++++--------- 6 files changed, 1428 insertions(+), 928 deletions(-) diff --git a/src/components/AdminSidebar.tsx b/src/components/AdminSidebar.tsx index 5f0f9be..ee7799e 100644 --- a/src/components/AdminSidebar.tsx +++ b/src/components/AdminSidebar.tsx @@ -5,9 +5,9 @@ import { LayoutDashboard, ClipboardList, UserRoundSearch, UserCircle, Camera, Palette, BookOpen, Code2, BriefcaseBusiness, HandHelping, WalletCards, CreditCard, Tag, Percent, Receipt, ShoppingCart, - FileCheck, Star, HeadphonesIcon, BarChart3, BookMarked, Bell, + FileCheck, Star, HeadphonesIcon, BarChart3, ChevronLeft, BadgeCheck, Activity, Film, Utensils, PenTool, - MessageSquare, Megaphone, + Megaphone, } from 'lucide-solid'; type NavItem = { @@ -20,6 +20,8 @@ type NavItem = { const GROUPS: NavItem[][] = [ [ { href: '/admin', label: 'Dashboard', icon: LayoutGrid }, + ], + [ { href: '/admin/department', label: 'Department Management', icon: Building2 }, { href: '/admin/designation', label: 'Designation Management', icon: Briefcase }, { href: '/admin/roles', label: 'Internal Role Management', icon: ShieldCheck }, @@ -40,22 +42,21 @@ const GROUPS: NavItem[][] = [ { href: '/admin/company', label: 'Company Management', icon: Building2 }, { href: '/admin/candidate', label: 'Candidate Management', icon: UserCircle }, { href: '/admin/customer', label: 'Customer Management', icon: UserCircle }, + ], + [ { href: '/admin/photographer', label: 'Photographer Management', icon: Camera }, { href: '/admin/makeup-artist', label: 'Makeup Artist Management', icon: Palette }, - { href: '/admin/tutors', label: 'Tutor Management', icon: BookOpen }, - { href: '/admin/developers', label: 'Developer Management', icon: Code2 }, - { href: '/admin/fitness-trainers', label: 'Fitness Trainer Management', icon: Activity }, - { href: '/admin/graphic-designers', label: 'Graphic Designer Management', icon: PenTool }, - { href: '/admin/social-media-managers', label: 'Social Media Management', icon: Megaphone }, + { href: '/admin/tutors', label: 'Tutors Management', icon: BookOpen }, + { href: '/admin/developers', label: 'Developers Management', icon: Code2 }, { href: '/admin/video-editors', label: 'Video Editor Management', icon: Film }, + { href: '/admin/fitness-trainers', label: 'Fitness Trainer Management', icon: Activity }, { href: '/admin/catering-services', label: 'Catering Services Management', icon: Utensils }, + { href: '/admin/graphic-designers', label: 'Graphics Designer Management', icon: PenTool }, + { href: '/admin/social-media-managers', label: 'Social Media Manager Management', icon: Megaphone }, ], [ { href: '/admin/jobs', label: 'Jobs Management', icon: BriefcaseBusiness }, { href: '/admin/leads', label: 'Leads Management', icon: HandHelping }, - { href: '/admin/applications', label: 'Applications Management', icon: ClipboardList }, - { href: '/admin/responses', label: 'Responses Management', icon: MessageSquare }, - { href: '/admin/review', label: 'Review Management', icon: Star }, ], [ { href: '/admin/pricing', label: 'Pricing Management', icon: WalletCards }, @@ -65,31 +66,23 @@ const GROUPS: NavItem[][] = [ { href: '/admin/tax', label: 'Tax Management', icon: Receipt }, { href: '/admin/order', label: 'Order Management', icon: ShoppingCart }, { href: '/admin/invoice', label: 'Invoice Management', icon: FileCheck }, - { href: '/admin/ledger', label: 'Ledger Management', icon: Receipt }, ], [ - { href: '/admin/kb', label: 'Knowledge Base Management', icon: BookMarked }, - { href: '/admin/notifications', label: 'Notifications', icon: Bell }, + { href: '/admin/review', label: 'Review Management', icon: Star }, { href: '/admin/support', label: 'Support Management', icon: HeadphonesIcon }, { href: '/admin/report', label: 'Report Management', icon: BarChart3 }, + { href: '/admin/ledger', label: 'Ledger Management', icon: Receipt }, ], ]; -const FIGMA_GROUPS: NavItem[][] = [ - GROUPS[0], - GROUPS[1], -]; - export default function AdminSidebar(props: { collapsed: boolean; onToggle: () => void; onNavigate?: () => void; adminName: string; adminInitials: string; - variant?: 'default' | 'figma'; }) { const location = useLocation(); - const groups = () => (props.variant === 'figma' ? FIGMA_GROUPS : GROUPS); const isActive = (item: NavItem) => { if (location.pathname === '/admin') return item.href === '/admin'; @@ -100,32 +93,50 @@ export default function AdminSidebar(props: { return (