- /kvytky: combo grid (cart add), tabbed catalog with Figma chips/photos, CMS-editable (TicketsPage global) - Tariffs collection: infoChips, badgeLabel, category zone/attraction/program, manual tickets - Birthday & Group pages: Figma design + real photos, pricing sections removed (form-only), unified form style - Thank-you page (pidtverdzhennya) from Figma; combo cards redesigned (4-up grid) - Reviews coverflow slider; blog photos fixed (relative media URLs for next/image) - JSON-LD (WebPage/LocalBusiness/CollectionPage/Service) on home/lokatsii/birthday/group - Footer: photo bg + AImpress credit link; green wave pattern on green sections; consistent footer - Imported 3 real blog posts from staging; fixed text artifacts - Optimized 118 images 563MB -> 72MB (resize 1920px + re-encode) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
142 lines
5.6 KiB
TypeScript
142 lines
5.6 KiB
TypeScript
const SITE = 'https://shumiland.com.ua'
|
||
const PHONE = '+380671443635'
|
||
|
||
const ADDRESS = {
|
||
'@type': 'PostalAddress',
|
||
streetAddress: 'проспект Академіка Глушкова 1',
|
||
addressLocality: 'Kyiv',
|
||
postalCode: '03127',
|
||
addressCountry: 'UA',
|
||
} as const
|
||
|
||
const GEO = {
|
||
'@type': 'GeoCoordinates',
|
||
latitude: '50.37643634125753',
|
||
longitude: '30.481764113469257',
|
||
} as const
|
||
|
||
const SAME_AS = [
|
||
'https://www.instagram.com/shumiland_park',
|
||
'https://www.facebook.com/people/%D0%A8%D1%83%D0%BC%D1%96%D0%BB%D0%B5%D0%BD%D0%B4/61575845978823/',
|
||
'https://www.tiktok.com/@shumiland_park',
|
||
]
|
||
|
||
const ALL_ATTRACTIONS = [
|
||
{ name: 'Динопарк', description: 'Найбільші динозаври України у Шуміленді.' },
|
||
{
|
||
name: 'Диволіс із казковими фігурами',
|
||
description: 'Казковий ліс із чарівними фігурами для дітей.',
|
||
},
|
||
{ name: 'Дзеркальний лабіринт', description: 'Захоплюючий лабіринт із дзеркалами.' },
|
||
{ name: 'Тир з призами', description: 'Розважальний тир із можливістю виграти призи.' },
|
||
{ name: 'Дитячий майданчик', description: 'Ігрова зона для найменших відвідувачів.' },
|
||
{
|
||
name: 'Програми з аніматорами',
|
||
description: 'Веселі шоу та інтерактивні програми з аніматорами.',
|
||
},
|
||
]
|
||
|
||
function attractions(isPartOf: string, count = ALL_ATTRACTIONS.length) {
|
||
return ALL_ATTRACTIONS.slice(0, count).map((a) => ({
|
||
'@type': 'TouristAttraction',
|
||
name: a.name,
|
||
description: a.description,
|
||
isPartOf,
|
||
}))
|
||
}
|
||
|
||
const BUSINESS = {
|
||
'@type': 'LocalBusiness',
|
||
name: 'Парк Розваг «Шуміленд»',
|
||
alternateName: 'Shumiland',
|
||
url: `${SITE}/`,
|
||
telephone: PHONE,
|
||
address: ADDRESS,
|
||
geo: GEO,
|
||
openingHours: 'Mo-Su 10:00-20:00',
|
||
sameAs: SAME_AS,
|
||
} as const
|
||
|
||
// 1. Home — https://shumiland.com.ua/
|
||
export const homePageJsonLd: Record<string, unknown> = {
|
||
'@context': 'https://schema.org',
|
||
'@type': 'WebPage',
|
||
name: 'Парк Розваг «Шуміленд»',
|
||
url: `${SITE}/`,
|
||
description:
|
||
'Сімейний парк розваг у Києві: динопарк, диволіс із казковими фігурами, дзеркальний лабіринт, тир з призами, дитячий майданчик, програми з аніматорами. Найбільші динозаври України.',
|
||
mainEntity: {
|
||
...BUSINESS,
|
||
offers: {
|
||
'@type': 'Offer',
|
||
url: `${SITE}/kvytky`,
|
||
priceCurrency: 'UAH',
|
||
availability: 'https://schema.org/InStock',
|
||
},
|
||
containsPlace: attractions(`${SITE}/`),
|
||
},
|
||
}
|
||
|
||
// 2. Locations — /lokatsii
|
||
export const locationsPageJsonLd: Record<string, unknown> = {
|
||
'@context': 'https://schema.org',
|
||
'@type': 'CollectionPage',
|
||
name: 'Локації у Парку Розваг «Шуміленд»',
|
||
url: `${SITE}/lokatsii`,
|
||
description:
|
||
'Перелік локацій у парку розваг «Шуміленд»: динопарк, диволіс із казковими фігурами, дзеркальний лабіринт, тир з призами, дитячий майданчик, програми з аніматорами.',
|
||
mainEntity: {
|
||
...BUSINESS,
|
||
offers: {
|
||
'@type': 'Offer',
|
||
url: `${SITE}/kvytky`,
|
||
priceCurrency: 'UAH',
|
||
availability: 'https://schema.org/InStock',
|
||
},
|
||
containsPlace: attractions(`${SITE}/lokatsii`),
|
||
},
|
||
}
|
||
|
||
// 3. Birthdays — /dni-narodzhennia
|
||
export const birthdayPageJsonLd: Record<string, unknown> = {
|
||
'@context': 'https://schema.org',
|
||
'@type': 'WebPage',
|
||
name: 'Дні народження у Парку Розваг «Шуміленд»',
|
||
url: `${SITE}/dni-narodzhennia`,
|
||
description:
|
||
'Організація дитячих та сімейних днів народження у парку розваг «Шуміленд» у Києві. Атракціони, динопарк, диволіс, дзеркальний лабіринт, тир з призами, дитячий майданчик та програми з аніматорами.',
|
||
mainEntity: {
|
||
'@type': 'Service',
|
||
serviceType: 'Організація святкування днів народження',
|
||
provider: BUSINESS,
|
||
offers: {
|
||
'@type': 'Offer',
|
||
url: `${SITE}/dni-narodzhennia#order-form`,
|
||
priceCurrency: 'UAH',
|
||
availability: 'https://schema.org/InStock',
|
||
},
|
||
containsPlace: attractions(`${SITE}/dni-narodzhennia`),
|
||
},
|
||
}
|
||
|
||
// 4. Group visits — /grupovi-vidviduvannia
|
||
export const groupVisitsPageJsonLd: Record<string, unknown> = {
|
||
'@context': 'https://schema.org',
|
||
'@type': 'WebPage',
|
||
name: 'Групові відвідування у Парку Розваг «Шуміленд»',
|
||
url: `${SITE}/grupovi-vidviduvannia`,
|
||
description:
|
||
'Організація групових відвідувань у парку розваг «Шуміленд» у Києві. Доступні локації: динопарк та диволіс із казковими фігурами.',
|
||
mainEntity: {
|
||
'@type': 'Service',
|
||
serviceType: 'Групові відвідування та екскурсії',
|
||
provider: BUSINESS,
|
||
offers: {
|
||
'@type': 'Offer',
|
||
url: `${SITE}/grupovi-vidviduvannia#order-form`,
|
||
priceCurrency: 'UAH',
|
||
availability: 'https://schema.org/InStock',
|
||
},
|
||
containsPlace: attractions(`${SITE}/grupovi-vidviduvannia`, 2),
|
||
},
|
||
}
|