Merge version_1 into main #2

Merged
bender merged 2 commits from version_1 into main 2026-03-12 17:48:37 +00:00
2 changed files with 31 additions and 43 deletions

View File

@@ -20,7 +20,7 @@ export default function LandingPage() {
borderRadius="soft"
contentWidth="smallMedium"
sizing="largeSmallSizeLargeTitles"
background="grid"
background="circleGradient"
cardStyle="outline"
primaryButtonStyle="radial-glow"
secondaryButtonStyle="solid"
@@ -44,7 +44,7 @@ export default function LandingPage() {
description="Expert electrical solutions for your home and business. Fully licensed, insured, and trusted by over 105 satisfied customers in Cape Town."
tag="Emergency & Maintenance"
tagIcon={Zap}
background={{ variant: "grid" }}
background={{ variant: "plain" }}
mediaItems={[
{
imageSrc: "http://img.b2bpic.net/free-photo/male-electrician-works-switchboard-using-electrical-connection-cable_169016-53066.jpg", imageAlt: "Professional electrician at work"
@@ -111,28 +111,28 @@ export default function LandingPage() {
{
id: 1,
title: "Emergency Repairs", description: "Available 24/7 for urgent electrical problems. Power outages, faulty wiring, tripped breakers - we're here to help immediately.", phoneOne: {
imageSrc: "http://img.b2bpic.net/free-vector/barber-shop-booking-app_23-2148571937.jpg?_wi=1", imageAlt: "Emergency call service app"
imageSrc: "http://img.b2bpic.net/free-vector/barber-shop-booking-app_23-2148571937.jpg", imageAlt: "Emergency call service app"
},
phoneTwo: {
imageSrc: "http://img.b2bpic.net/free-photo/female-coworkers-chatting-phones-coffee-shop_74855-1866.jpg?_wi=1", imageAlt: "Customer service support"
imageSrc: "http://img.b2bpic.net/free-photo/female-coworkers-chatting-phones-coffee-shop_74855-1866.jpg", imageAlt: "Customer service support"
}
},
{
id: 2,
title: "Maintenance & Inspections", description: "Regular maintenance keeps your electrical systems running safely and efficiently. Professional inspections identify issues before they become problems.", phoneOne: {
imageSrc: "http://img.b2bpic.net/free-vector/barber-shop-booking-app_23-2148571937.jpg?_wi=2", imageAlt: "Maintenance booking app"
imageSrc: "http://img.b2bpic.net/free-vector/barber-shop-booking-app_23-2148571937.jpg", imageAlt: "Maintenance booking app"
},
phoneTwo: {
imageSrc: "http://img.b2bpic.net/free-photo/female-coworkers-chatting-phones-coffee-shop_74855-1866.jpg?_wi=2", imageAlt: "Service support app"
imageSrc: "http://img.b2bpic.net/free-photo/female-coworkers-chatting-phones-coffee-shop_74855-1866.jpg", imageAlt: "Service support app"
}
},
{
id: 3,
title: "Installations & Upgrades", description: "New circuits, appliance installations, home upgrades, and complete renovations. Expert work that meets all safety standards.", phoneOne: {
imageSrc: "http://img.b2bpic.net/free-vector/barber-shop-booking-app_23-2148571937.jpg?_wi=3", imageAlt: "Installation booking app"
imageSrc: "http://img.b2bpic.net/free-vector/barber-shop-booking-app_23-2148571937.jpg", imageAlt: "Installation booking app"
},
phoneTwo: {
imageSrc: "http://img.b2bpic.net/free-photo/female-coworkers-chatting-phones-coffee-shop_74855-1866.jpg?_wi=3", imageAlt: "Project status app"
imageSrc: "http://img.b2bpic.net/free-photo/female-coworkers-chatting-phones-coffee-shop_74855-1866.jpg", imageAlt: "Project status app"
}
}
]}

View File

@@ -1,51 +1,39 @@
"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;
fontSize?: number;
fontFamily?: string;
fill?: 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 = 'Logo',
fontSize = 24,
fontFamily = 'Arial, sans-serif',
fill = '#000',
className = '',
}) => {
return (
<svg
ref={svgRef}
viewBox={viewBox}
className={cls("w-full", className)}
style={{ aspectRatio: aspectRatio }}
preserveAspectRatio="none"
role="img"
aria-label={`${logoText} logo`}
width="auto"
height={fontSize}
viewBox={`0 0 ${text.length * fontSize} ${fontSize}`}
className={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"
}}
y={fontSize * 0.75}
fontSize={fontSize}
fontFamily={fontFamily}
fill={fill}
dominantBaseline="middle"
>
{logoText}
{text}
</text>
</svg>
);
});
SvgTextLogo.displayName = "SvgTextLogo";
};
export default SvgTextLogo;