import React from 'react'; import { useTranslation } from 'react-i18next'; import { Link, useLocation } from 'react-router-dom'; import { LayoutDashboard, CalendarDays, Settings, Users, CreditCard, MessageSquare, LogOut, ClipboardList, Briefcase, Ticket, HelpCircle, Clock, Plug, FileSignature, CalendarOff, LayoutTemplate, MapPin, Image, } from 'lucide-react'; import { Business, User } from '../types'; import { useLogout } from '../hooks/useAuth'; import { usePlanFeatures } from '../hooks/usePlanFeatures'; import SmoothScheduleLogo from './SmoothScheduleLogo'; import UnfinishedBadge from './ui/UnfinishedBadge'; import { SidebarSection, SidebarItem, SidebarDivider, } from './navigation/SidebarComponents'; interface SidebarProps { business: Business; user: User; isCollapsed: boolean; toggleCollapse: () => void; } const Sidebar: React.FC = ({ business, user, isCollapsed, toggleCollapse }) => { const { t } = useTranslation(); const { role } = user; const logoutMutation = useLogout(); const { canUse } = usePlanFeatures(); // Helper to check if user has a specific staff permission // Owners and managers always have all permissions // Staff members check their effective_permissions (role + user overrides) const hasPermission = (permissionKey: string): boolean => { if (role === 'owner' || role === 'manager') { return true; } if (role === 'staff') { // Check effective_permissions which combines user overrides and staff role return user.effective_permissions?.[permissionKey] === true; } return false; }; const canViewAdminPages = role === 'owner' || role === 'manager'; const canViewManagementPages = role === 'owner' || role === 'manager'; const isStaff = role === 'staff'; const canViewSettings = role === 'owner'; const canViewTickets = hasPermission('can_access_tickets'); const canSendMessages = hasPermission('can_access_messages') || user.can_send_messages === true; const handleSignOut = () => { logoutMutation.mutate(); }; return (
{/* Header / Logo */} {/* Navigation */} {/* User Section */}
{!isCollapsed && ( {t('nav.smoothSchedule')} )}
); }; export default Sidebar;