From b9fc97f555028c741a5ab07afdb8243e8ea6669b Mon Sep 17 00:00:00 2001 From: kudinDmitriyUp Date: Fri, 19 Jun 2026 21:41:12 +0000 Subject: [PATCH 1/4] Bob AI: Update global theme colors for Marins Park Hotel redesign --- src/index.css | 18 ++-- src/pages/HomePage.tsx | 105 ++++------------------ src/pages/HomePage/sections/About.tsx | 20 +++++ src/pages/HomePage/sections/Amenities.tsx | 24 +++++ src/pages/HomePage/sections/Contact.tsx | 26 ++++++ src/pages/HomePage/sections/Hero.tsx | 18 ++++ src/pages/HomePage/sections/Journeys.tsx | 26 ++++++ src/pages/HomePage/sections/Rooms.tsx | 25 ++++++ 8 files changed, 167 insertions(+), 95 deletions(-) create mode 100644 src/pages/HomePage/sections/About.tsx create mode 100644 src/pages/HomePage/sections/Amenities.tsx create mode 100644 src/pages/HomePage/sections/Contact.tsx create mode 100644 src/pages/HomePage/sections/Hero.tsx create mode 100644 src/pages/HomePage/sections/Journeys.tsx create mode 100644 src/pages/HomePage/sections/Rooms.tsx diff --git a/src/index.css b/src/index.css index a62ba4f..5a3414b 100644 --- a/src/index.css +++ b/src/index.css @@ -5,15 +5,15 @@ :root { /* @colorThemes/darkTheme/luxury */ - --background: #0f1010; - --card: #3d3d3d; - --foreground: #f5f0eb; - --primary-cta: #ffffff; - --primary-cta-text: #0a0a0a; - --secondary-cta: #1a1a1a; - --secondary-cta-text: #f5f0eb; - --accent: #d4b896; - --background-accent: #4f402d; + --background: #f5f1ea; + --card: #ffffff; + --foreground: #2d2d2d; + --primary-cta: #c8703d; + --primary-cta-text: #ffffff; + --secondary-cta: #e8e2d8; + --secondary-cta-text: #2d2d2d; + --accent: #c8703d; + --background-accent: #e8e2d8; /* @layout/border-radius/rounded */ --radius: 1rem; diff --git a/src/pages/HomePage.tsx b/src/pages/HomePage.tsx index 31bde2c..e1b1206 100644 --- a/src/pages/HomePage.tsx +++ b/src/pages/HomePage.tsx @@ -1,14 +1,20 @@ +// AUTO-GENERATED shell by per-section-migrate. +// Section bodies live in .//sections/.tsx. Edit the section +// files directly. Non-block content (wrappers, non-inlinable sections) is +// preserved inline; extracted section blocks become refs. + import { motion } from "motion/react"; import { StyleProvider } from "@/components/ui/StyleProvider"; import SiteBackgroundSlot from "@/components/ui/SiteBackgroundSlot"; -import HeroVideoExpand from "@/components/sections/hero/HeroVideoExpand"; -import AboutParallax from "@/components/sections/about/AboutParallax"; -import FeaturesAttributeCards from "@/components/sections/features/FeaturesAttributeCards"; -import FeaturesMediaGrid from "@/components/sections/features/FeaturesMediaGrid"; -import FeaturesRevealCardsBento from "@/components/sections/features/FeaturesRevealCardsBento"; -import ContactSplitForm from "@/components/sections/contact/ContactSplitForm"; +import React from 'react'; +import HeroSection from './HomePage/sections/Hero'; +import AboutSection from './HomePage/sections/About'; +import RoomsSection from './HomePage/sections/Rooms'; +import AmenitiesSection from './HomePage/sections/Amenities'; +import JourneysSection from './HomePage/sections/Journeys'; +import ContactSection from './HomePage/sections/Contact'; -export default function HomePage() { +export default function HomePage(): React.JSX.Element { return ( @@ -22,90 +28,17 @@ export default function HomePage() { -
- -
+ -
- -
+ -
- -
+ -
- -
+ -
-
+ -
- -
+
diff --git a/src/pages/HomePage/sections/About.tsx b/src/pages/HomePage/sections/About.tsx new file mode 100644 index 0000000..640ba6f --- /dev/null +++ b/src/pages/HomePage/sections/About.tsx @@ -0,0 +1,20 @@ +// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this +// file as the canonical source for the "about" section. + +import React from 'react'; +import AboutParallax from "@/components/sections/about/AboutParallax"; + +export default function AboutSection(): React.JSX.Element { + return ( +
+ +
+ ); +} diff --git a/src/pages/HomePage/sections/Amenities.tsx b/src/pages/HomePage/sections/Amenities.tsx new file mode 100644 index 0000000..89317f3 --- /dev/null +++ b/src/pages/HomePage/sections/Amenities.tsx @@ -0,0 +1,24 @@ +// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this +// file as the canonical source for the "amenities" section. + +import React from 'react'; +import FeaturesMediaGrid from "@/components/sections/features/FeaturesMediaGrid"; + +export default function AmenitiesSection(): React.JSX.Element { + return ( +
+ +
+ ); +} diff --git a/src/pages/HomePage/sections/Contact.tsx b/src/pages/HomePage/sections/Contact.tsx new file mode 100644 index 0000000..adfe24b --- /dev/null +++ b/src/pages/HomePage/sections/Contact.tsx @@ -0,0 +1,26 @@ +// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this +// file as the canonical source for the "contact" section. + +import React from 'react'; +import ContactSplitForm from "@/components/sections/contact/ContactSplitForm"; + +export default function ContactSection(): React.JSX.Element { + return ( +
+ +
+ ); +} diff --git a/src/pages/HomePage/sections/Hero.tsx b/src/pages/HomePage/sections/Hero.tsx new file mode 100644 index 0000000..f5d77ce --- /dev/null +++ b/src/pages/HomePage/sections/Hero.tsx @@ -0,0 +1,18 @@ +// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this +// file as the canonical source for the "hero" section. + +import React from 'react'; +import HeroVideoExpand from "@/components/sections/hero/HeroVideoExpand"; + +export default function HeroSection(): React.JSX.Element { + return ( +
+ +
+ ); +} diff --git a/src/pages/HomePage/sections/Journeys.tsx b/src/pages/HomePage/sections/Journeys.tsx new file mode 100644 index 0000000..30c809a --- /dev/null +++ b/src/pages/HomePage/sections/Journeys.tsx @@ -0,0 +1,26 @@ +// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this +// file as the canonical source for the "journeys" section. + +import React from 'react'; +import FeaturesRevealCardsBento from "@/components/sections/features/FeaturesRevealCardsBento"; + +export default function JourneysSection(): React.JSX.Element { + return ( +
+
+ ); +} diff --git a/src/pages/HomePage/sections/Rooms.tsx b/src/pages/HomePage/sections/Rooms.tsx new file mode 100644 index 0000000..740732d --- /dev/null +++ b/src/pages/HomePage/sections/Rooms.tsx @@ -0,0 +1,25 @@ +// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this +// file as the canonical source for the "rooms" section. + +import React from 'react'; +import FeaturesAttributeCards from "@/components/sections/features/FeaturesAttributeCards"; + +export default function RoomsSection(): React.JSX.Element { + return ( +
+ +
+ ); +} -- 2.49.1 From 1f0752737fade2eccebb80d8329f289445e433d5 Mon Sep 17 00:00:00 2001 From: kudinDmitriyUp Date: Fri, 19 Jun 2026 21:43:03 +0000 Subject: [PATCH 2/4] Bob AI: Update hero section with proper image and text --- src/pages/HomePage/sections/Hero.tsx | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/src/pages/HomePage/sections/Hero.tsx b/src/pages/HomePage/sections/Hero.tsx index f5d77ce..3a925d1 100644 --- a/src/pages/HomePage/sections/Hero.tsx +++ b/src/pages/HomePage/sections/Hero.tsx @@ -1,18 +1,19 @@ -// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this -// file as the canonical source for the "hero" section. +// Created by add_section_from_catalog (HeroOverlay). import React from 'react'; -import HeroVideoExpand from "@/components/sections/hero/HeroVideoExpand"; +import HeroOverlay from '@/components/sections/hero/HeroOverlay'; export default function HeroSection(): React.JSX.Element { return ( -
- -
+
+ +
); } -- 2.49.1 From 3edad0b8c9c00e36d1cf0b62235ae40b764a8f9b Mon Sep 17 00:00:00 2001 From: kudinDmitriyUp Date: Fri, 19 Jun 2026 21:44:59 +0000 Subject: [PATCH 3/4] Bob AI: Add visual timeline to the About section --- src/pages/HomePage/sections/About.tsx | 121 +++++++++++++++++++++++--- 1 file changed, 107 insertions(+), 14 deletions(-) diff --git a/src/pages/HomePage/sections/About.tsx b/src/pages/HomePage/sections/About.tsx index 640ba6f..a4953d1 100644 --- a/src/pages/HomePage/sections/About.tsx +++ b/src/pages/HomePage/sections/About.tsx @@ -1,20 +1,113 @@ -// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this -// file as the canonical source for the "about" section. +/* eslint-disable */ +// @ts-nocheck — generated by catalog-eject; runtime-correct but TS strict-mode false-positives on inlined catalog body +import { useRef } from "react"; +import { motion, useScroll, useTransform } from "motion/react"; +import Button from "@/components/ui/Button"; +import TextAnimation from "@/components/ui/TextAnimation"; +import ImageOrVideo from "@/components/ui/ImageOrVideo"; -import React from 'react'; -import AboutParallax from "@/components/sections/about/AboutParallax"; +type AboutParallaxProps = { + tag: string; + title: string; + description: string; + primaryButton?: { text: string; href: string }; + secondaryButton?: { text: string; href: string }; + badge?: string; +} & ({ frontImageSrc: string; frontVideoSrc?: never } | { frontVideoSrc: string; frontImageSrc?: never }) & + ({ backImageSrc: string; backVideoSrc?: never } | { backVideoSrc: string; backImageSrc?: never }); + +const AboutInline = () => { + const sectionRef = useRef(null); + const { scrollYProgress } = useScroll({ + target: sectionRef, + offset: ["start end", "end start"], + }); + + const fgY = useTransform(scrollYProgress, [0, 1], ["120px", "-120px"]); + const bgY = useTransform(scrollYProgress, [0, 1], ["-60px", "60px"]); + const bgScale = useTransform(scrollYProgress, [0, 1], [1, 1.15]); -export default function AboutSection(): React.JSX.Element { return ( -
- +
+
+
+
+
+

{"О нас"}

+ + + +
+
+
+

1930-е

+

Основание и строительство знакового для города здания.

+
+
+
+

1970-е

+

Масштабная реконструкция с сохранением исторического фасада.

+
+
+
+

Наши дни

+

Современное гостеприимство в исторических стенах.

+
+
+ {(undefined || undefined) && ( +
+ {undefined &&
+ )} +
+ +
+
+ + + + {"С 1930-х годов" && ( + + {"С 1930-х годов"} + + )} +
+ + + + +
+
+
+
+ ); +}; + +export default function AboutSection() { + return ( +
+ +
); } -- 2.49.1 From 080844d6a94c15752307406b5dee55b29c5c970f Mon Sep 17 00:00:00 2001 From: kudinDmitriyUp Date: Fri, 19 Jun 2026 21:48:13 +0000 Subject: [PATCH 4/4] Bob AI: Add CTA buttons to individual room cards --- src/pages/HomePage/sections/Rooms.tsx | 202 +++++++++++++++++++++++--- 1 file changed, 183 insertions(+), 19 deletions(-) diff --git a/src/pages/HomePage/sections/Rooms.tsx b/src/pages/HomePage/sections/Rooms.tsx index 740732d..49f0bf7 100644 --- a/src/pages/HomePage/sections/Rooms.tsx +++ b/src/pages/HomePage/sections/Rooms.tsx @@ -1,25 +1,189 @@ -// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this -// file as the canonical source for the "rooms" section. +/* eslint-disable */ +// @ts-nocheck — generated by catalog-eject; runtime-correct but TS strict-mode false-positives on inlined catalog body +import Button from "@/components/ui/Button"; +import TextAnimation from "@/components/ui/TextAnimation"; +import ImageOrVideo from "@/components/ui/ImageOrVideo"; +import ScrollReveal from "@/components/ui/ScrollReveal"; +import { resolveIcon } from "@/utils/resolve-icon"; +import type { LucideIcon } from "lucide-react"; -import React from 'react'; -import FeaturesAttributeCards from "@/components/sections/features/FeaturesAttributeCards"; +const primaryButton = { + href: "#booking", + text: "Забронировать" +}; +const items = [ + { + tags: "Комфорт, Рабочая зона, Wi-Fi", + badge: "Популярный", + details: [ + { + icon: "Bed", + value: "1 или 2", + label: "Кровати" + }, + { + icon: "Maximize2", + value: "22 кв.м", + label: "Площадь" + } + ], + title: "Стандарт", + imageSrc: "https://picsum.photos/seed/1615501060/1200/800" + }, + { + tags: "Панорамные окна, Зона отдыха", + imageSrc: "https://picsum.photos/seed/1852845633/1200/800", + details: [ + { + value: "1 большая", + icon: "Bed", + label: "Кровати" + }, + { + label: "Площадь", + value: "35 кв.м", + icon: "Maximize2" + } + ], + title: "Улучшенный", + badge: null + }, + { + title: "Люкс", + details: [ + { + icon: "Bed", + value: "1 King Size", + label: "Кровати" + }, + { + label: "Площадь", + value: "55 кв.м", + icon: "Maximize2" + } + ], + imageSrc: "https://picsum.photos/seed/406048484/1200/800", + badge: "Выбор гостей", + tags: "Гостиная, Ванна, Премиум косметика" + }, + { + tags: "Кухня, Кабинет, Вид на город", + badge: null, + details: [ + { + label: "Кровати", + icon: "Bed", + value: "2 спальни" + }, + { + label: "Площадь", + icon: "Maximize2", + value: "80 кв.м" + } + ], + title: "Апартаменты", + imageSrc: "https://picsum.photos/seed/1341155136/1200/800" + } +]; -export default function RoomsSection(): React.JSX.Element { +type AttributeDetail = { + icon: string | LucideIcon; + label: string; + value: string | number; +}; + +type FeatureItem = { + title: string; + tags: string; + badge?: string | null; + details: AttributeDetail[]; +} & ({ imageSrc: string; videoSrc?: never } | { videoSrc: string; imageSrc?: never }); + +interface FeaturesAttributeCardsProps { + tag: string; + title: string; + description: string; + primaryButton?: { text: string; href: string }; + secondaryButton?: { text: string; href: string }; + items: FeatureItem[]; +} + +const RoomsInline = () => { return ( -
- +
+
+
+
+

{"Номера"}

+
+ + + + + + {(primaryButton || undefined) && ( +
+ {primaryButton &&
+ )} +
+ + +
+ {items.map((item) => ( +
+
+ + {item.badge && ( + + {item.badge} + + )} +
+
+

{item.title}

+

{item.tags}

+
+ {item.details.map((detail) => { + const IconComponent = resolveIcon(detail.icon); + return ( + + + {detail.label}: {detail.value} + + ); + })} +
+
+
+
+
+ ))} +
+
+
+
+ ); +}; + +export default function RoomsSection() { + return ( +
+ +
); } -- 2.49.1