feat(legal): cookie banner + Ukrainian law references in legal pages
Some checks are pending
CI / Type Check (push) Waiting to run
CI / Lint (push) Waiting to run
CI / Unit Tests (push) Waiting to run
Deploy / Build & Push Image (push) Waiting to run
Deploy / Deploy to VPS (push) Blocked by required conditions

- CookieBanner: bottom-fixed, stores consent in localStorage,
  links to privacy policy, green brand colors
- Privacy policy + Data processing: replace GDPR as primary
  reference with ЗУ «Про захист персональних даних» № 2297-VI,
  correct article references (ст. 6, 8, 16, 24 Закону),
  supervisory authority: Уповноважений ВРУ з прав людини

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Vadym Samoilenko 2026-06-04 13:21:01 +01:00
parent dd63759220
commit abfc8de91c
3 changed files with 100 additions and 25 deletions

View file

@ -4,6 +4,7 @@ import { Montserrat, Inter, Poppins } from 'next/font/google'
import '@/app/globals.css'
import { Header } from '@/components/layout/Header'
import { Footer } from '@/components/layout/Footer'
import { CookieBanner } from '@/components/ui/CookieBanner'
import { GoogleAnalytics } from '@/components/analytics/GoogleAnalytics'
import { BinotelWidget } from '@/components/analytics/BinotelWidget'
import { getSiteSettings } from '@/lib/getSiteSettings'
@ -56,6 +57,7 @@ export default async function FrontendLayout({ children }: { children: React.Rea
<Header />
<main className="flex-1">{children}</main>
<Footer />
<CookieBanner />
</CartProvider>
</div>
)

View file

@ -0,0 +1,63 @@
'use client'
import { useState, useEffect } from 'react'
import Link from 'next/link'
const STORAGE_KEY = 'shumiland_cookie_consent'
const FONT = { fontFamily: 'var(--font-montserrat, Montserrat), sans-serif' }
export function CookieBanner() {
const [visible, setVisible] = useState(false)
useEffect(() => {
const hasConsent = localStorage.getItem(STORAGE_KEY)
if (!hasConsent) {
const timer = setTimeout(() => setVisible(true), 0)
return () => clearTimeout(timer)
}
}, [])
function accept() {
localStorage.setItem(STORAGE_KEY, 'accepted')
setVisible(false)
}
if (!visible) return null
return (
<div
className="fixed right-0 bottom-0 left-0 z-[9999] border-t border-[#1a3009]/10 bg-white/95 px-4 py-4 shadow-[0_-4px_24px_rgba(0,0,0,0.08)] backdrop-blur-sm sm:px-8"
role="dialog"
aria-label="Повідомлення про cookie"
>
<div className="mx-auto flex max-w-[1204px] flex-col items-start gap-3 sm:flex-row sm:items-center sm:gap-6">
<p className="flex-1 text-[13px] leading-relaxed text-[#272727]/70" style={FONT}>
Ми використовуємо cookie для аналітики та покращення роботи сайту відповідно до{' '}
<Link
href="/privacy-policy"
className="font-medium text-[#396817] underline underline-offset-2 hover:text-[#f28b4a]"
>
Політики конфіденційності
</Link>
. Продовжуючи користування сайтом, ви погоджуєтесь з використанням cookie.
</p>
<div className="flex shrink-0 gap-3">
<Link
href="/privacy-policy"
className="rounded-full border border-[#396817]/30 px-4 py-2 text-[13px] font-medium text-[#396817] transition-colors hover:border-[#396817] hover:bg-[#396817]/5"
style={FONT}
>
Детальніше
</Link>
<button
onClick={accept}
className="rounded-full bg-[#396817] px-5 py-2 text-[13px] font-bold text-white transition-colors hover:bg-[#2d5414]"
style={FONT}
>
Прийняти
</button>
</div>
</div>
</div>
)
}

View file

@ -9,7 +9,7 @@ export const PRIVACY_DEFAULT = `Дата набрання чинності: 01
1. ЗАГАЛЬНІ ПОЛОЖЕННЯ
Цей документ є Політикою конфіденційності ${COMPANY} (далі «Компанія», «ми»), що регулює порядок збору, обробки та захисту персональних даних користувачів вебсайту ${SITE} (далі «Сайт») відповідно до Закону України «Про захист персональних даних» та Регламенту ЄС 2016/679 (GDPR).
Цей документ є Політикою конфіденційності ${COMPANY} (далі «Компанія», «ми»), що регулює порядок збору, обробки та захисту персональних даних користувачів вебсайту ${SITE} (далі «Сайт») відповідно до Закону України «Про захист персональних даних» від 01.06.2010 2297-VI, Закону України «Про інформацію» та інших актів законодавства України у сфері захисту персональних даних.
2. ХТО МИ
@ -49,11 +49,13 @@ Email: ${EMAIL}
7. ПРАВА СУБ'ЄКТІВ ДАНИХ
Ви маєте право:
Отримати доступ до своїх персональних даних;
Вимагати їх виправлення або видалення;
Відкликати згоду на обробку в будь-який момент;
Подати скаргу до Уповноваженого з прав людини.
Відповідно до ст. 8 Закону України «Про захист персональних даних» ви маєте право:
Знати про місцезнаходження бази персональних даних, її призначення та найменування власника;
Отримати доступ до своїх персональних даних (ст. 16 Закону);
Отримувати відомості про умови надання доступу до даних;
На захист своїх персональних даних від незаконної обробки та випадкової втрати;
Вимагати виправлення недостовірних даних або їх знищення;
Подати скаргу до Уповноваженого Верховної Ради України з прав людини.
Для реалізації прав звертайтеся: ${EMAIL}
@ -184,9 +186,9 @@ Email: ${EMAIL}
export const DATA_PROCESSING_DEFAULT = `Дата набрання чинності: 01 червня 2026 р.
ЗГОДА НА ОБРОБКУ ПЕРСОНАЛЬНИХ ДАНИХ
ПОРЯДОК ОБРОБКИ ПЕРСОНАЛЬНИХ ДАНИХ
${COMPANY}, ЄДРПОУ ${EDRPOU} (далі «Оператор»), відповідно до Закону України «Про захист персональних даних» від 01.06.2010 2297-VI та Регламенту ЄС 2016/679 (GDPR), інформує про умови обробки персональних даних.
${COMPANY}, ЄДРПОУ ${EDRPOU} (далі «Власник бази»), відповідно до Закону України «Про захист персональних даних» від 01.06.2010 2297-VI (далі Закон), інформує про умови обробки персональних даних.
1. ОПЕРАТОР ПЕРСОНАЛЬНИХ ДАНИХ
@ -207,11 +209,15 @@ Email: ${EMAIL}
3. МЕТА ТА ПРАВОВА ПІДСТАВА ОБРОБКИ
3.1. Виконання договору (ст. 6(1)(b) GDPR) обробка даних, необхідних для надання послуг, продажу квитків та підтвердження замовлень.
Відповідно до ст. 6 Закону підставами для обробки персональних даних є:
3.2. Законний інтерес (ст. 6(1)(f) GDPR) покращення якості послуг, аналітика, безпека Сайту.
3.1. Надання згоди суб'єкта персональних даних (ст. 6 ч. 1 п. 1 Закону) при заповненні форм на Сайті.
3.3. Дотримання юридичного зобов'язання (ст. 6(1)(c) GDPR) виконання вимог законодавства.
3.2. Укладення та виконання правочину (ст. 6 ч. 1 п. 2 Закону) обробка даних для виконання замовлення, продажу квитків та підтвердження оплати.
3.3. Захист законних інтересів власника бази персональних даних покращення якості послуг, аналітика, безпека Сайту (ст. 6 ч. 1 п. 6 Закону).
3.4. Виконання обов'язку власника бази, передбаченого законом (ст. 6 ч. 1 п. 3 Закону) дотримання вимог чинного законодавства України.
4. ПОРЯДОК ОБРОБКИ ДАНИХ
@ -222,14 +228,14 @@ Email: ${EMAIL}
5. ПРАВА СУБ'ЄКТІВ ПЕРСОНАЛЬНИХ ДАНИХ
Відповідно до законодавства ви маєте право:
Доступу до своїх персональних даних;
Виправлення неточних або неповних даних;
Видалення («право бути забутим»);
Обмеження обробки;
Портативності даних;
Заперечення проти обробки;
Відкликання згоди без шкоди для законності обробки до її відкликання.
Відповідно до ст. 8 Закону України «Про захист персональних даних» ви маєте право:
Знати про місцезнаходження бази персональних даних (ст. 8 ч. 1 п. 1);
Отримати доступ до своїх персональних даних (ст. 16 Закону);
Вимагати виправлення недостовірних або застарілих даних (ст. 8 ч. 1 п. 4);
Вимагати знищення персональних даних (ст. 8 ч. 1 п. 4);
Відкликати згоду на обробку персональних даних;
На захист своїх персональних даних від незаконної обробки (ст. 8 ч. 1 п. 7);
Подати скаргу до Уповноваженого Верховної Ради України з прав людини.
6. РЕАЛІЗАЦІЯ ПРАВ
@ -238,13 +244,17 @@ Email: ${EMAIL}
7. ЗАХИСТ ДАНИХ
7.1. Оператор вживає технічних та організаційних заходів безпеки відповідно до ст. 32 GDPR.
7.2. У разі витоку персональних даних Оператор повідомить суб'єктів протягом 72 годин.
Відповідно до ст. 24 Закону власник бази персональних даних зобов'язаний:
7.1. Вживати заходів щодо захисту персональних даних від незаконної обробки та несанкціонованого доступу.
7.2. Призначити відповідальну особу за захист персональних даних.
7.3. У разі виявлення порушень невідкладно повідомити суб'єктів персональних даних.
8. СКАРГИ
8. СКАРГИ ТА НАГЛЯД
У разі порушення ваших прав ви маєте право подати скаргу до:
Уповноваженого Верховної Ради України з прав людини;
Наглядового органу ЄС у сфері захисту даних (для громадян ЄС).
Нагляд за дотриманням законодавства про захист персональних даних в Україні здійснює:
Уповноважений Верховної Ради України з прав людини
вул. Інститутська, 21/8, м. Київ, 01008
тел.: +38 (044) 299-74-06
Сайт: https://www.ombudsman.gov.ua
Контакти Оператора: ${EMAIL} | ${PHONE}`