Commit graph

216 commits

Author SHA1 Message Date
Vadym Samoilenko
40ced357df fix(dynozavry): serve hero banner from public PNG + raise media quality
- Copy original lossless PNG to public/images/locations/ as hero bg fallback
  (bypasses Payload WebP compression entirely when CMS has no image)
- Fallback heroBgUrl to static PNG so the banner always renders
- Raise Media collection WebP quality: 82→88 (mobile/tablet), 85→92 (original+desktop)
  Future re-uploads will have noticeably better quality

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-08 14:20:17 +01:00
Vadym Samoilenko
ab820f7c99 feat(docker): add Caddyfile for self-signed TLS proxy
Terminates HTTPS on port 443 with self-signed cert, redirects :80 to HTTPS.
Required for Payload admin CSRF (browsers only send Sec-Fetch-Site in secure context).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-08 14:14:01 +01:00
Vadym Samoilenko
683ed47795 chore: regenerate payload-types + next-env.d.ts after schema changes
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-08 14:13:48 +01:00
Vadym Samoilenko
a226d3a7f8 fix(ui): bump next/image quality to 90, clean up DyvoLis comment
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-08 14:13:43 +01:00
Vadym Samoilenko
8b4a9262e2 feat(home-why): support CMS side gallery images in WhyParents
Replace hardcoded video-only VideoSlider with SideSlider that accepts
any images array. If CMS sideGallery images exist, show them without
the play button; otherwise fall back to static video thumbnail with
play button as before.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-08 14:13:38 +01:00
Vadym Samoilenko
af4bd74d67 feat(home): add patternGreen/patternOrange CMS upload fields to birthdayIntro
Allow editors to upload custom background pattern images for the birthday
section cards (green cards and featured orange card) from the CMS admin.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-08 14:13:31 +01:00
Vadym Samoilenko
dfc7cc49b0 feat(docker): add Caddy TLS proxy with self-signed cert, remove traefik
Switch prod setup from traefik (external network) to self-contained
Caddy container that terminates HTTPS at the IP. Self-signed cert is
needed so browsers send Sec-Fetch-Site (only in secure contexts) and
Payload admin cookie auth works over http-by-IP won't.

- Add caddy:2-alpine service with ports 80/443 and Caddyfile mount
- Mount ./certs volume to app (NODE_EXTRA_CA_CERTS) so next/image can
  optimise absolute https://IP media URLs without cert rejection
- Remove traefik-public external network + labels
- Update build arg NEXT_PUBLIC_SITE_URL to https://147.135.209.100
- Add postgres-data/backups/certs to .dockerignore

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-08 14:13:26 +01:00
Vadym Samoilenko
c3e1edbee7 fix(birthday): reconnect extra items to CMS + fix altanka placeholder
extraItems was simplified to always use FALLBACK_EXTRA_ITEMS in the
previous refactor, breaking CMS editability for Костюмованих ведучих,
Аквагрим, Затишну альтанку. Restore CMS-first logic: use
cmsPackageItems[3+] when available, fallback otherwise.

Replace wrong gallery-shumi-6.webp (DyvoLis topiary arch) with null
so the placeholder SVG shows until a real photo is uploaded via CMS.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-08 14:13:17 +01:00
Vadym Samoilenko
00c3548272 fix(dynozavry): fetch heroBackground from locations collection
heroBgUrl was never populated — page.tsx queried only the dinosaur-page
global and didn't read the Location's heroBackground upload field.
Now fetches the locations collection in parallel and passes heroBgUrl to
DinoPageContent, which already handles the conditional hero-bg render.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-08 14:12:51 +01:00
Vadym Samoilenko
4b064eee65 refactor(birthday): clean up unused CMS fields and dead variable declarations
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
Remove 10 CMS global fields that had data+fallbacks but were never rendered:
workingHours, pricingPackages, entrancePrices, freeInclusions, entertainmentPackages
plus heroCta, packageSectionSubtitle, and their title fields.

In page.tsx: remove TicketCard component, TicketCardData interface, and all
corresponding variable declarations (~80 lines). Simplify extraItems to always
use FALLBACK_EXTRA_ITEMS (removes fragile cmsHasPhotos && length>3 condition).

Fix typo in packageItems defaultValue: 'ДинопаркArk' → 'ДиноПарк'

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-08 13:53:16 +01:00
Vadym Samoilenko
9a2ebd8cc0 fix(dinopage|gallery|birthday): hero bg z-index, gallery padding, altanka image
- DinoPageContent: add isolation:isolate to .hero so z-index:-1 hero-bg
  is visible (was painted behind the page background color)
- Gallery: pad CMS images with static fallbacks when fewer than 9 entries,
  so the slider always shows a full set even if CMS only has 2 photos
- Birthday page: replace null altanka image with gallery-shumi-6.webp placeholder

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-08 13:45:16 +01:00
Vadym Samoilenko
3a44b986bc fix(images): add dynamic remotePattern from NEXT_PUBLIC_SITE_URL
Some checks failed
CI / Type Check (push) Has been cancelled
CI / Lint (push) Has been cancelled
CI / Unit Tests (push) Has been cancelled
Deploy / Build & Push Image (push) Has been cancelled
Deploy / Deploy to VPS (push) Has been cancelled
Payload media served from the deployment host (e.g. http://147.135.209.100)
was blocked by Next.js image optimiser with 400 because the host was absent
from remotePatterns. Now parsed at build time from NEXT_PUBLIC_SITE_URL so
it works for any environment (localhost, IP, or domain) without hardcoding.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-06 21:18:40 +01:00
Vadym Samoilenko
958de340c1 fix(seed): return numeric IDs from media upload helpers
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
Payload 3 + PostgreSQL rejects string IDs for upload field relationships;
helpers were returning String(doc.id) which caused ValidationError on
every location/post create that referenced an already-existing media record.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-06 20:44:16 +01:00
Vadym Samoilenko
b2e03d1311 feat(media): auto-compress uploaded videos via FFmpeg H.264 CRF 28
On video upload, fires FFmpeg in the background to re-encode to
H.264/AAC with CRF 28 (50-80% size reduction vs phone recordings).
Adds FFmpeg to runner Docker image. Original file is replaced
in-place so URL never changes.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-05 13:12:45 +01:00
Vadym Samoilenko
7e592d3af7 feat(birthday): upload fields for why-section videos
Replace text src/poster in whyVideos with media upload pickers so
admins can upload video files directly from the CMS instead of
entering raw URLs.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-05 13:10:59 +01:00
Vadym Samoilenko
04e13097da fix(birthday): show all CMS extra items, remove hardcoded slice(3,6) limit
Some checks failed
CI / Type Check (push) Has been cancelled
CI / Lint (push) Has been cancelled
CI / Unit Tests (push) Has been cancelled
Deploy / Build & Push Image (push) Has been cancelled
Deploy / Deploy to VPS (push) Has been cancelled
extraItems now uses slice(3) without end limit — items 4-N all appear
in the "Також можна додатково замовити" grid instead of being silently dropped.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-05 12:44:10 +01:00
Vadym Samoilenko
83283ed43c feat(home): CMS-managed birthday card background patterns
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
Admins can now upload custom pattern images for green and orange
pricing cards via Home Page → День народження → Паттерн зелених/оранжевої карток.
Falls back to static /images/figma/card-pattern-*.png if not set.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-05 12:39:05 +01:00
Vadym Samoilenko
7371462eab fix(migration): add _home_page_v_version_sections table for versions support
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
2026-06-05 12:31:41 +01:00
Vadym Samoilenko
b3837fc412 feat(homepage): sections array — add/remove/reorder/show/hide via CMS
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
2026-06-05 12:23:25 +01:00
Vadym Samoilenko
917678e363 fix(admin): fallback adminThumbnail to original URL when tablet size missing
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
2026-06-05 12:14:26 +01:00
Vadym Samoilenko
7080b9ba2d feat(admin): use filename as title in Media list to show built-in thumbnail
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
2026-06-05 12:06:53 +01:00
Vadym Samoilenko
8e2b79f01f revert(admin): remove MediaThumbnailCell — crashes admin list view
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
2026-06-05 11:59:44 +01:00
Vadym Samoilenko
f6712ae8d2 feat(admin): add thumbnail preview in Media list view
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
2026-06-05 11:48:51 +01:00
Vadym Samoilenko
c6542873b0 fix(birthday): remove static fallback — respect CMS featured flag
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
2026-06-05 11:31:50 +01:00
Vadym Samoilenko
96c08391e1 feat(birthday): filter featured packages on homepage, add payment link label
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
2026-06-05 11:24:14 +01:00
Vadym Samoilenko
a58ce75f66 fix(news): pass CMS limit to getLatestPosts instead of hardcoded 3
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
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-05 10:25:45 +01:00
Vadym Samoilenko
33d6a707ea fix(map): auto-extract src URL from full iframe HTML embed code
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
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-05 10:18:57 +01:00
Vadym Samoilenko
1b64b79129 feat(home): birthday section, map embed, and CMS-driven news title/subtitle
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
- Add BirthdayPricing section to home page (was missing entirely)
- Add MapSection component rendering Google Maps iframe from CMS embedUrl
- News component now accepts title/subtitle props from CMS sectionTitles

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-05 10:13:13 +01:00
Vadym Samoilenko
97f775afcb fix(migration): 0010 hero_slides — DROP TABLE → CREATE IF NOT EXISTS to preserve data on redeploy
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
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-04 17:06:46 +01:00
Vadym Samoilenko
d61d5c87ed fix(cms): remove unused dyvolis-page global, fix docker-compose volume, seed error handling
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
- Remove DyvoLisPage global from Payload config (was not connected to website,
  website reads from locations collection instead)
- Fix docker-compose.prod.yml migrate service volume path:
  /app/migrations -> /migrations to match Dockerfile.migrator WORKDIR
- Wrap seed route in try/catch to return proper error instead of silent 500

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-04 16:48:29 +01:00
Vadym Samoilenko
9ae5852f7b fix(migration): complete 0012 — add version table columns for faq field
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
Add missing version_faq_title column to _home_page_v and create
_home_page_v_version_faq_items table; Payload versions: {max:20}
requires both the main table and the versions table to be in sync.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-04 14:36:23 +01:00
Vadym Samoilenko
b33ec01b16 feat(home): add FAQ section and seed WhyParents items
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
- Add FAQ accordion section (FAQ.tsx) after Reviews on home page
- Add faq group field to HomePage global (title + items array)
- Add HomePageFaq types to types/globals.ts
- Seed whyParents.items with 6 items from static fallback texts
- Seed faq with 6 Q&A items about the park
- Migration 0012: create home_page_faq_items table for Payload array field

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-04 14:29:27 +01:00
Vadym Samoilenko
78e00a4c24 fix(dino): hero image height 100% to always fill section regardless of content length
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
2026-06-04 13:56:33 +01:00
Vadym Samoilenko
a836449976 fix(hero): constrain slider text to 48% width; dino fills full height without maxWidth
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
2026-06-04 13:48:08 +01:00
Vadym Samoilenko
44eb01a9e8 fix(dino): anchor hero image to bottom, fill full section height
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
2026-06-04 13:35:04 +01:00
Vadym Samoilenko
76c487401d fix(hero): replace literal \n in titles; fix hero_slides table schema (varchar id)
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
2026-06-04 13:33:55 +01:00
Vadym Samoilenko
abfc8de91c 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>
2026-06-04 13:21:01 +01:00
Vadym Samoilenko
dd63759220 fix(legal): larger textarea rows in admin, update date to 01.06.2026
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
2026-06-04 13:15:56 +01:00
Vadym Samoilenko
7332b81c17 chore(migrations): add legal_pages table
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
2026-06-04 13:10:24 +01:00
Vadym Samoilenko
2cf8ec9715 feat(legal): 4 Ukrainian legal pages + footer links + CMS global
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
- LegalPages global in Payload CMS (Юридичні сторінки section)
- /privacy-policy, /terms-of-use, /oferta, /data-processing pages
- Legal text pre-filled with contract data (ТОВ ТЕХНОСМАРТ УКРАЇНА,
  ЄДРПОУ 40166430, contacts from contract №20260422)
- Footer: legal links row above copyright
- All pages editable from CMS admin, fallback to hardcoded defaults

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-04 13:01:38 +01:00
Vadym Samoilenko
028d14ea17 fix(migrations): add background_image_url column to hero_slides table
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
2026-06-04 12:56:50 +01:00
Vadym Samoilenko
4547d5aacf feat(cms): connect checkout instructions/terms + thank-you page to CMS
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
- CheckoutPage: pass instructions and terms from CMS global to frontend;
  instructions shown above form, terms below button
- ThankYouPage: fetch title/message/contactPhone/contactEmail from CMS;
  contact info shown if set, falls back to hardcoded defaults
- Hero: use backgroundImageUrl text field as fallback for media upload
- Add lexicalToText util for plain-text extraction from Payload Lexical JSON

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-04 12:54:29 +01:00
Vadym Samoilenko
6d37d150ef chore(migrations): add home_page_hero_slides table migration
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
2026-06-04 12:46:50 +01:00
Vadym Samoilenko
a11d3051b8 fix(hero): use slides prop array instead of SLIDES constant
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
2026-06-04 12:42:43 +01:00
Vadym Samoilenko
fa7c8c9cb9 feat(cms): connect hero slider to CMS — editable from admin
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
- Add heroSlides array to HomePage global (title, subtitle, type,
  backgroundImage, ctaLabel, ctaHref per slide)
- Hero.tsx fetches slides from CMS, passes as props to HeroSlider
- HeroSlider accepts optional slides prop, falls back to static default
- No visible change until slides are added in admin

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-04 12:42:11 +01:00
Vadym Samoilenko
77bb9c15e8 fix(ui): wider and more gradual orange glow around video section
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
4-layer box-shadow: 40→100→180→280px blur with decreasing opacity
creates smooth fade from video edge into the green background.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-04 12:33:19 +01:00
Vadym Samoilenko
7ee5e8a434 feat(ui): card stack slider, footer redesign, video glow, revalidation fix
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
UI changes:
- Locations section: replace 3D coverflow with draggable card stack (framer-motion), auto-advance 4s, dot navigation
- Footer: orange gradient matching header, dark green text for readability
- VideoSection: orange box-shadow glow around video block, green wave pattern preserved

Bug fixes:
- fix(revalidate): SECRET empty check was blocking all CMS cache invalidations on prod
- fix(revalidate): location pages now revalidate /lokatsii/{slug} + /lokatsii + layout
- fix(revalidate): blog posts revalidate /blog/{slug} + /blog
- fix(pages): add dynamicParams=true to /[slug] and /lokatsii/[slug] for post-build new entries
- fix(lokatsii): dynamic DETAIL_HREF — new locations with showDetailPage:true auto-get detail button
- fix(combo): cursor:pointer on combo ticket cards
- fix(blog): add EXPERIMENTAL_TableFeature to Lexical editor

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-04 12:18:01 +01:00
Vadym Samoilenko
0c5e8a7f12 fix(dino): restore original hero — dyno-hero.webp + height:1096px css (was correct yesterday)
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
2026-06-03 18:10:03 +01:00
Vadym Samoilenko
156d3738fe fix(dino): two-layer Figma hero (ellipse SVG + T-Rex PNG), larger dino fill per reference
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
2026-06-03 18:04:39 +01:00
Vadym Samoilenko
ca41ec2c09 fix(ui): restore dyvolis hero PNG, new dino hero image + reposition, fix birthday form date field width
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
2026-06-03 17:33:41 +01:00