Added sidebar

This commit is contained in:
Rahaf
2026-03-30 19:26:03 +03:00
parent 891756e092
commit d22248248d
6 changed files with 597 additions and 0 deletions

View File

@ -0,0 +1,53 @@
'use client';
import { createContext, useContext, useState, useEffect } from 'react';
const FavoritesContext = createContext();
export const useFavorites = () => {
const context = useContext(FavoritesContext);
if (!context) {
throw new Error('useFavorites must be used within FavoritesProvider');
}
return context;
};
export const FavoritesProvider = ({ children }) => {
const [favorites, setFavorites] = useState([]);
useEffect(() => {
const stored = localStorage.getItem('favorites');
if (stored) {
try {
setFavorites(JSON.parse(stored));
} catch (e) {
console.error('Failed to parse favorites', e);
}
}
}, []);
useEffect(() => {
localStorage.setItem('favorites', JSON.stringify(favorites));
}, [favorites]);
const addFavorite = (property) => {
setFavorites(prev => {
if (prev.some(p => p.id === property.id)) return prev;
return [...prev, property];
});
};
const removeFavorite = (propertyId) => {
setFavorites(prev => prev.filter(p => p.id !== propertyId));
};
const isFavorite = (propertyId) => {
return favorites.some(p => p.id === propertyId);
};
return (
<FavoritesContext.Provider value={{ favorites, addFavorite, removeFavorite, isFavorite }}>
{children}
</FavoritesContext.Provider>
);
};