Merge version_1 into main #2

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

View File

@@ -44,7 +44,7 @@ export default function LandingPage() {
<HeroLogoBillboardSplit
logoText="EASYER"
description="La plateforme double qui révolutionne l'expérience en salle. Service autonome pour les clients. Dashboard puissant pour les restaurateurs."
background={{ variant: "circleGradient" }}
background={{ variant: "plain" }}
buttons={[
{ text: "Je suis client", href: "#easyer-client" },
{ text: "Je suis restaurateur", href: "#easyer-plus" }
@@ -78,7 +78,7 @@ export default function LandingPage() {
id: "2", title: "Demandes clic & go", descriptions: [
"Je voudrais commander", "J'ai une demande urgente", "Il me manque quelque chose", "Sous-menus spécialisés pour chaque besoin"
],
imageSrc: "http://img.b2bpic.net/free-vector/modern-ad-block-concept-with-flat-design_23-2147875796.jpg?_wi=1", imageAlt: "Boutons de demandes rapides et urgentes"
imageSrc: "http://img.b2bpic.net/free-vector/modern-ad-block-concept-with-flat-design_23-2147875796.jpg", imageAlt: "Boutons de demandes rapides et urgentes"
},
{
id: "3", title: "Menu enrichi", descriptions: [
@@ -102,7 +102,7 @@ export default function LandingPage() {
id: "6", title: "Service sans contact", descriptions: [
"Toutes les interactions digitales", "Réduction des contacts inutiles", "Hygiène et sécurité renforcées", "Expérience moderne et sûre"
],
imageSrc: "http://img.b2bpic.net/free-vector/modern-ad-block-concept-with-flat-design_23-2147875796.jpg?_wi=2", imageAlt: "Interface digitale sans contact"
imageSrc: "http://img.b2bpic.net/free-vector/modern-ad-block-concept-with-flat-design_23-2147875796.jpg", imageAlt: "Interface digitale sans contact"
}
]}
gridVariant="two-columns-alternating-heights"
@@ -126,7 +126,7 @@ export default function LandingPage() {
id: "1", title: "Flux de demandes en direct", descriptions: [
"Tableau des urgences avec statut URGENT", "Temps écoulé visible pour chaque demande", "Bouton Prendre pour assigner rapidement", "Verre cassé, plat froid, autres urgences"
],
imageSrc: "http://img.b2bpic.net/free-vector/dashboard-user-panel-template_23-2148367355.jpg?_wi=1", imageAlt: "Tableau de flux des demandes urgentes"
imageSrc: "http://img.b2bpic.net/free-vector/dashboard-user-panel-template_23-2148367355.jpg", imageAlt: "Tableau de flux des demandes urgentes"
},
{
id: "2", title: "Performance équipe & pourboires", descriptions: [
@@ -156,7 +156,7 @@ export default function LandingPage() {
id: "6", title: "Réduction des temps d'attente", descriptions: [
"Optimisation automatique du service", "Alertes urgences en priorité", "Distribution équilibrée des tâches", "Satisfaction client maximale"
],
imageSrc: "http://img.b2bpic.net/free-vector/dashboard-user-panel-template_23-2148367355.jpg?_wi=2", imageAlt: "Gestion optimisée des urgences"
imageSrc: "http://img.b2bpic.net/free-vector/dashboard-user-panel-template_23-2148367355.jpg", imageAlt: "Gestion optimisée des urgences"
}
]}
gridVariant="two-columns-alternating-heights"
@@ -213,11 +213,11 @@ export default function LandingPage() {
<TestimonialCardTwelve
testimonials={[
{ id: "1", name: "Loïc Durand", imageSrc: "http://img.b2bpic.net/free-photo/closeup-serious-business-leader-sitting_1262-4831.jpg", imageAlt: "professional CEO portrait businessman" },
{ id: "2", name: "Julien Deprez", imageSrc: "http://img.b2bpic.net/free-photo/portrait-young-male-florist-work_23-2149127319.jpg?_wi=1", imageAlt: "restaurant manager professional portrait" },
{ id: "2", name: "Julien Deprez", imageSrc: "http://img.b2bpic.net/free-photo/portrait-young-male-florist-work_23-2149127319.jpg", imageAlt: "restaurant manager professional portrait" },
{ id: "3", name: "Inès Sahli", imageSrc: "http://img.b2bpic.net/free-photo/portrait-young-business-woman-standing-bu-office-building_1303-31732.jpg", imageAlt: "female restaurant manager portrait" },
{ id: "4", name: "Antoine Morel", imageSrc: "http://img.b2bpic.net/free-photo/young-waitress-near-banquet-table_23-2147830631.jpg", imageAlt: "restaurant team member portrait" },
{ id: "5", name: "Élodie Bertrand", imageSrc: "http://img.b2bpic.net/free-photo/person-enjoying-their-time-dj-party_23-2149658437.jpg", imageAlt: "restaurant owner male portrait" },
{ id: "6", name: "Nicolas Ferrand", imageSrc: "http://img.b2bpic.net/free-photo/portrait-young-male-florist-work_23-2149127319.jpg?_wi=2", imageAlt: "restaurant manager professional portrait" }
{ id: "6", name: "Nicolas Ferrand", imageSrc: "http://img.b2bpic.net/free-photo/portrait-young-male-florist-work_23-2149127319.jpg", imageAlt: "restaurant manager professional portrait" }
]}
cardTitle="Easyer redonne du temps humain à vos équipes. Loïc Durand, Founder & CEO"
cardTag="Déjà adopté par +200 restaurants en France"

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;
fontSize?: number;
fontFamily?: string;
fontWeight?: number | 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,
fontSize = 48,
fontFamily = 'Arial, sans-serif',
fontWeight = 'bold',
fill = 'currentColor',
className,
}) => {
const textProps = {
x: '50%',
y: '50%',
textAnchor: 'middle' as const,
dominantBaseline: 'middle' as const,
fontSize,
fontFamily,
fontWeight,
fill,
};
return (
<svg
ref={svgRef}
viewBox={viewBox}
className={cls("w-full", className)}
style={{ aspectRatio: aspectRatio }}
preserveAspectRatio="none"
viewBox="0 0 200 100"
className={className}
role="img"
aria-label={`${logoText} logo`}
aria-label={text}
>
<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"
}}
>
{logoText}
<text {...textProps}>
{text}
</text>
</svg>
);
});
SvgTextLogo.displayName = "SvgTextLogo";
};
export default SvgTextLogo;