diff --git a/src/app/page.tsx b/src/app/page.tsx index a64a8ed..55b8319 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -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} diff --git a/src/components/shared/SvgTextLogo/SvgTextLogo.tsx b/src/components/shared/SvgTextLogo/SvgTextLogo.tsx index f214190..d2b0eb1 100644 --- a/src/components/shared/SvgTextLogo/SvgTextLogo.tsx +++ b/src/components/shared/SvgTextLogo/SvgTextLogo.tsx @@ -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 { + 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(function SvgTextLogo({ - logoText, - adjustHeightFactor, - verticalAlign = "top", - className = "", -}) { - const { svgRef, textRef, viewBox, aspectRatio } = useSvgTextLogo(logoText, false, adjustHeightFactor); - - return ( - - ( + ( + { + 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 ( + - {logoText} - - - ); -}); + + {text} + + + ); + } +); -SvgTextLogo.displayName = "SvgTextLogo"; +SvgTextLogo.displayName = 'SvgTextLogo'; export default SvgTextLogo;