Merge version_1 into main #2

Merged
bender merged 2 commits from version_1 into main 2026-03-12 13:15:50 +00:00
2 changed files with 26 additions and 46 deletions

View File

@@ -50,11 +50,11 @@ export default function LandingPage() {
]}
buttonAnimation="slide-up"
mediaItems={[
{ imageSrc: "http://img.b2bpic.net/free-vector/flat-design-minimal-boutique-landing-page_23-2149315435.jpg?_wi=1", imageAlt: "Minimalist Skincare Template" },
{ imageSrc: "http://img.b2bpic.net/free-vector/running-mobile-app-infographic-flat-design_52683-16376.jpg?_wi=1", imageAlt: "Dark Dashboard Template" },
{ imageSrc: "http://img.b2bpic.net/free-vector/travel-landing-page-with-photo_23-2148379403.jpg?_wi=1", imageAlt: "Luxury Travel Template" },
{ imageSrc: "http://img.b2bpic.net/free-photo/close-up-smiling-person-conference-room_23-2149085913.jpg?_wi=1", imageAlt: "Business Strategy Template" },
{ imageSrc: "http://img.b2bpic.net/free-vector/training-sport-landing-page-with-photo_23-2148299131.jpg?_wi=1", imageAlt: "Personal Trainer Template" }
{ imageSrc: "http://img.b2bpic.net/free-vector/flat-design-minimal-boutique-landing-page_23-2149315435.jpg", imageAlt: "Minimalist Skincare Template" },
{ imageSrc: "http://img.b2bpic.net/free-vector/running-mobile-app-infographic-flat-design_52683-16376.jpg", imageAlt: "Dark Dashboard Template" },
{ imageSrc: "http://img.b2bpic.net/free-vector/travel-landing-page-with-photo_23-2148379403.jpg", imageAlt: "Luxury Travel Template" },
{ imageSrc: "http://img.b2bpic.net/free-photo/close-up-smiling-person-conference-room_23-2149085913.jpg", imageAlt: "Business Strategy Template" },
{ imageSrc: "http://img.b2bpic.net/free-vector/training-sport-landing-page-with-photo_23-2148299131.jpg", imageAlt: "Personal Trainer Template" }
]}
mediaAnimation="slide-up"
/>
@@ -70,19 +70,19 @@ export default function LandingPage() {
animationType="slide-up"
blogs={[
{
id: "1", category: "Skincare", title: "Luminé", excerpt: "Pure, natural skincare formulated for radiant, glowing skin", imageSrc: "http://img.b2bpic.net/free-vector/flat-design-minimal-boutique-landing-page_23-2149315435.jpg?_wi=2", imageAlt: "Luminé Skincare Template", authorName: "Marksy", authorAvatar: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AqWeq0UmdgUoy2yg4QR3Ylf26g/uploaded-1773321224831-ikaww669.png", date: "Premium Template"
id: "1", category: "Skincare", title: "Luminé", excerpt: "Pure, natural skincare formulated for radiant, glowing skin", imageSrc: "http://img.b2bpic.net/free-vector/flat-design-minimal-boutique-landing-page_23-2149315435.jpg", imageAlt: "Luminé Skincare Template", authorName: "Marksy", authorAvatar: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AqWeq0UmdgUoy2yg4QR3Ylf26g/uploaded-1773321224831-ikaww669.png", date: "Premium Template"
},
{
id: "2", category: "AI Agents", title: "AI Agents", excerpt: "Build Autonomous AI Agents That Actually Work", imageSrc: "http://img.b2bpic.net/free-vector/running-mobile-app-infographic-flat-design_52683-16376.jpg?_wi=2", imageAlt: "AI Dashboard Template", authorName: "Marksy", authorAvatar: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AqWeq0UmdgUoy2yg4QR3Ylf26g/uploaded-1773321224831-ikaww669.png", date: "Premium Template"
id: "2", category: "AI Agents", title: "AI Agents", excerpt: "Build Autonomous AI Agents That Actually Work", imageSrc: "http://img.b2bpic.net/free-vector/running-mobile-app-infographic-flat-design_52683-16376.jpg", imageAlt: "AI Dashboard Template", authorName: "Marksy", authorAvatar: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AqWeq0UmdgUoy2yg4QR3Ylf26g/uploaded-1773321224831-ikaww669.png", date: "Premium Template"
},
{
id: "3", category: "Travel", title: "Luxuria", excerpt: "Experience the world's most extraordinary destinations", imageSrc: "http://img.b2bpic.net/free-vector/travel-landing-page-with-photo_23-2148379403.jpg?_wi=2", imageAlt: "Luxury Travel Template", authorName: "Marksy", authorAvatar: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AqWeq0UmdgUoy2yg4QR3Ylf26g/uploaded-1773321224831-ikaww669.png", date: "Premium Template"
id: "3", category: "Travel", title: "Luxuria", excerpt: "Experience the world's most extraordinary destinations", imageSrc: "http://img.b2bpic.net/free-vector/travel-landing-page-with-photo_23-2148379403.jpg", imageAlt: "Luxury Travel Template", authorName: "Marksy", authorAvatar: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AqWeq0UmdgUoy2yg4QR3Ylf26g/uploaded-1773321224831-ikaww669.png", date: "Premium Template"
},
{
id: "4", category: "Business", title: "Transform your business", excerpt: "Strategic consulting for modern enterprises", imageSrc: "http://img.b2bpic.net/free-photo/close-up-smiling-person-conference-room_23-2149085913.jpg?_wi=2", imageAlt: "Business Strategy Template", authorName: "Marksy", authorAvatar: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AqWeq0UmdgUoy2yg4QR3Ylf26g/uploaded-1773321224831-ikaww669.png", date: "Premium Template"
id: "4", category: "Business", title: "Transform your business", excerpt: "Strategic consulting for modern enterprises", imageSrc: "http://img.b2bpic.net/free-photo/close-up-smiling-person-conference-room_23-2149085913.jpg", imageAlt: "Business Strategy Template", authorName: "Marksy", authorAvatar: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AqWeq0UmdgUoy2yg4QR3Ylf26g/uploaded-1773321224831-ikaww669.png", date: "Premium Template"
},
{
id: "5", category: "Fitness", title: "Personal Trainer", excerpt: "Transform Your Body, Transform Your Life", imageSrc: "http://img.b2bpic.net/free-vector/training-sport-landing-page-with-photo_23-2148299131.jpg?_wi=2", imageAlt: "Personal Trainer Template", authorName: "Marksy", authorAvatar: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AqWeq0UmdgUoy2yg4QR3Ylf26g/uploaded-1773321224831-ikaww669.png", date: "Premium Template"
id: "5", category: "Fitness", title: "Personal Trainer", excerpt: "Transform Your Body, Transform Your Life", imageSrc: "http://img.b2bpic.net/free-vector/training-sport-landing-page-with-photo_23-2148299131.jpg", imageAlt: "Personal Trainer Template", authorName: "Marksy", authorAvatar: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AqWeq0UmdgUoy2yg4QR3Ylf26g/uploaded-1773321224831-ikaww669.png", date: "Premium Template"
},
{
id: "6", category: "Dental", title: "Dentist", excerpt: "California's Premier Luxury Dental Practice", imageSrc: "http://img.b2bpic.net/free-vector/dental-clinic-template-design_23-2149573942.jpg", imageAlt: "Dentist Template", authorName: "Marksy", authorAvatar: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AqWeq0UmdgUoy2yg4QR3Ylf26g/uploaded-1773321224831-ikaww669.png", date: "Premium Template"
@@ -162,6 +162,7 @@ export default function LandingPage() {
imageSrc="http://img.b2bpic.net/free-vector/landing-page-background_23-2148003285.jpg"
imageAlt="Marksy AI Interface"
mediaAnimation="slide-up"
metricsAnimation="slide-up"
/>
</div>

View File

@@ -1,51 +1,30 @@
"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;
}
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 = '' }) => {
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 300 100"
xmlns="http://www.w3.org/2000/svg"
className={`w-full h-auto ${className}`}
>
<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="middle"
fontSize="48"
fontWeight="bold"
fill="currentColor"
>
{logoText}
{text}
</text>
</svg>
);
});
SvgTextLogo.displayName = "SvgTextLogo";
};
export default SvgTextLogo;