Merge version_1 into main #2

Merged
bender merged 2 commits from version_1 into main 2026-03-12 13:30:07 +00:00
2 changed files with 57 additions and 64 deletions

View File

@@ -48,18 +48,18 @@ export default function LandingPage() {
tag="Премудрая Студия Красоты"
tagIcon={Sparkles}
tagAnimation="slide-up"
background={{ variant: "circleGradient" }}
background={{ variant: "glowing-orb" }}
leftCarouselItems={[
{ imageSrc: "http://img.b2bpic.net/free-photo/hairdresser-taking-care-her-client_23-2149319772.jpg?_wi=1", imageAlt: "Интерьер салона красоты Премудрая" },
{ imageSrc: "http://img.b2bpic.net/free-photo/furniture-room-background-sofa-contemporary_1203-4464.jpg?_wi=1", imageAlt: "Салон красоты дизайн интерьер" },
{ imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-masseur-working_23-2148531268.jpg?_wi=1", imageAlt: "Услуга массажа в салоне" },
{ imageSrc: "http://img.b2bpic.net/free-photo/woman-getting-her-hair-dyed-beauty-salon_23-2149167372.jpg?_wi=1", imageAlt: "Профессиональная укладка волос" }
{ imageSrc: "http://img.b2bpic.net/free-photo/hairdresser-taking-care-her-client_23-2149319772.jpg", imageAlt: "Интерьер салона красоты Премудрая" },
{ imageSrc: "http://img.b2bpic.net/free-photo/furniture-room-background-sofa-contemporary_1203-4464.jpg", imageAlt: "Салон красоты дизайн интерьер" },
{ imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-masseur-working_23-2148531268.jpg", imageAlt: "Услуга массажа в салоне" },
{ imageSrc: "http://img.b2bpic.net/free-photo/woman-getting-her-hair-dyed-beauty-salon_23-2149167372.jpg", imageAlt: "Профессиональная укладка волос" }
]}
rightCarouselItems={[
{ imageSrc: "http://img.b2bpic.net/free-photo/woman-applying-cosmetics-model_23-2148398679.jpg?_wi=1", imageAlt: "Профессиональный макияж" },
{ imageSrc: "http://img.b2bpic.net/free-photo/close-up-beauty-nail-art_23-2149249941.jpg?_wi=1", imageAlt: "Ногтевой сервис и маникюр" },
{ imageSrc: "http://img.b2bpic.net/free-photo/woman-taking-care-girl-salon_23-2147769838.jpg?_wi=1", imageAlt: "Парикмахерские услуги" },
{ imageSrc: "http://img.b2bpic.net/free-photo/female-makeup-artist-showing-stylish-eyeshadow-palette_23-2148113252.jpg?_wi=1", imageAlt: "Макияж невесты" }
{ imageSrc: "http://img.b2bpic.net/free-photo/woman-applying-cosmetics-model_23-2148398679.jpg", imageAlt: "Профессиональный макияж" },
{ imageSrc: "http://img.b2bpic.net/free-photo/close-up-beauty-nail-art_23-2149249941.jpg", imageAlt: "Ногтевой сервис и маникюр" },
{ imageSrc: "http://img.b2bpic.net/free-photo/woman-taking-care-girl-salon_23-2147769838.jpg", imageAlt: "Парикмахерские услуги" },
{ imageSrc: "http://img.b2bpic.net/free-photo/female-makeup-artist-showing-stylish-eyeshadow-palette_23-2148113252.jpg", imageAlt: "Макияж невесты" }
]}
buttons={[
{ text: "Записаться на процедуру", href: "booking" },
@@ -75,15 +75,15 @@ export default function LandingPage() {
features={[
{
id: "makeup", title: "Макияж", author: "Профессиональные услуги", description: "Образ невесты (6000 ₽) • Экспресс сбор (4100 ₽) • Вечерний макияж (2400 ₽) • Дневной макияж (2000 ₽)", tags: ["Макияж", "Укладка"],
imageSrc: "http://img.b2bpic.net/free-photo/woman-applying-cosmetics-model_23-2148398679.jpg?_wi=2", imageAlt: "Профессиональный макияж"
imageSrc: "http://img.b2bpic.net/free-photo/woman-applying-cosmetics-model_23-2148398679.jpg", imageAlt: "Профессиональный макияж"
},
{
id: "hair", title: "Парикмахерские услуги", author: "Мастера-стилисты", description: "Женская стрижка (от 2000 ₽) • Окрашивание корней (4300 ₽) • Однотонное окрашивание (5400 ₽) • Airtouch/Баллаяж/Мелирование (8500 ₽) • Укладка волос (1700 ₽)", tags: ["Стрижка", "Окрашивание"],
imageSrc: "http://img.b2bpic.net/free-photo/woman-taking-care-girl-salon_23-2147769838.jpg?_wi=2", imageAlt: "Парикмахерские услуги"
imageSrc: "http://img.b2bpic.net/free-photo/woman-taking-care-girl-salon_23-2147769838.jpg", imageAlt: "Парикмахерские услуги"
},
{
id: "nails", title: "Ногтевой сервис", author: "Специалисты по ногтям", description: "Маникюр + гель лак (2300 ₽) • Педикюр + гель лак (2900 ₽) • Наращивание ногтей (3100 ₽) • Гигиенический маникюр (1300 ₽) • Гигиенический педикюр (2300 ₽)", tags: ["Маникюр", "Педикюр"],
imageSrc: "http://img.b2bpic.net/free-photo/close-up-beauty-nail-art_23-2149249941.jpg?_wi=2", imageAlt: "Ногтевой сервис"
imageSrc: "http://img.b2bpic.net/free-photo/close-up-beauty-nail-art_23-2149249941.jpg", imageAlt: "Ногтевой сервис"
},
{
id: "brows-lashes", title: "Брови и ресницы", author: "Мастера красоты", description: "Окрашивание бровей (900 ₽) • Долговременная укладка бровей (2000 ₽) • Ламинирование + окрашивание ресниц (2000 ₽)", tags: ["Брови", "Ресницы"],
@@ -91,7 +91,7 @@ export default function LandingPage() {
},
{
id: "massage", title: "Массаж", author: "Мастера терапевты", description: "Массаж тела (от 2800 ₽) • Массаж лица (3300 ₽) • Лимфодренажный массаж • Скульптурно-буккальный массаж", tags: ["Массаж", "Спа"],
imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-masseur-working_23-2148531268.jpg?_wi=2", imageAlt: "Массаж тела и лица"
imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-masseur-working_23-2148531268.jpg", imageAlt: "Массаж тела и лица"
}
]}
animationType="slide-up"
@@ -99,7 +99,7 @@ export default function LandingPage() {
description="Полный спектр услуг красоты и ухода от опытных мастеров с использованием сертифицированных материалов"
tag="Услуги"
tagIcon={Sparkles}
tagAnimation="entrance-slide"
tagAnimation="slide-up"
textboxLayout="default"
useInvertedBackground={false}
buttons={[
@@ -115,7 +115,7 @@ export default function LandingPage() {
description="Премудрая - это салон красоты, где профессионализм встречается с заботой. Каждая клиентка получает индивидуальный подход и высочайший уровень сервиса."
tag="О нас"
tagIcon={Heart}
tagAnimation="entrance-slide"
tagAnimation="slide-up"
bulletPoints={[
{ title: "Опытные мастера", description: "Команда квалифицированных специалистов с многолетним опытом в индустрии красоты", icon: Award },
{ title: "Сертифицированные материалы", description: "Используем только профессиональные и сертифицированные материалы премиум-качества", icon: CheckCircle },
@@ -124,7 +124,7 @@ export default function LandingPage() {
{ title: "Удобное расположение", description: "Центральное расположение в ЖК Ocean City с ближайшей парковкой", icon: MapPin },
{ title: "Режим работы 8:00 - 21:00", description: "Работаем ежедневно, чтобы вы могли записаться в удобное для вас время", icon: Clock }
]}
imageSrc="http://img.b2bpic.net/free-photo/hairdresser-taking-care-her-client_23-2149319772.jpg?_wi=2"
imageSrc="http://img.b2bpic.net/free-photo/hairdresser-taking-care-her-client_23-2149319772.jpg"
imageAlt="Интерьер салона красоты Премудрая"
mediaAnimation="slide-up"
imagePosition="right"
@@ -137,13 +137,13 @@ export default function LandingPage() {
<ContactCTA
tag="Весенняя акция"
tagIcon={Leaf}
tagAnimation="entrance-slide"
tagAnimation="slide-up"
title="Весеннее обновление для вашего тела и лица"
description="Весной наш организм нуждается в перезагрузке. Снимите напряжение, избавьтесь от отёков и верните коже сияние. Специальная цена на первый сеанс для новых гостей!"
buttons={[
{ text: "Записаться на массаж", href: "booking" }
]}
buttonAnimation="entrance-slide"
buttonAnimation="slide-up"
background={{ variant: "radial-gradient" }}
useInvertedBackground={false}
/>
@@ -175,7 +175,7 @@ export default function LandingPage() {
description="Мнения и впечатления реальных посетительниц салона красоты Премудрая"
tag="Отзывы"
tagIcon={Star}
tagAnimation="entrance-slide"
tagAnimation="slide-up"
textboxLayout="default"
useInvertedBackground={false}
/>
@@ -185,16 +185,16 @@ export default function LandingPage() {
<ProductCardFour
products={[
{
id: "gallery-1", name: "Интерьер салона", price: "Атмосфера", variant: "Комфорт и уют", imageSrc: "http://img.b2bpic.net/free-photo/furniture-room-background-sofa-contemporary_1203-4464.jpg?_wi=2", imageAlt: "Интерьер салона красоты"
id: "gallery-1", name: "Интерьер салона", price: "Атмосфера", variant: "Комфорт и уют", imageSrc: "http://img.b2bpic.net/free-photo/furniture-room-background-sofa-contemporary_1203-4464.jpg", imageAlt: "Интерьер салона красоты"
},
{
id: "gallery-2", name: "Профессиональный маникюр", price: "Красота", variant: "Гель-лак премиум", imageSrc: "http://img.b2bpic.net/free-photo/beautiful-female-hands-finger-nail-treatment-making-process-professional-nail-file-drill-action-beauty-hand-care-concept_343596-1827.jpg", imageAlt: "Маникюр с гель-лаком"
},
{
id: "gallery-3", name: "Трендовая прическа", price: "Стиль", variant: "Многоуровневая укладка", imageSrc: "http://img.b2bpic.net/free-photo/woman-getting-her-hair-dyed-beauty-salon_23-2149167372.jpg?_wi=2", imageAlt: "Современная прическа"
id: "gallery-3", name: "Трендовая прическа", price: "Стиль", variant: "Многоуровневая укладка", imageSrc: "http://img.b2bpic.net/free-photo/woman-getting-her-hair-dyed-beauty-salon_23-2149167372.jpg", imageAlt: "Современная прическа"
},
{
id: "gallery-4", name: "Макияж невесты", price: "Элегантность", variant: "Свадебный образ", imageSrc: "http://img.b2bpic.net/free-photo/female-makeup-artist-showing-stylish-eyeshadow-palette_23-2148113252.jpg?_wi=2", imageAlt: "Свадебный макияж"
id: "gallery-4", name: "Макияж невесты", price: "Элегантность", variant: "Свадебный образ", imageSrc: "http://img.b2bpic.net/free-photo/female-makeup-artist-showing-stylish-eyeshadow-palette_23-2148113252.jpg", imageAlt: "Свадебный макияж"
}
]}
gridVariant="asymmetric-60-wide-40-narrow"
@@ -203,7 +203,7 @@ export default function LandingPage() {
description="Примеры результатов работы наших мастеров - вдохновение для вашего преображения"
tag="Галерея"
tagIcon={Image}
tagAnimation="entrance-slide"
tagAnimation="slide-up"
textboxLayout="default"
useInvertedBackground={false}
/>
@@ -231,14 +231,14 @@ export default function LandingPage() {
<ContactCTA
tag="Связаться с нами"
tagIcon={Phone}
tagAnimation="entrance-slide"
tagAnimation="slide-up"
title="Записаться на процедуру"
description="Позвоните нам, напишите в WhatsApp или заполните форму. Администратор свяжется с вами в течение 10 минут для подтверждения записи."
buttons={[
{ text: "Позвонить +7 (3412) 33-01-91", href: "tel:+73412330191" },
{ text: "Написать в WhatsApp", href: "https://wa.me/79026550191" }
]}
buttonAnimation="entrance-slide"
buttonAnimation="slide-up"
background={{ variant: "plain" }}
useInvertedBackground={false}
/>

View File

@@ -1,51 +1,44 @@
"use client";
import { 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;
export interface SvgTextLogoProps extends SVGProps<SVGSVGElement> {
text?: string;
fontSize?: number;
fontWeight?: 'normal' | 'bold';
letterSpacing?: number;
fillColor?: 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 = 48,
fontWeight = 'bold',
letterSpacing = 0,
fillColor = '#000000',
...props
}) => {
return (
<svg
ref={svgRef}
viewBox={viewBox}
className={cls("w-full", className)}
style={{ aspectRatio: aspectRatio }}
preserveAspectRatio="none"
role="img"
aria-label={`${logoText} logo`}
width={300}
height={100}
viewBox="0 0 300 100"
xmlns="http://www.w3.org/2000/svg"
{...props}
>
<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"
fontSize={fontSize}
fontWeight={fontWeight}
letterSpacing={letterSpacing}
fill={fillColor}
fontFamily="Arial, sans-serif"
>
{logoText}
{text}
</text>
</svg>
);
});
};
SvgTextLogo.displayName = "SvgTextLogo";
export default SvgTextLogo;
export default SvgTextLogo;