This commit is contained in:
sbb45
2026-06-17 21:41:07 +05:00
parent abb9190b35
commit c4b8b05b32
10 changed files with 42 additions and 74 deletions
+1 -1
View File
@@ -552,7 +552,7 @@ export default function AdminHomePage() {
onChange={(e) => setNewBooking({ ...newBooking, contactMethod: e.target.value })}
>
<option value="telegram">Telegram</option>
<option value="whatsapp">WhatsApp</option>
<option value="max">Max</option>
<option value="phone">Телефон</option>
</StyledFormSelect>
</div>
+15 -31
View File
@@ -39,11 +39,9 @@ export default function Home() {
const [faqs, setFaqs] = useState<Faq[]>([])
const [contacts, setContacts] = useState<Contacts[]>([])
const inst = contacts.find((c)=> c.type ==='inst');
const phone = contacts.find((c)=> c.type ==='phone');
const tg = contacts.find((c)=> c.type ==='tg');
const gis2 = contacts.find((c)=> c.type ==='gis2');
const whatsapp = contacts.find((c)=> c.type ==='whatsapp');
useEffect(() => {
async function fetchFaq() {
@@ -63,7 +61,7 @@ export default function Home() {
return (
<MainPage>
<HeaderPage whatsapp={whatsapp?.value} tg={tg?.value} phone={phone?.value} inst={inst?.value} gis2={gis2?.value} />
<HeaderPage tg={tg?.value} phone={phone?.value} gis2={gis2?.value} />
<main>
<StartBlock>
@@ -99,21 +97,13 @@ export default function Home() {
<FeaturesList />
</Section>
<Section>
<GameList tg={tg?.value} whatsapp={whatsapp?.value} />
<GameList tg={tg?.value} />
</Section>
<AppSection>
<AppText>
<StyledButton label={'Приложение'} padding={'12px 38px'} fontSize={'24px'} />
<h2>Загрузи и бронируй заранее.</h2>
<p>Следи за событиями, прокачивай профиль и получай вознаграждения. Пополнение счёта c <span>Kaspi</span> в пару кликов.</p>
<div>
<Link href={'https://play.google.com/store/apps/details?id=com.f5computers.langame_aggregator'}>
<Image src={'/icons/appGooglePlay.png'} alt={'google play'} width={220} height={84} loading={"lazy"} />
</Link>
<Link href={'https://apps.apple.com/us/app/langame/id1642484175?l=ru'}>
<Image src={'/icons/appAppStore.png'} alt={'appStore'} width={235} height={84} loading={"lazy"} />
</Link>
</div>
<h2>Скоро в твоём смартфоне.</h2>
<p>Приложение Strike Arena сейчас в разработке. Бронирование, события, профиль и пополнение счёта <span>всё в одном месте. Скоро.</span></p>
</AppText>
<Image className={'phoneApp'} src={'/images/phone.png'} alt={'phone'} width={412} height={414} loading={"lazy"} />
</AppSection>
@@ -137,22 +127,7 @@ export default function Home() {
Политика<br/> конфиденциальности
</Link>
<HeaderBlock className={'footerBlock'}>
<div>{inst ? (
<Link href={inst.value} target="_blank">
<Image src="/icons/inst.png" alt="inst" width={60} height={60} loading="lazy" />
</Link>
) : (
<Image src="/icons/inst.png" alt="inst" width={60} height={60} loading="lazy" />
)}
{whatsapp ? (
<Link href={whatsapp.value} target="_blank">
<Image src="/icons/whatsapp.png" alt="whatsapp" width={58} height={58} loading="lazy" />
</Link>
) : (
<Image src="/icons/whatsapp.png" alt="whatsapp" width={58} height={58} loading="lazy" />
)}
<div>
{tg ? (
<Link href={tg.value} className="tgLink" target="_blank">
<Image src="/icons/tg.png" alt="tg" width={48} height={48} loading="lazy" />
@@ -161,6 +136,14 @@ export default function Home() {
<Image src="/icons/tg.png" alt="tg" width={48} height={48} loading="lazy" />
)}
<Link href="https://vk.ru" target="_blank">
<Image src="/icons/vk.svg" alt="vk" width={52} height={52} loading="lazy" />
</Link>
<Link href="https://max.ru" target="_blank">
<Image src="/icons/max.svg" alt="max" width={52} height={52} loading="lazy" />
</Link>
{gis2 ? (
<Link href={gis2.value} className="gis2Link headerImage" target="_blank">
<Image src="/icons/location.svg" alt="geo" width={37} height={50} loading="lazy" />
@@ -169,7 +152,8 @@ export default function Home() {
<Link href={'/'} className="gis2Link headerImage" target="_blank">
<Image src="/icons/location.svg" alt="geo" width={37} height={50} loading="lazy" />
</Link>
)}</div>
)}
</div>
<HeaderPhone className={'footerPhone'}>
<p style={{ marginBottom: 0 }}>{phone?.value}</p>
<h4 onClick={() => open('zayvka-game')}>Заказать звонок</h4>
+1 -3
View File
@@ -12,10 +12,8 @@ type Contacts = {
export default function AboutPage() {
const [contacts, setContacts] = useState<Contacts[]>([])
const phone = contacts.find((c)=> c.type ==='phone');
const inst = contacts.find((c)=> c.type ==='inst');
const tg = contacts.find((c)=> c.type ==='tg');
const gis2 = contacts.find((c)=> c.type ==='gis2');
const whatsapp = contacts.find((c)=> c.type ==='whatsapp');
useEffect(() => {
async function fetchContact() {
@@ -27,7 +25,7 @@ export default function AboutPage() {
}, []);
return (
<MainPage>
<HeaderPage whatsapp={whatsapp?.value} tg={tg?.value} phone={phone?.value} inst={inst?.value} gis2={gis2?.value} />
<HeaderPage tg={tg?.value} phone={phone?.value} gis2={gis2?.value} />
<PolicyContent>
<h1>Политика конфиденциальности</h1>
<p>1. Общие положения Данная Политика конфиденциальности (далее &quot;Политика&quot;) определяет порядок
+3 -3
View File
@@ -56,9 +56,9 @@ export default function BronModal() {
{title:"PS лаундж", label:"PS зона в общем холле. На 2-4 человека"},
]
const contactOptions: { type: "telegram" | "whatsapp" | "phone"; icon: string }[] = [
const contactOptions: { type: "telegram" | "max" | "phone"; icon: string }[] = [
{ type: 'telegram', icon: '/icons/tg.png' },
{ type: 'whatsapp', icon: '/icons/whatsapp.png' },
{ type: 'max', icon: '/icons/max.svg' },
{ type: 'phone', icon: '/icons/phone.png' },
];
@@ -146,7 +146,7 @@ export default function BronModal() {
<div>
{(isOpen || isVisible) && (
<Overlay>
<ModalWrapper $animateIn={shouldAnimateIn}>
<ModalWrapper $animateIn={shouldAnimateIn} $compact={screen === 'pc3' || screen === 'pc3-2'}>
<CloseButton onClick={close}>×</CloseButton>
{screen === 'start' && (
<>
+3 -12
View File
@@ -141,7 +141,8 @@ const GameText = styled.div`
text-align: center;
text-transform: none;
span{
background: #8921ff;
background: ${lightGreenColor};
color: #000;
text-transform: uppercase;
padding: 4px 18px;
}
@@ -198,10 +199,9 @@ interface Game{
}
type Links = {
tg?: string;
whatsapp?: string;
}
const GameList:React.FC<Links> = ({tg, whatsapp}) => {
const GameList:React.FC<Links> = ({tg}) => {
const [platform, setPlatform] = useState<'pc'|'ps'>('pc')
const [games, setGames] = useState<Game[]>([]);
const open = useBronStore((s) => s.open);
@@ -276,15 +276,6 @@ const GameList:React.FC<Links> = ({tg, whatsapp}) => {
<Image src={'/icons/tg_primary.png'} alt={'tg'} width={78} height={78} loading={"lazy"} />
</Link>
)}
{whatsapp ? (
<Link href={whatsapp} target={"_blank"}>
<Image src={'/icons/wa_primary.png'} alt={'whatsapp'} width={81} height={81} loading={"lazy"} />
</Link>
) : (
<Link href={'/'}>
<Image src={'/icons/wa_primary.png'} alt={'whatsapp'} width={81} height={81} loading={"lazy"} />
</Link>
)}
</div>
</GameText>
</div>
+10 -21
View File
@@ -5,9 +5,7 @@ import {useBronStore} from "@/store/useBronStore";
import styled from "styled-components";
type HeaderPageProps = {
whatsapp?: string;
tg?: string;
inst?: string;
phone?: string;
gis2?: string;
}
@@ -188,7 +186,7 @@ const MobileMenu = styled.div<{ $isOpenMenu: boolean }>`
`;
const HeaderPage: React.FC<HeaderPageProps> = ({whatsapp, tg, inst, gis2, phone}) => {
const HeaderPage: React.FC<HeaderPageProps> = ({tg, gis2, phone}) => {
const [isMenuOpen, setIsMenuOpen] = useState(false);
const open = useBronStore((s) => s.open);
@@ -217,16 +215,6 @@ const HeaderPage: React.FC<HeaderPageProps> = ({whatsapp, tg, inst, gis2, phone}
</Link>
)}
{whatsapp ? (
<Link href={whatsapp} className="headerImage" target="_blank">
<Image src="/icons/whatsapp.png" alt="whatsapp" width={58} height={58} loading="lazy" />
</Link>
) : (
<Link href={'/'} className="headerImage" target="_blank">
<Image src="/icons/whatsapp.png" alt="whatsapp" width={58} height={58} loading="lazy" />
</Link>
)}
{tg ? (
<Link href={tg} className="tgLink headerImage" target="_blank">
<Image src="/icons/tg.png" alt="tg" width={48} height={48} loading="lazy" />
@@ -237,13 +225,13 @@ const HeaderPage: React.FC<HeaderPageProps> = ({whatsapp, tg, inst, gis2, phone}
</Link>
)}
{inst ? (
<Link href={inst} target="_blank">
<Image src="/icons/inst.png" alt="inst" width={60} height={60} loading="lazy" />
</Link>
) : (
<Image src="/icons/inst.png" alt="inst" width={60} height={60} loading="lazy" />
)}
<Link href="https://vk.ru" className="headerImage" target="_blank">
<Image src="/icons/vk.svg" alt="vk" width={52} height={52} loading="lazy" />
</Link>
<Link href="https://max.ru" className="headerImage" target="_blank">
<Image src="/icons/max.svg" alt="max" width={52} height={52} loading="lazy" />
</Link>
<HeaderPhone>
<p style={{ marginBottom: 0 }}>{phone || '+7 775 260 85 59'}</p>
@@ -256,8 +244,9 @@ const HeaderPage: React.FC<HeaderPageProps> = ({whatsapp, tg, inst, gis2, phone}
</button>
{gis2 && <Link href={gis2} target="_blank">2 ГИС</Link>}
{whatsapp && <Link href={whatsapp} target="_blank">WhatsApp</Link>}
{tg && <Link href={tg} target="_blank">Telegram</Link>}
<Link href="https://vk.ru" target="_blank">VK</Link>
<Link href="https://max.ru" target="_blank">Max</Link>
{phone && <Link href={`tel:${phone}`}>{phone}</Link>}
</MobileMenu>
+1 -1
View File
@@ -21,7 +21,7 @@ interface FormData {
name?: string
game?: string
contact?: string
contactMethod?: 'telegram' | 'whatsapp' | 'phone'
contactMethod?: 'telegram' | 'max' | 'phone'
}
interface BronStore {
+4 -2
View File
@@ -13,7 +13,7 @@ export const Overlay = styled.div`
align-items: center;
justify-content: center;
`;
export const ModalWrapper = styled.div<{ $animateIn: boolean }>`
export const ModalWrapper = styled.div<{ $animateIn: boolean; $compact?: boolean }>`
display: flex;
justify-content: center;
align-items: center;
@@ -23,7 +23,9 @@ export const ModalWrapper = styled.div<{ $animateIn: boolean }>`
padding: 32px;
border-radius: 20px;
width: 70vw;
height: 94vh;
height: ${({ $compact }) => $compact ? 'auto' : '94vh'};
max-height: ${({ $compact }) => $compact ? '80vh' : 'none'};
overflow-y: ${({ $compact }) => $compact ? 'auto' : 'visible'};
position: relative;
opacity: ${({ $animateIn }) => ($animateIn ? 1 : 0)};
transform: ${({ $animateIn }) =>