This commit is contained in:
egortriston
2025-07-12 18:21:09 +03:00
parent 791152a862
commit cebe3a10ac
9 changed files with 264 additions and 98 deletions

View File

@ -1,10 +1,16 @@
import React from "react";
import React, { useState } from "react";
const CatalogSubscribe: React.FC = () => (
<div className="w-layout-blockcontainer container subscribe w-container">
<div className="w-layout-hflex flex-block-18">
<img
src="/images/resource2.png"
alt="Ресурс 2"
className="mt-[-18px]"
/>
<div className="div-block-9">
<h3 className="heading-3 sub">Подпишитесь на новостную рассылку</h3>
{/* <h3 className="heading-3 sub">Подпишитесь на новостную рассылку</h3> */}
<div className="text-block-14">Оставайтесь в курсе акций, <br />новинок и специальных предложений</div>
</div>
<div className="form-block-3 w-form">
@ -13,6 +19,38 @@ const CatalogSubscribe: React.FC = () => (
<input type="submit" className="submit-button-copy w-button" value="Подписаться" />
</form>
</div>
<div className="flex flex-row items-center mt-2">
{/* Кастомный чекбокс без input/label */}
{(() => {
const [checked, setChecked] = useState(false);
return (
<>
<div
className={`h-[24px] w-[24px] border border-[#8893A1] rounded-sm mr-4 flex-shrink-0 flex items-center justify-center cursor-pointer transition-colors duration-150 ${checked ? 'bg-[#EC1C24]' : 'bg-transparent'}`}
onClick={() => setChecked(v => !v)}
role="checkbox"
aria-checked={checked}
tabIndex={0}
onKeyDown={e => { if (e.key === ' ' || e.key === 'Enter') setChecked(v => !v); }}
>
<svg
className={`w-5 h-5 text-white transition-opacity duration-150 ${checked ? 'opacity-100' : 'opacity-0'}`}
fill="none"
stroke="currentColor"
strokeWidth="2"
viewBox="0 0 24 24"
>
<path d="M5 13l4 4L19 7" strokeLinecap="round" strokeLinejoin="round" />
</svg>
</div>
<span className="text-[#8893A1] text-[12px] leading-snug select-none">
Я даю свое согласие на обработку персональных данных<br />
и соглашаюсь с условиями <a href="/privacy-policy" className="underline hover:text-[#6c7684]">Политики конфиденциальности</a>
</span>
</>
);
})()}
</div>
</div>
</div>
);