Commit graph

121 commits

Author SHA1 Message Date
Vadym Samoilenko
69675851f8 fix(groups): connect amenities array to CMS — was hardcoded, now reads label+image from global 2026-06-03 14:49:38 +01:00
Vadym Samoilenko
a2fb01ea11 fix(ui): center CTA buttons (no full-width stretch), move birthday hero title to bottom
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 14:33:21 +01:00
Vadym Samoilenko
619bed7a00 fix(dino-mobile): gallery overlap, accordion overflow, dino card PNG contain
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 14:12:23 +01:00
Vadym Samoilenko
0ef399c2f5 fix(seed-forms): always run updateGlobal — fixes re-link on partial state
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 early-return guard that skipped global linking when both forms already existed. Per-form idempotency is handled by the '?? await payload.create()' pattern, so we can safely always run updateGlobal to ensure forms are linked to their globals even after re-runs.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-03 14:06:02 +01:00
Vadym Samoilenko
41593c8edc fix(seed-forms): add confirmationMessage to both form creates
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 forms plugin requires a Lexical rich-text confirmationMessage
when confirmationType is 'message'; omitting it caused a 500 on seed.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-03 14:02:28 +01:00
Vadym Samoilenko
b5c34f6f0b fix(seed-forms): tighten auth guard + per-form idempotency to handle partial failures
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
- Fix auth bypass when SYNC_SECRET env var is unset: now defaults to empty string
- Change idempotency check from totalDocs >= 2 to per-form existence checks
- Allow reuse of existing forms instead of creating duplicates if one creation fails
- Handles partial seed state gracefully (e.g., birthday form exists but group form missing)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-03 13:59:06 +01:00
Vadym Samoilenko
65498e2da5 feat(cms): add seed-forms route — creates birthday + group-visits forms and links to globals 2026-06-03 13:56:58 +01:00
Vadym Samoilenko
7f28be23f8 fix(forms): fix select option visibility in FormBlock on Windows Chrome 2026-06-03 13:54:57 +01:00
Vadym Samoilenko
4c31fc6d21 fix(birthday): remove package select field from booking form
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 13:43:10 +01:00
Vadym Samoilenko
480b10feed feat(cms): add revalidateAfterChange hooks to Locations, Tariffs, Reviews, BirthdayPackages
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 13:02:28 +01:00
Vadym Samoilenko
2c59ea9ab7 fix(dino): hero responsive at 820-1100px + mobile card slider replacing wheel at ≤640px 2026-06-03 13:01:25 +01:00
Vadym Samoilenko
7cf0af6b74 fix(form): make group-type select options visible on Windows Chrome 2026-06-03 13:01:02 +01:00
Vadym Samoilenko
cd8d5673d1 perf: compress loc- images, fix hero fetchpriority, fix layout broken tag, Binotel SEO links
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-02 21:39:02 +01:00
Vadym Samoilenko
deead80f2a perf: compress all images (-70MB), preload LCP hero, convert PNG→JPEG, remove dead files
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-02 21:32:49 +01:00
Vadym Samoilenko
3e65612141 fix(mobile): gallery lightbox everywhere, LocationsSlider bottom-strip, DinoPageContent video overflow
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-02 21:24:53 +01:00
Vadym Samoilenko
3d994b1bf7 fix(mobile): responsive CoverflowSlider, LocationsSlider overlay, DinoPageContent hero+wheel overflow, gallery lightbox
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-02 21:12:50 +01:00
Vadym Samoilenko
fa0aa0e60a feat(tickets): new photos from Figma BoXMaNX15, fix telegram grammar, fix ezy www URL + real tariff IDs
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-02 20:06:46 +01:00
Vadym Samoilenko
208e0506e8 fix(telegram): correct Ukrainian grammar (Нове замовлення), show tariff name + customer name/phone in order alert
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-02 20:01:16 +01:00
Vadym Samoilenko
d4155c568d fix(ezy): use www.ezy.com.ua, correct real tariff ids (3120-3122, 3417-3420), hide non-payable 2026-06-02 19:55:24 +01:00
Vadym Samoilenko
c619a8dcda feat(admin): clear Ukrainian labels for Tariffs collection + visible toggle (hide non-ezy tickets)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-02 19:15:22 +01:00
Vadym Samoilenko
f2a560f9e6 feat: kvytky 1:1 redesign, CMS-driven pages, blog/group/birthday updates, green-wave pattern, image optimization
- /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>
2026-06-02 16:46:52 +01:00
Vadym Samoilenko
00a3ae163a Merge remote-tracking branch 'origin/main'
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-01 21:36:07 +01:00
Vadym Samoilenko
a3618448a8 feat(dynopark): hero banner, 5-dino wheel, silhouette dinos + deploy assets
- DinoPageContent: wheel shows exactly 5 dinos in the bottom bowl (fixed 30°
  slot, decoupled from CMS dino count; far nodes parked off-screen)
- non-active dinos darkened to silhouettes, active stays full color
- hero banner swapped to blue T-Rex, height 1096px, 12px gap below header
- optimize heavy CMS images (61MB -> 9MB) and commit media + public assets
  so git holds everything needed for deploy

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-01 21:33:40 +01:00
Vadym Samoilenko
4575717c73 fix: DinoWheel — bigger wheel, correct initial angle (active top), 4-photo gallery, orange segments
- Wheel size increased: 1500px at 1440vw, overflows and clips correctly
- Fixed initial wheelAngle from 270 → -(180/n) so item[0] is at top on load
- Segment colors: unified warm orange, only active+adjacent highlighted
- Removed pagination dots/arrows (not in Figma)
- Gallery: 4 photos in grid, no border, rounded corners
- page.tsx: use FALLBACK when CMS has < 20 dinos (maps epoch→latinName, weight→height)
2026-05-31 13:43:04 +01:00
Vadym Samoilenko
ab4ca5ea64 fix: DinoWheel — sync 25 dino FALLBACK data with Figma + add Quetzalcoatlus asset
- Fixed subtitles for all 25 dinosaurs per Figma dino_slider variants
- Added missing latinNames (Baryonyx, Oviraptor, Spinosaurus, Carnotaurus, etc.)
- Fixed Quetzalcoatlus: real Figma asset downloaded, length 6.5m
- Fixed Карнотавр ДиноРодео imageUrl to carnotaurus_1.jpg
- Fixed Тиранозавр що прогулюються парком imageUrl
- Removed duplicate brackets from subtitle display (data carries brackets)
- Added all 35 dynopark image assets to public/dynopark/
2026-05-31 13:30:12 +01:00
Vadym Samoilenko
2d82e39e25 feat: DinoWheel — arc segments with active highlight, gradient yellow→dark, colored active dino photo
- Replaced flat gradient circle with individual arc segments using arcPath SVG helper
- Active segment: bright yellow #F5D169, fades to dark brown at edges (6-level palette)
- Active dino icon: 12% wheelSize (was 10%), uses DINO_ACTIVE_RADIUS for positioning
- segFill() computes color by distance from active index (circular wrap)
- Fixed angleForItem() → -((i+0.5)*360/n) so active segment always at 12 o'clock
- naturalDeg for icons = (i+0.5)*step to center icon within segment
- Added Baryonyx and Kosmoceratops real photo imageUrls
2026-05-31 13:14:19 +01:00
Vadym Samoilenko
abdef5e0bb fix: DinoHero — correct bg #F2F5E8, dark text, green pills, T-Rex right col only 2026-05-31 12:53:41 +01:00
Vadym Samoilenko
b02954ef77 feat(dynopark): pixel-perfect Figma redesign of all 6 DinoXxx sections
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
- DinoHero: dark bg (#1e1e1e), white text, T-Rex from /dynopark/, orange-amber circle
- DinoWheel: vertical layout (info → arch → photos), 25 dinos with real /dynopark/ images,
  orange-framed photo gallery at bottom, responsive wheel size via useRef
- DinoGallery: updated fallback images to /dynopark/ real park photos
- DinoActivities: photo-overlay portrait cards, gradient, price badges, exact UA text;
  sm:grid-cols-2 md:grid-cols-3 (project uses --breakpoint-lg: 1440px)
- DinoWhyVisit: photo carousel (Gemini park photos) replaces video default,
  "ЗАРАЗ МИ ДІЗНАЄМОСЯ..." label overlay, exact accordion text from Figma
- DinoTickets: dark green #396817 + wave bg pattern, large price typography (64px/900),
  "Забронювати пригоду" CTA, working hours banner, keeps cart functionality

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-31 12:39:41 +01:00
Vadym Samoilenko
7a26ace8e4 feat(dynopark): pixel-perfect Figma redesign of all 6 DinoXxx sections
- DinoHero: dark bg (#1e1e1e), white text, T-Rex from /dynopark/, orange-amber circle
- DinoWheel: vertical layout (info → arch → photos), 25 dinos with real /dynopark/ images,
  orange-framed photo gallery at bottom, responsive wheel size via useRef
- DinoGallery: updated fallback images to /dynopark/ real park photos
- DinoActivities: photo-overlay portrait cards, gradient, price badges, exact UA text;
  sm:grid-cols-2 md:grid-cols-3 (project uses --breakpoint-lg: 1440px)
- DinoWhyVisit: photo carousel (Gemini park photos) replaces video default,
  "ЗАРАЗ МИ ДІЗНАЄМОСЯ..." label overlay, exact accordion text from Figma
- DinoTickets: dark green #396817 + wave bg pattern, large price typography (64px/900),
  "Забронювати пригоду" CTA, working hours banner, keeps cart functionality

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-31 12:33:53 +01:00
Vadym Samoilenko
83d274f0ba feat(pages): implement all 6 pages from Figma + fix nav dropdown
Pages implemented:
- grupovi-vidviduvannia: tilted polaroid banners, amenity grid, wave pricing, correct Figma tile pattern
- dni-narodzhennia: hero, package cards, pricing, order form
- kvytky: horizontal ticket rows with photos, tabs, combo, benefits accordion
- kvytky/dyakuiemo: SVG ticket shape with perforations
- dynozavry: DinoWheel 25 dinosaurs with real images + gallery (node 2004:560/568)
- HeroSlider: vertical slider with 6 slides

Components:
- DinoWheel: complete 25-dino dataset from Figma, orange semicircle SVG rotation, gallery below
- KvytkyTicketsClient: rewritten to horizontal row layout matching Figma
- HeaderClient: remove overflow-hidden clipping dropdown; add chevron indicator
- Header: inherit DEFAULT_NAV children when CMS has no children for that item

Fixes:
- Nav dropdown: CMS was overriding DEFAULT_NAV without children — now inherits
- Wave pattern: use correct Figma wave tile (wave-tile-correct.png, 657x868px) for .wave-bg-pricing
- Lokatsii nav links: ДиноПарк → /lokatsii/dynozavry, ДивоЛіс → /lokatsii/dyvolis

Assets: 35+ new images (dino-*, group-*, birthday-*, ticket-*, gallery)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-29 20:02:50 +01:00
Vadym Samoilenko
f317de7b0f feat(assets): connect static images as fallbacks; fix location slug mapping
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
- DinoGallery: add real park photos as static fallback (T-Rex, aerial, arch)
- DinoHero: use T-Rex PNG as fallback when no CMS heroImage uploaded
- Locations/lokatsii: add DB slug aliases (dzerkalnyi-labiryt→maze, tyr→tir,
  maiydanchyk→playground) so all 5 locations get correct images

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-28 17:04:57 +01:00
Vadym Samoilenko
ef693589bc fix(header,accordion): liquid-glass header + progress bar animation
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-28 16:51:24 +01:00
Vadym Samoilenko
32e0f688d1 fix(header,sliders): solid green header + fix coverflow overflow clipping
- Header: remove liquid-glass transparency; solid #396817 background so header
  no longer bleeds orange from the hero background
- GallerySlider/DinoGallery/DyvoLisGallery: change overflow-hidden to
  overflowX:clip so side cards in 3D coverflow are visible

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-28 16:35:15 +01:00
Vadym Samoilenko
6863f5022d feat(pages): redesign all 6 pages to match Figma designs with full CMS coverage
- Birthday: new pricing structure (component breakdown instead of packages),
  packageItems with image upload per card, why/accordion CMS fields
- GroupVisits: all text/prices/images CMS-editable (heroDescription, amenities,
  featureImages, workingHours, price, bottomImages, etc.)
- DyvoLis: fixed 404 (seed location record), combo tickets now show (600/1500/1800/2000)
- ThankYou: DyvoLis topiary background, 'Купити квиток' button text
- Tariffs: updated to match Figma (300/150/300/50 dyno + 4 combo variants)
- Seed: add DyvoLis location, correct hero text and section titles for home

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-28 16:27:24 +01:00
Vadym Samoilenko
095beb0303 fix(assets): rename assets to v2 to bust immutable browser cache; fix /images/ cache header
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
- Rename all new Figma 2026 assets to *-v2.webp so browsers load fresh
  copies instead of serving year-old cached originals
- Change Cache-Control for /images/ from immutable (1 year) to
  must-revalidate (1 day) — public/ files are mutable, not hashed

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-28 15:13:44 +01:00
Vadym Samoilenko
0e732bfbd5 feat(home): apply Figma design — new hero + location photos, WhyParents gallery
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
- Hero: "Започаткуйте традицію:" title at 96px, subtitle 48px/Black
  (щороку фотографуйтесь біля улюбленого динозавра); removed separate
  T-Rex/family overlays — T-Rex now baked into hero-bg2
- WhyParents: replaced desktop auto-scroll photo gallery with 3 static
  video thumbnail cards with play buttons (Figma Gallery_holder layout)
- Assets: replace hero + 5 location images with real 2026 park photos
  from Figma; add why-parents-video.webp thumbnail

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-28 15:01:19 +01:00
Vadym Samoilenko
492f7934b6 feat(home): update hero typography + locations slider layout
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
- Hero: larger title (clamp to 120px), wider text block, adjusted padding
- LocationsSlider: overlay moved to left side, white text color, larger description

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-28 14:33:06 +01:00
Vadym Samoilenko
4cc6586366 fix(gallery): replace CSS scroll with 3D coverflow slider everywhere; fix migration SEO columns
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
- GallerySlider: rewrite to 3D coverflow (rotateY perspective, 3.5s auto-rotate,
  dots + arrows, lightbox on center click) — matches DyvoLisGallery style
- migration 0006: add meta_title/description/image_id columns for seoPlugin

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-28 14:17:12 +01:00
Vadym Samoilenko
ef629dbdbe feat(pages): add dinosaur park page + redesign birthday, group visits, thank-you
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
New pages:
- /lokatsii/dynozavry — DinosaurPage (static ISR): DinoHero, DinoWheel (interactive
  8-species arc selector, auto-rotate 4s), DinoGallery, DinoActivities, DinoWhyVisit,
  DinoTickets (ezy API dyno+combo categories)
- /kvytky/dyakuiemo — thank-you page with ticket-shaped card design

Redesigned pages:
- /dni-narodzhennia — new hero, "Що входить" 6-card section, WhyVisit accordion,
  pricing grid from BirthdayPackages CMS, form preserved
- /grupovi-vidviduvannia — new hero overlay, description band, amenity 2x2 grid,
  350 грн ticket card, bottom CTA section, form preserved

New CMS:
- DinosaurPage global (slug: dinosaur-page) with 7 array sub-tables
- migration 0006_dinosaur_page.sql — idempotent, creates all tables + dynozavry location
- seed/route.ts — seeds DinosaurPage global with 8 dino species defaults
- payload.config.ts — registers DinosaurPage in globals, seoPlugin, livePreview

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-28 13:28:52 +01:00
Vadym Samoilenko
5ca72de20f fix(seed): fix TS cast for home-page guard
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-05-18 13:31:15 +01:00
Vadym Samoilenko
c07fd6913c fix(seed): guard home-page update by checking existing content
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
Avoids invalid relationship errors when home-page already has data.
Only updates home-page on first seed when hero is absent.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 13:29:58 +01:00
Vadym Samoilenko
1f752a57b0 fix(seed): skip home-page update when media files unavailable in Docker
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
Prevents 500 error on prod where public/images/* aren't in the container.
Forms seeding and site-settings init can now proceed unblocked.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 13:26:37 +01:00
Vadym Samoilenko
fd55afd773 feat(migration): add 0004_form_builder.sql for prod SQL migrator
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
Extracts forms + form_submissions schema from TS migrations into
idempotent SQL so Dockerfile.migrator can apply it on production.
Also updates generated payload-types after form-builder plugin.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 13:21:06 +01:00
Vadym Samoilenko
85d2f7d16e fix(forms): fix message render, confirmation text, radio disabled, placeholder, replyTo
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
- Replace dangerouslySetInnerHTML with extractLexicalText helper for message blocks
- Show CMS confirmationMessage text on success instead of hardcoded string
- Disable radio field in plugin config (not rendered in FormBlock)
- Remove placeholder from text/number/textarea/date seed fields (plugin ignores them)
- Replace {{email}} replyTo template with static manager email fallback

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 12:13:22 +01:00
Vadym Samoilenko
3ea4d95cc7 feat(seed): add GroupRequest and BirthdayBooking forms + assign to page globals 2026-05-18 12:08:34 +01:00
Vadym Samoilenko
42cb554de4 feat(forms): use FormBlock when form is set in CMS, fallback to hardcoded
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 12:07:04 +01:00
Vadym Samoilenko
32ca1dcd2a fix(forms): use ternary className to preserve md:col-span-2 for full-width fields 2026-05-18 12:05:41 +01:00
Vadym Samoilenko
6e5e624345 feat(forms): add FormBlock component for form-builder rendering 2026-05-18 12:05:17 +01:00
Vadym Samoilenko
ff4ae6934c feat(cms): add form relationship field to GroupVisitsPage and BirthdayPage 2026-05-18 11:58:21 +01:00
Vadym Samoilenko
4bda57b903 fix(cms): remove site-settings from livePreview + add label 2026-05-18 11:43:45 +01:00