feat(dyvolis): shift cat right, 60+ badge, real photos, colorful logo
- Hero: move cat panel right (left 15%, ellipse 20%) so it doesn't cover the left text column; adjust badge text Х→60+ with proper font size (50px) for 3-character label - Gallery: replace 4 placeholder images with 24 real Dyvolis park photos (March 2026 shoot) - WhyVisit carousel: use 5 real park photos as posters, increase card size from 505px to 600px with 4:3 aspect ratio - Header: replace 3-SVG fallback logo with full-color brand PNG Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
BIN
public/images/dyvolis/photo-01.jpg
Normal file
|
After Width: | Height: | Size: 10 MiB |
BIN
public/images/dyvolis/photo-02.jpg
Normal file
|
After Width: | Height: | Size: 9.3 MiB |
BIN
public/images/dyvolis/photo-03.jpg
Normal file
|
After Width: | Height: | Size: 12 MiB |
BIN
public/images/dyvolis/photo-04.jpg
Normal file
|
After Width: | Height: | Size: 12 MiB |
BIN
public/images/dyvolis/photo-05.jpg
Normal file
|
After Width: | Height: | Size: 3.6 MiB |
BIN
public/images/dyvolis/photo-06.jpg
Normal file
|
After Width: | Height: | Size: 12 MiB |
BIN
public/images/dyvolis/photo-07.jpg
Normal file
|
After Width: | Height: | Size: 12 MiB |
BIN
public/images/dyvolis/photo-08.jpg
Normal file
|
After Width: | Height: | Size: 11 MiB |
BIN
public/images/dyvolis/photo-09.jpg
Normal file
|
After Width: | Height: | Size: 11 MiB |
BIN
public/images/dyvolis/photo-10.jpg
Normal file
|
After Width: | Height: | Size: 8.6 MiB |
BIN
public/images/dyvolis/photo-11.jpg
Normal file
|
After Width: | Height: | Size: 7.5 MiB |
BIN
public/images/dyvolis/photo-12.jpg
Normal file
|
After Width: | Height: | Size: 9 MiB |
BIN
public/images/dyvolis/photo-13.jpg
Normal file
|
After Width: | Height: | Size: 8.7 MiB |
BIN
public/images/dyvolis/photo-14.jpg
Normal file
|
After Width: | Height: | Size: 11 MiB |
BIN
public/images/dyvolis/photo-15.jpg
Normal file
|
After Width: | Height: | Size: 8 MiB |
BIN
public/images/dyvolis/photo-16.jpg
Normal file
|
After Width: | Height: | Size: 10 MiB |
BIN
public/images/dyvolis/photo-17.jpg
Normal file
|
After Width: | Height: | Size: 11 MiB |
BIN
public/images/dyvolis/photo-18.jpg
Normal file
|
After Width: | Height: | Size: 8.1 MiB |
BIN
public/images/dyvolis/photo-19.jpg
Normal file
|
After Width: | Height: | Size: 8.1 MiB |
BIN
public/images/dyvolis/photo-20.jpg
Normal file
|
After Width: | Height: | Size: 11 MiB |
BIN
public/images/dyvolis/photo-21.jpg
Normal file
|
After Width: | Height: | Size: 6.5 MiB |
BIN
public/images/dyvolis/photo-22.jpg
Normal file
|
After Width: | Height: | Size: 4.5 MiB |
BIN
public/images/dyvolis/photo-23.jpg
Normal file
|
After Width: | Height: | Size: 5.8 MiB |
BIN
public/images/dyvolis/photo-24.jpg
Normal file
|
After Width: | Height: | Size: 4.7 MiB |
BIN
public/images/figma/logo-color.png
Normal file
|
After Width: | Height: | Size: 55 KiB |
|
|
@ -7,9 +7,6 @@ import { useState } from 'react'
|
|||
import { NavLink } from '@/components/ui/NavLink'
|
||||
import { BtnPrimary } from '@/components/ui/BtnPrimary'
|
||||
|
||||
const LOGO_G1 = '/images/figma/logo-g1.svg'
|
||||
const LOGO_G2 = '/images/figma/logo-g2.svg'
|
||||
const LOGO_G3 = '/images/figma/logo-g3.svg'
|
||||
|
||||
export interface NavLinkItem {
|
||||
label: string
|
||||
|
|
@ -71,26 +68,11 @@ export function HeaderClient({ navLinks, ctaLabel, ctaHref, logo }: HeaderClient
|
|||
className="object-contain"
|
||||
/>
|
||||
) : (
|
||||
<div className="relative h-[44px] w-[50px] lg:h-[62px] lg:w-[71px]">
|
||||
<div
|
||||
className="absolute"
|
||||
style={{ top: '91.32%', right: '21.81%', bottom: '0.97%', left: '22.26%' }}
|
||||
>
|
||||
<img src={LOGO_G1} alt="" aria-hidden="true" className="block h-full w-full" />
|
||||
</div>
|
||||
<div
|
||||
className="absolute"
|
||||
style={{ top: '71.76%', right: '2.82%', bottom: '7.3%', left: '1.41%' }}
|
||||
>
|
||||
<img src={LOGO_G2} alt="" aria-hidden="true" className="block h-full w-full" />
|
||||
</div>
|
||||
<div
|
||||
className="absolute"
|
||||
style={{ top: '1.61%', right: '2.82%', bottom: '38.73%', left: '21.27%' }}
|
||||
>
|
||||
<img src={LOGO_G3} alt="" aria-hidden="true" className="block h-full w-full" />
|
||||
</div>
|
||||
</div>
|
||||
<img
|
||||
src="/images/figma/logo-color.png"
|
||||
alt="Шуміленд"
|
||||
className="h-[44px] w-auto object-contain lg:h-[62px]"
|
||||
/>
|
||||
)}
|
||||
</Link>
|
||||
|
||||
|
|
|
|||
|
|
@ -7,10 +7,30 @@ const QUOTE =
|
|||
'Це місце – де малеча зустрічає героїв улюблених казок. Простір справжнього дитинства.'
|
||||
|
||||
const GALLERY = [
|
||||
'/images/dyvolis/gallery-1.jpg',
|
||||
'/images/dyvolis/gallery-2.jpg',
|
||||
'/images/dyvolis/gallery-3.jpg',
|
||||
'/images/dyvolis/gallery-4.jpg',
|
||||
'/images/dyvolis/photo-01.jpg',
|
||||
'/images/dyvolis/photo-02.jpg',
|
||||
'/images/dyvolis/photo-03.jpg',
|
||||
'/images/dyvolis/photo-04.jpg',
|
||||
'/images/dyvolis/photo-05.jpg',
|
||||
'/images/dyvolis/photo-06.jpg',
|
||||
'/images/dyvolis/photo-07.jpg',
|
||||
'/images/dyvolis/photo-08.jpg',
|
||||
'/images/dyvolis/photo-09.jpg',
|
||||
'/images/dyvolis/photo-10.jpg',
|
||||
'/images/dyvolis/photo-11.jpg',
|
||||
'/images/dyvolis/photo-12.jpg',
|
||||
'/images/dyvolis/photo-13.jpg',
|
||||
'/images/dyvolis/photo-14.jpg',
|
||||
'/images/dyvolis/photo-15.jpg',
|
||||
'/images/dyvolis/photo-16.jpg',
|
||||
'/images/dyvolis/photo-17.jpg',
|
||||
'/images/dyvolis/photo-18.jpg',
|
||||
'/images/dyvolis/photo-19.jpg',
|
||||
'/images/dyvolis/photo-20.jpg',
|
||||
'/images/dyvolis/photo-21.jpg',
|
||||
'/images/dyvolis/photo-22.jpg',
|
||||
'/images/dyvolis/photo-23.jpg',
|
||||
'/images/dyvolis/photo-24.jpg',
|
||||
]
|
||||
|
||||
export function DyvoLisGallery() {
|
||||
|
|
|
|||
|
|
@ -52,11 +52,11 @@ export function DyvoLisHero() {
|
|||
fontFamily: 'Inter, sans-serif',
|
||||
fontWeight: 800,
|
||||
lineHeight: 1,
|
||||
fontSize: 'clamp(40px, 6.67vw, 96px)',
|
||||
fontSize: 'clamp(20px, 3.47vw, 50px)',
|
||||
}}
|
||||
aria-hidden="true"
|
||||
>
|
||||
Х
|
||||
60+
|
||||
</div>
|
||||
<div
|
||||
className="flex-1 rounded-[20px] text-[16px] leading-[1.3] font-medium text-white lg:text-[24px]"
|
||||
|
|
@ -110,7 +110,7 @@ export function DyvoLisHero() {
|
|||
<div
|
||||
className="absolute"
|
||||
style={{
|
||||
left: '-12.5%',
|
||||
left: '20%',
|
||||
top: '8%',
|
||||
width: '184.6%',
|
||||
height: '184.6%',
|
||||
|
|
@ -135,7 +135,7 @@ export function DyvoLisHero() {
|
|||
alt="Топіарна фігура ДивоЛісу"
|
||||
className="absolute"
|
||||
style={{
|
||||
left: '-20.1%',
|
||||
left: '15%',
|
||||
top: '-20.7%',
|
||||
width: '126.9%',
|
||||
height: 'auto',
|
||||
|
|
|
|||
|
|
@ -25,9 +25,11 @@ const ITEMS = [
|
|||
]
|
||||
|
||||
const VIDEO_REVIEWS = [
|
||||
{ poster: '/images/review-video-poster.jpg' },
|
||||
{ poster: '/images/review-video-poster.jpg' },
|
||||
{ poster: '/images/review-video-poster.jpg' },
|
||||
{ poster: '/images/dyvolis/photo-22.jpg' },
|
||||
{ poster: '/images/dyvolis/photo-14.jpg' },
|
||||
{ poster: '/images/dyvolis/photo-07.jpg' },
|
||||
{ poster: '/images/dyvolis/photo-18.jpg' },
|
||||
{ poster: '/images/dyvolis/photo-03.jpg' },
|
||||
]
|
||||
|
||||
export function DyvoLisWhyVisit() {
|
||||
|
|
@ -136,8 +138,8 @@ export function DyvoLisWhyVisit() {
|
|||
{/* Right: video review carousel */}
|
||||
<div className="w-full flex-1">
|
||||
<div
|
||||
className="relative mx-auto max-w-[505px] overflow-hidden rounded-[20px] lg:mx-0"
|
||||
style={{ aspectRatio: '505/546' }}
|
||||
className="relative mx-auto max-w-[600px] overflow-hidden rounded-[20px] lg:mx-0"
|
||||
style={{ aspectRatio: '4/3' }}
|
||||
onMouseEnter={() => {
|
||||
videoPausedRef.current = true
|
||||
}}
|
||||
|
|
|
|||