Добавлены новые элементы в меню профиля, включая настройки cookies. Внедрен компонент CookieConsent в приложение для управления согласиями на использование cookies. Добавлена анимация для отображения уведомления о cookies.

This commit is contained in:
Bivekich
2025-07-06 20:39:07 +03:00
parent a67a4438ad
commit 391d47ed2b
8 changed files with 805 additions and 0 deletions

61
src/lib/cookie-utils.ts Normal file
View File

@ -0,0 +1,61 @@
interface CookiePreferences {
necessary: boolean;
analytics: boolean;
marketing: boolean;
functional: boolean;
}
export const getCookieConsent = (): string | null => {
if (typeof window === 'undefined') return null;
return localStorage.getItem('cookieConsent');
};
export const getCookiePreferences = (): CookiePreferences | null => {
if (typeof window === 'undefined') return null;
const preferences = localStorage.getItem('cookiePreferences');
return preferences ? JSON.parse(preferences) : null;
};
export const hasConsentForAnalytics = (): boolean => {
const preferences = getCookiePreferences();
return preferences?.analytics || false;
};
export const hasConsentForMarketing = (): boolean => {
const preferences = getCookiePreferences();
return preferences?.marketing || false;
};
export const hasConsentForFunctional = (): boolean => {
const preferences = getCookiePreferences();
return preferences?.functional || false;
};
export const isConsentGiven = (): boolean => {
const consent = getCookieConsent();
return consent !== null && consent !== 'declined';
};
export const resetCookieConsent = (): void => {
if (typeof window === 'undefined') return;
localStorage.removeItem('cookieConsent');
localStorage.removeItem('cookiePreferences');
};
// Функция для интеграции с аналитикой (например, Google Analytics)
export const initializeAnalytics = (): void => {
if (!hasConsentForAnalytics()) return;
// Здесь можно добавить инициализацию Google Analytics или других сервисов
console.log('Analytics initialized with user consent');
};
// Функция для интеграции с маркетинговыми инструментами
export const initializeMarketing = (): void => {
if (!hasConsentForMarketing()) return;
// Здесь можно добавить инициализацию маркетинговых пикселей
console.log('Marketing tools initialized with user consent');
};
export type { CookiePreferences };