diff --git a/web/src/components/ShopCard.tsx b/web/src/components/ShopCard.tsx index 3b63d67..fd399e6 100644 --- a/web/src/components/ShopCard.tsx +++ b/web/src/components/ShopCard.tsx @@ -1,91 +1,62 @@ import { Link } from 'react-router-dom'; -import { Star, MapPin, Scissors, Heart, Calendar } from 'lucide-react'; +import { Star, MapPin, Scissors } from 'lucide-react'; import { BarberShop } from '../types'; -import { useApp } from '../context/AppContext'; - -export const ShopCard = ({ shop, compact = false }: { shop: BarberShop; compact?: boolean }) => { - const { toggleFavorite, isFavorite } = useApp(); - const favorite = isFavorite(shop.id); +import { Card } from './ui/card'; +import { Button } from './ui/button'; +export const ShopCard = ({ shop }: { shop: BarberShop }) => { return ( -
- {/* Cover image */} -
- {shop.imageUrl ? ( - {shop.name} - ) : ( -
- -

Sem foto de capa

+ +
+ {/* Avatar Circular com Badge de Rating */} +
+
+ {shop.imageUrl ? ( + {shop.name} + ) : ( +
+ +
+ )} +
+ {/* Rating Badge - Posicionado em cima à direita como na imagem base */} +
+ + + {shop.rating ? shop.rating.toFixed(1) : '0.0'} +
- )} - {/* Gradient overlay */} -
- - {/* Rating badge */} -
- - - {shop.rating ? shop.rating.toFixed(1) : '—'} -
- {/* Favorite button */} - - - {/* Shop name on image */} -
-

+ {/* Informações da Barbearia */} +
+

{shop.name}

+
+ +

+ {shop.address || 'Endereço Indisponível'} +

+
+ +
+ {(shop.services || []).length} serviços + + {(shop.barbers || []).length} barbeiros +

- {/* Info section */} -
-
- -

{shop.address || 'Endereço não disponível'}

-
- -
- - - {(shop.services || []).length} serviços - - - {(shop.barbers || []).length} barbeiros -
- - {/* Action buttons */} -
- - Ver detalhes - - - - Agendar - -
+ {/* Botões de Ação na base */} +
+ +
-
+ ); }; diff --git a/web/src/components/layout/Header.tsx b/web/src/components/layout/Header.tsx index 5e2f832..1af1baa 100644 --- a/web/src/components/layout/Header.tsx +++ b/web/src/components/layout/Header.tsx @@ -1,12 +1,11 @@ -import { Link, useNavigate, useLocation } from 'react-router-dom' -import { ShoppingCart, User, LogOut, Menu, X, Scissors, Search } from 'lucide-react' +import { Link, useNavigate } from 'react-router-dom' +import { MapPin, ShoppingCart, User, LogOut, Menu, X } from 'lucide-react' import { useApp } from '../../context/AppContext' import { useState } from 'react' export const Header = () => { const { user, cart, logout } = useApp() const navigate = useNavigate() - const location = useLocation() const [mobileMenuOpen, setMobileMenuOpen] = useState(false) const handleLogout = () => { @@ -15,46 +14,36 @@ export const Header = () => { setMobileMenuOpen(false) } - const navLink = (to: string) => - `flex items-center gap-1.5 text-sm font-medium transition-colors px-3 py-1.5 rounded-lg ${location.pathname === to - ? 'bg-amber-50 text-amber-700' - : 'text-slate-600 hover:text-amber-700 hover:bg-amber-50' - }` - return ( -
-
- {/* Logo */} +
+
setMobileMenuOpen(false)} - className="flex items-center gap-2 group" > -
- -
- SmartAgenda + Smart Agenda {/* Desktop Navigation */} -
{/* Mobile Menu */} {mobileMenuOpen && ( -
-
+ {/* ❤️ Barbearias Favoritas */} + {favoriteShops.length > 0 && ( +
+
+ +

Barbearias Favoritas

+ {favoriteShops.length} +
+
+ {favoriteShops.map((shop) => ( + + + {shop.imageUrl ? ( + {shop.name} + ) : ( +
+ +
+ )} +
+

{shop.name}

+ {shop.address && ( +

+ {shop.address} +

+ )} + {shop.rating > 0 && ( +

+ + {shop.rating.toFixed(1)} +

+ )} +
+
+ + ))} +
+
+ )} + {/* Agendamentos */}