import { useEffect, useRef, useState } from 'react'
import { Link } from 'react-router-dom'
import { useAuth } from '../context/AuthContext'
import { useCartStore, selectCartSummary } from '../stores/cartStore'
import { formatCurrency } from '../utils/format'
import logoImg from '../assets/logo.png'
import { FaRightFromBracket } from 'react-icons/fa6'
// Cart dropdown content component
function CartDropdownContent() {
const items = useCartStore((state) => state.items)
const removeItem = useCartStore((state) => state.removeItem)
const { totalValue } = useCartStore(selectCartSummary)
// Show max 4 items in preview
const displayItems = items.slice(0, 4)
const hiddenCount = items.length - displayItems.length
return (
{displayItems.map((item) => (
{item.name}
{item.quantity}x • R$ {formatCurrency(item.unitPrice)}
))}
{hiddenCount > 0 && (
+{hiddenCount} {hiddenCount === 1 ? 'item' : 'itens'}
)}
Total:
R$ {formatCurrency(totalValue)}
Ver carrinho completo
)
}
export function Shell({ children }: { children: React.ReactNode }) {
const { user, logout } = useAuth()
const [isProfileOpen, setIsProfileOpen] = useState(false)
const profileMenuRef = useRef(null)
const { totalItems: cartCount } = useCartStore(selectCartSummary)
const isOwner = user?.role === 'owner' || user?.role === 'seller'
const isAdmin = user?.role === 'admin'
const profilePath = isAdmin ? '/dashboard/profile' : '/meu-perfil'
const settingsPath = isOwner ? '/company' : '/dashboard/profile'
useEffect(() => {
const handleClickOutside = (event: MouseEvent) => {
if (profileMenuRef.current && !profileMenuRef.current.contains(event.target as Node)) {
setIsProfileOpen(false)
}
}
document.addEventListener('mousedown', handleClickOutside)
return () => {
document.removeEventListener('mousedown', handleClickOutside)
}
}, [])
return (
SaveInMed
{children}
)
}