This commit is contained in:
Batyr 2025-12-29 18:48:05 +05:00
parent 0c3821a9bb
commit 2da9746df0
14 changed files with 369 additions and 8 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

1
dist/assets/index-Dmj6yV91.js vendored Normal file

File diff suppressed because one or more lines are too long

1
dist/assets/index-l_IUIdQT.css vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

6
dist/index.html vendored
View File

@ -66,10 +66,10 @@
})(window, document, "script", "dataLayer", "GTM-NK394LVK");
</script>
<title>Turkmen Textile</title>
<script type="module" crossorigin src="/assets/index-Bp_j2PCu.js"></script>
<script type="module" crossorigin src="/assets/index-Dmj6yV91.js"></script>
<link rel="modulepreload" crossorigin href="/assets/react-vendor-CE_Ks92h.js">
<link rel="modulepreload" crossorigin href="/assets/ui-library-CURTjtxW.js">
<link rel="stylesheet" crossorigin href="/assets/index--gnBA1VZ.css">
<link rel="modulepreload" crossorigin href="/assets/ui-library-CVZjQZ_5.js">
<link rel="stylesheet" crossorigin href="/assets/index-l_IUIdQT.css">
</head>
<body>
<div id="root"></div>

View File

@ -8,7 +8,7 @@ function App() {
<ReactLenis
root
options={{
lerp: 0.07,
lerp: 0.1,
}}
>
<Header />

View File

@ -14,7 +14,8 @@ const buttonVariants = cva(
teritary: "bg-teritary hover:bg-teritary/90 text-on_surface",
destructive:
"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",
outline: "border border-outline text-on_surface",
outline:
"border border-outline text-on_surface hover:bg-primary hover:text-white duration-300",
secondary:
"bg-secondary_container hover:bg-secondary_container/80 text-on_secondary_container",
ghost: "hover:bg-accent hover:text-accent-foreground",

View File

@ -84,6 +84,14 @@
"title": "Exhibitors",
"drop": true,
"dropDownContent": [
{
"text": "Participation Options",
"link": "/participation-options"
},
{
"text": "Partnership Opportunities",
"link": "/partner-opportunities"
},
{
"text": "Book a stand",
"link": "/stend-form"

View File

@ -83,6 +83,15 @@
"title": "Участникам",
"drop": true,
"dropDownContent": [
{
"text": "Варианты участия",
"link": "/participation-options"
},
{
"text": "Партнерские возможности",
"link": "/partner-opportunities"
},
{ "text": "Забронировать стенд", "link": "/stend-form" },
{
"text": "Почему стоит учатсвовать",

View File

@ -10,3 +10,5 @@ export { default as Participants } from "./participants";
export { default as StendForm } from "./stend-form";
export { default as Impressions } from "./impressions";
export { default as ImpressionsTm } from "./impressions-tm";
export { default as ParticipationOptions } from "./participation-options";
export { default as PartnerOpportunities } from "./partner-opportunities";

View File

@ -0,0 +1,236 @@
import { Cover, Container } from "@/components/layout";
import { Button } from "@/components/ui/button";
import { useScrollTop } from "@/hooks/use-scroll-top";
import { useLangStore } from "@/store/lang";
const exampleImage = "/about-place.jpg";
const participationOptionsContent = {
title: {
ruText: "Варианты участия",
enText: "Participation Options",
},
exhibitionSpace: {
ruText: "Аренда выставочной площади",
enText: "Exhibition Space Rental",
},
spaceOnly: {
ruText: "Необорудованная площадь",
enText: "Space Only",
},
example: {
ruText: "Пример",
enText: "Example",
},
spaceOnlyDescription: {
ruText:
"Чистая площадь для последующей застройки (стандартная застройка или по индивидуальному дизайну). Включает: общую уборку и охрану павильона. Электричество в стоимость не включено.",
enText:
"Raw exhibition space for subsequent construction (standard booth or customized design). Includes general cleaning and pavilion security. Electricity is not included in the price.",
},
standardBooth: {
ruText: "Стандартная застройка",
enText: "Standard Booth Construction",
},
customBooth: {
ruText: "Индивидуальный дизайн",
enText: "Custom Booth Design",
},
boothExampleDescription: {
ruText:
"Включает: базовое электроподключение (220V - 2 кВт), стены (стандартные или индивидуальный дизайн). Общую уборку и охрану павильона.",
enText:
"Includes: basic electrical connection (220V - 2 kW), walls (standard or customized design), general cleaning, and pavilion security.",
},
registrationFee: {
ruText: "Участие со стендом включает регистрационную оплату.",
enText: "Participation with a booth includes a registration fee.",
},
pricingNote: {
ruText: "Пожалуйста уточните стоимость у менеджера проекта.",
enText: "Please check the pricing with the project manager.",
},
partnershipTitle: {
ruText: "Партнёрские возможности",
enText: "Partnership Opportunities",
},
partnershipIntro: {
ruText:
'Если Вы заинтересованы в более активном выходе на рынок или целью Вашей компании является максимальное продвижение на рынок, используйте пакет "Партнерство выставки". Приобретая данную опцию, Вы получаете:',
enText:
'If your company is interested in a more active market presence or aims to maximize market promotion, we recommend the "Exhibition Partnership" package. By choosing this option, you will receive:',
},
partnershipItems: [
{
ruText: "Статус Партнера выставки, в зависимости от выбранного пакета",
enText: "Exhibition Partner status, depending on the selected package",
},
{
ruText:
"Масштабную рекламную кампанию (размещение логотипа компании на всей рекламной продукции выставки)",
enText:
"A large-scale advertising campaign (placement of your company logo on all exhibition promotional materials)",
},
{
ruText: "Широкую узнаваемость",
enText: "Wide recognition",
},
{
ruText: "Ассоциирование выставки с именем Вашей компании и др.",
enText:
"Association of the exhibition with your company's name, and more",
},
],
partnershipNote: {
ruText: "Пожалуйста, уточните стоимость у менеджера проекта.",
enText: "Please contact the project manager to clarify the cost.",
},
exampleImageAlt: {
ruText: "Пример площадки",
enText: "Example space",
},
standardExampleAlt: {
ruText: "Пример стандартной застройки",
enText: "Standard booth example",
},
customExampleAlt: {
ruText: "Пример индивидуального дизайна",
enText: "Custom booth example",
},
};
const ArrowIcon = () => (
<svg
width="14"
height="20"
viewBox="0 0 14 20"
fill="none"
xmlns="http://www.w3.org/2000/svg"
aria-hidden="true"
>
<path
d="M7 1V15M7 15L2 10M7 15L12 10"
stroke="currentColor"
strokeWidth="1.5"
strokeLinecap="round"
strokeLinejoin="round"
/>
</svg>
);
export default function ParticipationOptions() {
useScrollTop();
const lang = useLangStore((state) => state.lang);
const getText = (item: { ruText: string; enText: string }) =>
lang === "ru" ? item.ruText : item.enText;
return (
<div>
<Cover title={getText(participationOptionsContent.title)} />
<Container className="page-padding">
<div className="mx-auto max-w-[900px] text-on_surface">
<p className="mb-10 text-3xl font-medium">
{getText(participationOptionsContent.title)}
</p>
<Button className="mb-2 bg-primary md:text-sm w-full">
1. {getText(participationOptionsContent.exhibitionSpace)}
</Button>
<Button
variant={"outline"}
className="w-full mb-10 border border-primary py-1 text-center text-[11px] text-primary md:text-sm"
>
{getText(participationOptionsContent.spaceOnly)}
</Button>
<p className="mb-5 text-center text-lg text-[11px]">
{getText(participationOptionsContent.example)}
</p>
<div className="mx-auto h-[180px] w-full max-w-[754px] md:h-[377px]">
<img
src={exampleImage}
alt={getText(participationOptionsContent.exampleImageAlt)}
className="size-full rounded-sm object-cover"
/>
</div>
<div className="mt-5 text-center text-[11px] leading-relaxed">
<p>{getText(participationOptionsContent.spaceOnlyDescription)}</p>
</div>
<div className="mt-10 grid grid-cols-1 gap-6 md:grid-cols-2">
<div className="w-full flex flex-col items-center gap-2 text-primary">
<ArrowIcon />
<div className="w-full border border-primary py-1 text-center text-[11px] text-primary md:text-sm">
{getText(participationOptionsContent.standardBooth)}
</div>
</div>
<div className="flex flex-col items-center gap-2 text-primary">
<ArrowIcon />
<div className="w-full border border-primary py-1 text-center text-[11px] text-primary md:text-sm">
{getText(participationOptionsContent.customBooth)}
</div>
</div>
</div>
<div className="mt-10 grid grid-cols-1 gap-6 md:grid-cols-2">
<div>
<p className="mb-5 text-[11px]">
{getText(participationOptionsContent.example)}:
</p>
<img
src={exampleImage}
alt={getText(participationOptionsContent.standardExampleAlt)}
className="h-[160px] w-full rounded-sm object-cover md:h-[190px]"
/>
<p className="mt-2 text-[11px] leading-relaxed">
{getText(participationOptionsContent.boothExampleDescription)}
</p>
</div>
<div>
<p className="mb-5 text-[11px]">
{getText(participationOptionsContent.example)}:
</p>
<img
src={exampleImage}
alt={getText(participationOptionsContent.customExampleAlt)}
className="h-[160px] w-full rounded-sm object-cover md:h-[190px]"
/>
<p className="mt-2 text-[11px] leading-relaxed">
{getText(participationOptionsContent.boothExampleDescription)}
</p>
</div>
</div>
<p className="mt-6 text-center text-sm text-on_surface">
{getText(participationOptionsContent.registrationFee)}
</p>
<p className="text-center text-[11px]">
{getText(participationOptionsContent.pricingNote)}
</p>
<div className="mt-6 bg-primary py-3 text-center text-xs font-medium text-on_primary md:text-sm">
2. {getText(participationOptionsContent.partnershipTitle)}
</div>
<div className="mt-3 text-[11px] leading-relaxed">
<p className="mb-2">
{getText(participationOptionsContent.partnershipIntro)}
</p>
<ul className="list-disc pl-5">
{participationOptionsContent.partnershipItems.map((item) => (
<li key={item.enText}>{getText(item)}</li>
))}
</ul>
<p className="mt-2">
{getText(participationOptionsContent.partnershipNote)}
</p>
</div>
</div>
</Container>
</div>
);
}

View File

@ -0,0 +1,93 @@
import { Cover, Container } from "@/components/layout";
import { useScrollTop } from "@/hooks/use-scroll-top";
const partnerPackages = [
"Генеральный партнер выставки",
"Партнер Ленты Ведущих Посетителей",
"Партнер деловой программы",
"Партнер вечернего приема",
"Партнер пакетов посетителей",
"Партнер каталога выставки",
"Партнер VIP делегации",
"Партнер выставки",
];
export default function PartnerOpportunities() {
useScrollTop();
return (
<div>
<Cover title="Партнерские возможности" />
<Container className="page-padding text-sm!">
<div className="mx-auto max-w-[900px] text-on_surface">
<h2 className="mb-3 text-[15px] font-medium">
Партнерские возможности
</h2>
<div className="mb-4 rounded-sm bg-surface_container px-4 py-3 text-[11px] leading-relaxed text-on_surface_v">
Предлагаем Вам воспользоваться комплексными возможностями
партнерскими пакетами, разработанными под различные маркетинговые
задачи компании-участника, которые позволят максимально использовать
коммерческий потенциал выставки для усиления бренда Вашей компании и
бесспорно повысят эффективность продвижения Вашей компании.
</div>
<p className="mb-4 text-[11px] leading-relaxed text-on_surface_v">
Партнерство выставки это всегда больше, чем просто участие. Это
прекрасная возможность выгодно подать Вашу продукцию широкой публике
в соответствии с Вашими основными целями и задачами. В каждом
партнерском пакете предоставлены уникальные позиции, специально
сформированные таким образом, что Вы наиболее точно и эффективно
передаете обращение к целевой аудитории.
</p>
<h3 className="mb-2 text-[12px] font-medium">
Партнерство выставки Turkmen Textile позволит:
</h3>
<ul className="mb-4 list-disc pl-5 text-[11px] leading-relaxed text-on_surface_v">
<li>Укрепить позиции Вашей компании на рынке.</li>
<li>Обеспечить существенное преимущество в конкурентной среде.</li>
<li>Закрепить имидж успешного бренда Вашей компании.</li>
<li>
Сделать Вашу торговую марку узнаваемой для широкого круга
участников и посетителей выставки.
</li>
<li>Выделить Вашу компанию среди других участников.</li>
</ul>
<div className="mb-6 rounded-sm border border-outline px-4 py-3 text-center text-[10px] uppercase text-on_surface_v">
Вы хотите, чтобы в профессиональной среде именно Вашу компанию
считали ключевым игроком на рынке? Тогда заявите о себе громче всех!
</div>
<h3 className="mb-2 text-[12px] font-medium">
Варианты партнерских пакетов:
</h3>
<ul className="mb-4 border-t border-outline_v">
{partnerPackages.map((item) => (
<li
key={item}
className="flex items-center gap-2 border-b border-outline_v py-2 text-[11px] text-on_surface_v"
>
<span className="text-xs text-primary"></span>
<span>{item}</span>
</li>
))}
</ul>
<p className="text-[10px] leading-relaxed text-on_surface_v">
Данные опции являются базовыми, но мы всегда готовы обсудить вопрос
о специальных проектах в рамках партнерства выставки, которые будут
соответствовать Вашему бюджету, потребностям и целям.
</p>
<p className="text-[10px] leading-relaxed text-on_surface_v">
По вопросам цен и дополнительных опций партнерских пакетов выставки
KIFT, пожалуйста, обращайтесь к{" "}
<span className="text-primary underline">ОРГАНИЗАТОРАМ</span>
</p>
</div>
</Container>
</div>
);
}

View File

@ -12,6 +12,8 @@ import {
News,
NewsInner,
Participants,
ParticipationOptions,
PartnerOpportunities,
StendForm,
} from "./pages";
@ -48,6 +50,16 @@ export const routes = [
path: "impressions-tm",
errorElement: <Error />,
},
{
element: <ParticipationOptions />,
path: "participation-options",
errorElement: <Error />,
},
{
element: <PartnerOpportunities />,
path: "partner-opportunities",
errorElement: <Error />,
},
],
},
];