From 238e32611c68214d6b5702ec9c7b5846d1ebd395 Mon Sep 17 00:00:00 2001 From: kudinDmitriyUp Date: Mon, 22 Jun 2026 01:03:33 +0000 Subject: [PATCH] Bob AI: Replaced hero video with uploaded image --- src/pages/HomePage.tsx | 106 +++------------ 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 | 155 ++++++++++++++++++++++ src/pages/HomePage/sections/Journeys.tsx | 26 ++++ src/pages/HomePage/sections/Rooms.tsx | 25 ++++ 7 files changed, 295 insertions(+), 87 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/pages/HomePage.tsx b/src/pages/HomePage.tsx index 9b780e0..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 HeroExpand from "@/components/sections/hero/HeroExpand"; -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,91 +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..4962853 --- /dev/null +++ b/src/pages/HomePage/sections/Hero.tsx @@ -0,0 +1,155 @@ +/* eslint-disable */ +// @ts-nocheck — generated by catalog-eject; runtime-correct but TS strict-mode false-positives on inlined catalog body +import { useEffect, useRef, useState } from "react"; +import { AnimatePresence, motion, useScroll, useTransform } from "motion/react"; +import ImageOrVideo from "@/components/ui/ImageOrVideo"; +import AutoFillText from "@/components/ui/AutoFillText"; +import { useButtonClick } from "@/hooks/useButtonClick"; + +const primaryButton = { + text: "Browse rooms", + href: "#rooms" +}; +const secondaryButton = { + text: "Watch tour", + href: "#tour" +}; + +const StaggerText = ({ text }: { text: string }) => ( + + {[...text].map((char, index) => ( + + {char} + + ))} + +); + +type HeroExpandProps = { + title: string; + primaryButton: { text: string; href: string }; + secondaryButton: { text: string; href: string }; + onComplete?: () => void; +} & ({ imageSrc: string; videoSrc?: never } | { videoSrc: string; imageSrc?: never }); + +const HeroInline = () => { + const [showLoader, setShowLoader] = useState(true); + const [expanded, setExpanded] = useState(false); + const handlePrimaryClick = useButtonClick(primaryButton.href); + const handleSecondaryClick = useButtonClick(secondaryButton.href); + + const sectionRef = useRef(null); + const { scrollYProgress } = useScroll({ + target: sectionRef, + offset: ["start start", "end start"], + }); + const videoY = useTransform(scrollYProgress, [0, 1], ["0px", "150px"]); + const videoScale = useTransform(scrollYProgress, [0, 1], [1, 1.1]); + + useEffect(() => { + const expandTimer = setTimeout(() => setExpanded(true), 600); + const hideTimer = setTimeout(() => { + setShowLoader(false); + undefined?.(); + }, 1500); + return () => { + clearTimeout(expandTimer); + clearTimeout(hideTimer); + }; + }, []); + + return ( + <> + + {showLoader && ( + + + + + + )} + + +
+ + + + +
+ +
+
+ + {"Namu\n "} + + +
+ + + + + + + + + + +
+
+
+
+ + ); +}; + +export default function HeroSection() { + 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