Merge version_1 into main #2

Merged
bender merged 2 commits from version_1 into main 2026-03-12 15:59:14 +00:00
2 changed files with 68 additions and 54 deletions

View File

@@ -51,18 +51,19 @@ export default function LandingPage() {
videoSrc="https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AqrR0uZ2UEG8H6YNGyaykiKLGC/slow-motion-close-up-of-an-elite-ifbb-pr-1773331038049-983718d4.png"
videoAriaLabel="Elite bodybuilder preparing for deadlift slow motion"
mediaAnimation="opacity"
background={{ variant: "plain" }}
testimonials={[
{
name: "Marcus Elite", handle: "IFBB Pro • Dubai", testimonial: "In 60 days, I went from 150k followers to 850k. My rate is now $15k per coaching call.", rating: 5,
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AqrR0uZ2UEG8H6YNGyaykiKLGC/portrait-photo-of-a-successful-fitness-c-1773331037695-1162569c.png?_wi=1"
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AqrR0uZ2UEG8H6YNGyaykiKLGC/portrait-photo-of-a-successful-fitness-c-1773331037695-1162569c.png"
},
{
name: "Sarah Strength", handle: "Head Coach • London", testimonial: "Stopped editing. Started selling. My coaching empire tripled without me touching a keyboard.", rating: 5,
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AqrR0uZ2UEG8H6YNGyaykiKLGC/portrait-of-another-successful-fitness-p-1773331037822-4bff65d8.png?_wi=1"
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AqrR0uZ2UEG8H6YNGyaykiKLGC/portrait-of-another-successful-fitness-p-1773331037822-4bff65d8.png"
},
{
name: "James Titan", handle: "Elite Trainer • NYC", testimonial: "Brute Media made me the undisputed authority in my niche. Now other coaches pay to learn from me.", rating: 5,
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AqrR0uZ2UEG8H6YNGyaykiKLGC/professional-headshot-of-an-ifbb-pro-or--1773331038373-c93cfb0a.png?_wi=1"
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AqrR0uZ2UEG8H6YNGyaykiKLGC/professional-headshot-of-an-ifbb-pro-or--1773331038373-c93cfb0a.png"
}
]}
buttons={[{ text: "Apply for Partnership", href: "#contact" }]}
@@ -105,13 +106,13 @@ export default function LandingPage() {
buttonAnimation="slide-up"
features={[
{
title: "Step 1: Data-Driven Scripts", description: "We hand you viral, algorithm-optimized scripts. No guessing. Just proven frameworks built for elite fitness content.", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AqrR0uZ2UEG8H6YNGyaykiKLGC/sleek-cinematic-promotional-video-still--1773331038510-57fcee03.png?_wi=1", imageAlt: "Brute Media script and content framework"
title: "Step 1: Data-Driven Scripts", description: "We hand you viral, algorithm-optimized scripts. No guessing. Just proven frameworks built for elite fitness content.", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AqrR0uZ2UEG8H6YNGyaykiKLGC/sleek-cinematic-promotional-video-still--1773331038510-57fcee03.png", imageAlt: "Brute Media script and content framework"
},
{
title: "Step 2: You Shoot Raw", description: "You spend 15 minutes between sets. One camera. One angle. We handle the magic in post.", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AqrR0uZ2UEG8H6YNGyaykiKLGC/elite-fitness-coach-in-a-luxury-gym-sitt-1773331038029-ea2ccec1.png", imageAlt: "Coach shooting simple raw footage"
},
{
title: "Step 3: We Deliver Cinema", description: "Professional color grading, dynamic b-roll, smooth transitions, distributed globally to all platforms.", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AqrR0uZ2UEG8H6YNGyaykiKLGC/sleek-cinematic-promotional-video-still--1773331038510-57fcee03.png?_wi=2", imageAlt: "Final cinematic edited content on mobile"
title: "Step 3: We Deliver Cinema", description: "Professional color grading, dynamic b-roll, smooth transitions, distributed globally to all platforms.", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AqrR0uZ2UEG8H6YNGyaykiKLGC/sleek-cinematic-promotional-video-still--1773331038510-57fcee03.png", imageAlt: "Final cinematic edited content on mobile"
}
]}
gridVariant="three-columns-all-equal-width"
@@ -171,22 +172,22 @@ export default function LandingPage() {
animationType="slide-up"
testimonials={[
{
id: "1", name: "Marcus Elite", role: "IFBB Pro Bodybuilder", testimonial: "In 60 days, I went from 150k followers to 850k. My rate jumped to $15k per coaching call. Brute Media didn't just save me time—it made me a recognized authority in my field.", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AqrR0uZ2UEG8H6YNGyaykiKLGC/portrait-photo-of-a-successful-fitness-c-1773331037695-1162569c.png?_wi=2"
id: "1", name: "Marcus Elite", role: "IFBB Pro Bodybuilder", testimonial: "In 60 days, I went from 150k followers to 850k. My rate jumped to $15k per coaching call. Brute Media didn't just save me time—it made me a recognized authority in my field.", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AqrR0uZ2UEG8H6YNGyaykiKLGC/portrait-photo-of-a-successful-fitness-c-1773331037695-1162569c.png"
},
{
id: "2", name: "Sarah Strength", role: "Head Coach, London Training Academy", testimonial: "I stopped editing. I started selling. My coaching empire tripled without me ever touching a keyboard. The ROI is insane.", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AqrR0uZ2UEG8H6YNGyaykiKLGC/portrait-of-another-successful-fitness-p-1773331037822-4bff65d8.png?_wi=2"
id: "2", name: "Sarah Strength", role: "Head Coach, London Training Academy", testimonial: "I stopped editing. I started selling. My coaching empire tripled without me ever touching a keyboard. The ROI is insane.", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AqrR0uZ2UEG8H6YNGyaykiKLGC/portrait-of-another-successful-fitness-p-1773331037822-4bff65d8.png"
},
{
id: "3", name: "James Titan", role: "Elite Personal Trainer, NYC", testimonial: "Brute Media made me the undisputed authority in my niche. Now other coaches pay to learn from me. This is the move.", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AqrR0uZ2UEG8H6YNGyaykiKLGC/professional-headshot-of-an-ifbb-pro-or--1773331038373-c93cfb0a.png?_wi=2"
id: "3", name: "James Titan", role: "Elite Personal Trainer, NYC", testimonial: "Brute Media made me the undisputed authority in my niche. Now other coaches pay to learn from me. This is the move.", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AqrR0uZ2UEG8H6YNGyaykiKLGC/professional-headshot-of-an-ifbb-pro-or--1773331038373-c93cfb0a.png"
},
{
id: "4", name: "Coach Victoria", role: "Online Coaching CEO", testimonial: "Premium clients from the US, UK, and Dubai. They all found me because my content was cinematic. Brute Media is literally the cheat code.", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AqrR0uZ2UEG8H6YNGyaykiKLGC/professional-portrait-of-a-female-or-alt-1773331038444-b21d194a.png"
},
{
id: "5", name: "Alex Pro", role: "Fitness Influencer & Coach", testimonial: "20+ hours freed up every week. Instead of editing, I coach. Instead of guessing, I scale. This is what elite coaches have been waiting for.", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AqrR0uZ2UEG8H6YNGyaykiKLGC/portrait-photo-of-a-successful-fitness-c-1773331037695-1162569c.png?_wi=3"
id: "5", name: "Alex Pro", role: "Fitness Influencer & Coach", testimonial: "20+ hours freed up every week. Instead of editing, I coach. Instead of guessing, I scale. This is what elite coaches have been waiting for.", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AqrR0uZ2UEG8H6YNGyaykiKLGC/portrait-photo-of-a-successful-fitness-c-1773331037695-1162569c.png"
},
{
id: "6", name: "Nina Strength", role: "International Coaching Brand", testimonial: "Global distribution, consistent quality, viral performance. Brute Media is the only reason I'm not drowning in admin work.", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AqrR0uZ2UEG8H6YNGyaykiKLGC/portrait-of-another-successful-fitness-p-1773331037822-4bff65d8.png?_wi=3"
id: "6", name: "Nina Strength", role: "International Coaching Brand", testimonial: "Global distribution, consistent quality, viral performance. Brute Media is the only reason I'm not drowning in admin work.", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AqrR0uZ2UEG8H6YNGyaykiKLGC/portrait-of-another-successful-fitness-p-1773331037822-4bff65d8.png"
}
]}
useInvertedBackground={false}

View File

@@ -1,51 +1,64 @@
"use client";
import React, { SVGProps } from 'react';
import { memo } from "react";
import useSvgTextLogo from "./useSvgTextLogo";
import { cls } from "@/lib/utils";
interface SvgTextLogoProps {
logoText: string;
adjustHeightFactor?: number;
verticalAlign?: "top" | "center";
className?: string;
interface SvgTextLogoProps extends SVGProps<SVGSVGElement> {
text?: string;
fontSize?: number;
fontFamily?: string;
fontWeight?: string | number;
fill?: string;
stroke?: string;
strokeWidth?: number;
textAnchor?: 'start' | 'middle' | 'end';
dominantBaseline?: 'auto' | 'middle' | 'hanging';
}
const SvgTextLogo = memo<SvgTextLogoProps>(function SvgTextLogo({
logoText,
adjustHeightFactor,
verticalAlign = "top",
className = "",
}) {
const { svgRef, textRef, viewBox, aspectRatio } = useSvgTextLogo(logoText, false, adjustHeightFactor);
return (
<svg
ref={svgRef}
viewBox={viewBox}
className={cls("w-full", className)}
style={{ aspectRatio: aspectRatio }}
preserveAspectRatio="none"
role="img"
aria-label={`${logoText} logo`}
>
<text
ref={textRef}
x="0"
y={verticalAlign === "center" ? "50%" : "0"}
className="font-bold fill-current"
style={{
fontSize: "20px",
letterSpacing: "-0.02em",
dominantBaseline: verticalAlign === "center" ? "middle" : "text-before-edge"
}}
const SvgTextLogo = React.forwardRef<SVGSVGElement, SvgTextLogoProps>(
(
{
text = 'Logo',
fontSize = 24,
fontFamily = 'Arial, sans-serif',
fontWeight = 'bold',
fill = 'currentColor',
stroke = 'none',
strokeWidth = 0,
textAnchor = 'middle',
dominantBaseline = 'middle',
viewBox = '0 0 200 60',
width = 200,
height = 60,
...props
},
ref
) => {
return (
<svg
ref={ref}
viewBox={viewBox}
width={width}
height={height}
xmlns="http://www.w3.org/2000/svg"
{...props}
>
{logoText}
</text>
</svg>
);
});
<text
x="50%"
y="50%"
fontSize={fontSize}
fontFamily={fontFamily}
fontWeight={fontWeight}
fill={fill}
stroke={stroke}
strokeWidth={strokeWidth}
textAnchor={textAnchor}
dominantBaseline={dominantBaseline}
>
{text}
</text>
</svg>
);
}
);
SvgTextLogo.displayName = "SvgTextLogo";
SvgTextLogo.displayName = 'SvgTextLogo';
export default SvgTextLogo;