Merge version_3_1782160416800 into main #5

Merged
bender merged 1 commits from version_3_1782160416800 into main 2026-06-22 20:36:28 +00:00

View File

@@ -1,25 +1,109 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "hero" 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 HeroBackgroundSlot from "@/components/ui/HeroBackgroundSlot";
import TextAnimation from "@/components/ui/TextAnimation";
import ImageOrVideo from "@/components/ui/ImageOrVideo";
import ScrollReveal from "@/components/ui/ScrollReveal";
import { motion, useScroll, useTransform } from "motion/react";
import { useRef } from "react";
import React from 'react';
import HeroSplit from '@/components/sections/hero/HeroSplit';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
const primaryButton = {
text: "Start Your Project",
href: "#contact"
};
const secondaryButton = {
text: "Learn More",
href: "#about"
};
type HeroSplitProps = {
tag: string;
title: string;
description: string;
primaryButton: { text: string; href: string };
secondaryButton: { text: string; href: string };
} & ({ imageSrc: string; videoSrc?: never } | { videoSrc: string; imageSrc?: never });
const HeroInline = () => {
const containerRef = useRef(null);
const { scrollYProgress } = useScroll({
target: containerRef,
offset: ["start start", "end start"]
});
const y1 = useTransform(scrollYProgress, [0, 1], [0, 300]);
const rotate1 = useTransform(scrollYProgress, [0, 1], [0, 90]);
const scale1 = useTransform(scrollYProgress, [0, 1], [1, 1.5]);
const y2 = useTransform(scrollYProgress, [0, 1], [0, -200]);
const rotate2 = useTransform(scrollYProgress, [0, 1], [0, -120]);
const scale2 = useTransform(scrollYProgress, [0, 1], [1, 0.8]);
const y3 = useTransform(scrollYProgress, [0, 1], [0, 400]);
const rotate3 = useTransform(scrollYProgress, [0, 1], [0, 180]);
const scale3 = useTransform(scrollYProgress, [0, 1], [1, 1.2]);
export default function HeroSection(): React.JSX.Element {
return (
<div id="hero" data-section="hero">
<SectionErrorBoundary name="hero">
<HeroSplit
tag="Innovation Hub"
title="Where Ideas Rise Into Reality"
description="RiseLab accelerates innovation through advanced technology infrastructure and expert collaboration. Transform your concept into market-ready solutions."
primaryButton={{
text: "Start Your Project", href: "#contact"}}
secondaryButton={{
text: "Learn More", href: "#about"}}
imageSrc="http://img.b2bpic.net/free-photo/person-uses-tablet-governmental-cyber-security-room-working-russian-flag_482257-90680.jpg"
/>
</SectionErrorBoundary>
<section aria-label="Hero section" ref={containerRef as any} className="relative flex items-center h-fit md:h-svh pt-25 pb-20 md:py-0 overflow-hidden">
<HeroBackgroundSlot />
{/* Glassmorphic 3D-like Objects */}
<motion.div
style={{ y: y1, rotate: rotate1, scale: scale1 }}
className="absolute top-20 left-10 w-64 h-64 rounded-3xl bg-white/5 backdrop-blur-2xl border border-white/10 shadow-[0_8px_32px_0_rgba(255,255,255,0.05)] z-0"
/>
<motion.div
style={{ y: y2, rotate: rotate2, scale: scale2 }}
className="absolute bottom-20 right-10 w-80 h-80 rounded-full bg-white/5 backdrop-blur-2xl border border-white/10 shadow-[0_8px_32px_0_rgba(255,255,255,0.05)] z-0"
/>
<motion.div
style={{ y: y3, rotate: rotate3, scale: scale3 }}
className="absolute top-1/3 right-1/3 w-48 h-48 rounded-2xl bg-white/5 backdrop-blur-2xl border border-white/10 shadow-[0_8px_32px_0_rgba(255,255,255,0.05)] z-0"
/>
<div className="flex flex-col md:flex-row items-center gap-12 md:gap-20 w-content-width mx-auto relative z-10">
<div className="w-full md:w-1/2">
<div className="flex flex-col items-center md:items-start gap-3">
<div className="px-3 py-1 mb-1 text-sm card rounded w-fit">
<p>{"Innovation Hub"}</p>
</div>
<TextAnimation
text={"Where Ideas Rise Into Reality"}
variant="fade"
gradientText={true}
tag="h1"
className="text-7xl 2xl:text-8xl leading-[1.15] font-semibold text-center md:text-left text-balance"
/>
<TextAnimation
text={"RiseLab accelerates innovation through advanced technology infrastructure and expert collaboration. Transform your concept into market-ready solutions."}
variant="fade"
gradientText={false}
tag="p"
className="md:max-w-8/10 text-lg md:text-xl leading-snug text-center md:text-left text-balance"
/>
<div className="flex flex-wrap max-md:justify-center gap-3 mt-2 md:mt-3">
<Button text={primaryButton.text} href={primaryButton.href} variant="primary"/>
<Button text={secondaryButton.text} href={secondaryButton.href} variant="secondary"animationDelay={0.1} />
</div>
</div>
</div>
<ScrollReveal variant="slide-up" delay={0.2} className="w-full md:w-1/2 h-100 md:h-[65vh] md:max-h-[75svh] p-2 xl:p-3 2xl:p-4 card rounded overflow-hidden">
<ImageOrVideo imageSrc={"http://img.b2bpic.net/free-photo/person-uses-tablet-governmental-cyber-security-room-working-russian-flag_482257-90680.jpg"} />
</ScrollReveal>
</div>
</section>
);
};
export default function HeroSection() {
return (
<div data-webild-section="hero" id="hero">
<HeroInline />
</div>
);
}