Merge version_1 into main #2

Merged
bender merged 2 commits from version_1 into main 2026-03-11 16:58:11 +00:00
2 changed files with 39 additions and 44 deletions

View File

@@ -51,21 +51,22 @@ export default function LandingPage() {
testimonials={[
{
name: "Alex Chen", handle: "Founder, StartupXYZ", testimonial: "This tool gave me perspectives I hadn't considered. The feedback was realistic and constructive.", rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/closeup-smiling-middle-aged-business-leader_1262-4845.jpg?_wi=1", imageAlt: "professional portrait headshot young"
imageSrc: "http://img.b2bpic.net/free-photo/closeup-smiling-middle-aged-business-leader_1262-4845.jpg", imageAlt: "professional portrait headshot young"
},
{
name: "Sarah Johnson", handle: "Student Entrepreneur", testimonial: "Finally, access to expert mentorship when I need it most. Game-changing for validating my ideas.", rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/closeup-portrait-successful-confident-young-woman-start-career-look-determined-get-job-waiting-interview-lean-glass-wall-business-center-smiling-looking-away-satisfied_197531-30572.jpg?_wi=1", imageAlt: "diverse professional portrait young"
imageSrc: "http://img.b2bpic.net/free-photo/closeup-portrait-successful-confident-young-woman-start-career-look-determined-get-job-waiting-interview-lean-glass-wall-business-center-smiling-looking-away-satisfied_197531-30572.jpg", imageAlt: "diverse professional portrait young"
},
{
name: "Michael Rodriguez", handle: "Innovator, Tech", testimonial: "The three-point analysis format is perfect. Clear, concise, and instantly actionable insights.", rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/shot-beautiful-young-businesswoman-wearing-blue-chiffon-shirt-while-standing-with-folded-arms-gray-marble-wall_158595-6773.jpg?_wi=1", imageAlt: "young entrepreneur portrait headshot"
imageSrc: "http://img.b2bpic.net/free-photo/shot-beautiful-young-businesswoman-wearing-blue-chiffon-shirt-while-standing-with-folded-arms-gray-marble-wall_158595-6773.jpg", imageAlt: "young entrepreneur portrait headshot"
}
]}
buttons={[
{ text: "Start Validating Now", href: "#contact" },
{ text: "See How It Works", href: "#how-it-works" }
]}
background={{ variant: "glowing-orb" }}
useInvertedBackground={false}
/>
</div>
@@ -156,7 +157,7 @@ export default function LandingPage() {
testimonials={[
{
id: "1", name: "Emma Williams", handle: "@emma_startup", testimonial: "The feedback I received was incredibly valuable. It helped me identify blind spots I completely missed. Highly recommend!", rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/closeup-smiling-middle-aged-business-leader_1262-4845.jpg?_wi=2", imageAlt: "professional portrait headshot young"
imageSrc: "http://img.b2bpic.net/free-photo/closeup-smiling-middle-aged-business-leader_1262-4845.jpg", imageAlt: "professional portrait headshot young"
},
{
id: "2", name: "James Park", handle: "@jpark_ventures", testimonial: "Finally, a tool that gives honest feedback without gatekeeping. This is what every founder needs before pitching investors.", rating: 5,
@@ -172,11 +173,11 @@ export default function LandingPage() {
},
{
id: "5", name: "Lisa Martinez", handle: "@lisa_ventures", testimonial: "Used it for three different ideas. Each feedback session was thorough and realistic. Worth every second of input I spent.", rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/closeup-portrait-successful-confident-young-woman-start-career-look-determined-get-job-waiting-interview-lean-glass-wall-business-center-smiling-looking-away-satisfied_197531-30572.jpg?_wi=2", imageAlt: "diverse professional portrait young"
imageSrc: "http://img.b2bpic.net/free-photo/closeup-portrait-successful-confident-young-woman-start-career-look-determined-get-job-waiting-interview-lean-glass-wall-business-center-smiling-looking-away-satisfied_197531-30572.jpg", imageAlt: "diverse professional portrait young"
},
{
id: "6", name: "Thomas Anderson", handle: "@thomas_founder", testimonial: "The market potential insights were spot-on. This tool saved me from pursuing an idea that looked good on paper but had no real market.", rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/shot-beautiful-young-businesswoman-wearing-blue-chiffon-shirt-while-standing-with-folded-arms-gray-marble-wall_158595-6773.jpg?_wi=2", imageAlt: "young entrepreneur portrait headshot"
imageSrc: "http://img.b2bpic.net/free-photo/shot-beautiful-young-businesswoman-wearing-blue-chiffon-shirt-while-standing-with-folded-arms-gray-marble-wall_158595-6773.jpg", imageAlt: "young entrepreneur portrait headshot"
}
]}
useInvertedBackground={false}
@@ -193,7 +194,7 @@ export default function LandingPage() {
{ text: "Launch App", href: "https://idea-validator-ai.vercel.app" },
{ text: "Learn More", href: "#features" }
]}
background={{ variant: "circleGradient" }}
background={{ variant: "radial-gradient" }}
useInvertedBackground={false}
/>
</div>

View File

@@ -1,51 +1,45 @@
"use client";
import { memo } from "react";
import useSvgTextLogo from "./useSvgTextLogo";
import { cls } from "@/lib/utils";
import React from 'react';
interface SvgTextLogoProps {
logoText: string;
adjustHeightFactor?: number;
verticalAlign?: "top" | "center";
text: string;
className?: string;
textClassName?: string;
tspanClassName?: string;
}
const SvgTextLogo = memo<SvgTextLogoProps>(function SvgTextLogo({
logoText,
adjustHeightFactor,
verticalAlign = "top",
className = "",
}) {
const { svgRef, textRef, viewBox, aspectRatio } = useSvgTextLogo(logoText, false, adjustHeightFactor);
const SvgTextLogo: React.FC<SvgTextLogoProps> = ({
text,
className = '',
textClassName = '',
tspanClassName = '',
}) => {
return (
<svg
ref={svgRef}
viewBox={viewBox}
className={cls("w-full", className)}
style={{ aspectRatio: aspectRatio }}
preserveAspectRatio="none"
role="img"
aria-label={`${logoText} logo`}
viewBox={`0 0 ${text.length * 60} 100`}
className={`w-full h-auto ${className}`}
xmlns="http://www.w3.org/2000/svg"
preserveAspectRatio="xMidYMid meet"
>
<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"
}}
x="50%"
y="50%"
textAnchor="middle"
dominantBaseline="central"
className={`text-4xl font-bold fill-current ${textClassName}`}
>
{logoText}
{text.split('').map((char, index) => (
<tspan
key={index}
x={`${(index + 0.5) * (100 / text.length)}%`}
dy={index === 0 ? 0 : '1.2em'}
className={tspanClassName}
>
{char}
</tspan>
))}
</text>
</svg>
);
});
};
SvgTextLogo.displayName = "SvgTextLogo";
export default SvgTextLogo;
export default SvgTextLogo;