feat: responsive ads

This commit is contained in:
TrèsAbhi committed 2024-06-13 13:26:12 -05:00
1 parent b4173e780b
commit 84929f9732
6 files changed
+108 -19

No files matched your search

@@ -11,6 +11,7 @@ import {
import { debounce } from 'lodash'; import { debounce } from 'lodash';
import { Fragment, use, useEffect, useRef, useState } from 'react'; import { Fragment, use, useEffect, useRef, useState } from 'react';
import { lerp } from 'three/src/math/MathUtils'; import { lerp } from 'three/src/math/MathUtils';
import { Ad, AdType } from '../../../../../../components/Ad';
import { Link } from '../../../../../../components/Link'; import { Link } from '../../../../../../components/Link';
import { applyPitchYawLimits } from '../../../../../../core/blitz/applyPitchYawLimits'; import { applyPitchYawLimits } from '../../../../../../core/blitz/applyPitchYawLimits';
import { isExplosive } from '../../../../../../core/blitz/isExplosive'; import { isExplosive } from '../../../../../../core/blitz/isExplosive';
@@ -26,14 +27,12 @@ import {
GUN_TYPE_NAMES, GUN_TYPE_NAMES,
} from '../../../../../../core/blitzkit/tankDefinitions/constants'; } from '../../../../../../core/blitzkit/tankDefinitions/constants';
import { useEquipment } from '../../../../../../hooks/useEquipment'; import { useEquipment } from '../../../../../../hooks/useEquipment';
import { useWideFormat } from '../../../../../../hooks/useWideFormat';
import { mutateDuel, useDuel } from '../../../../../../stores/duel'; import { mutateDuel, useDuel } from '../../../../../../stores/duel';
import { useTankopediaTemporary } from '../../../../../../stores/tankopedia'; import { useTankopediaTemporary } from '../../../../../../stores/tankopedia';
import { Info } from './components/Info'; import { Info } from './components/Info';
import { InfoWithDelta } from './components/InfoWithDelta'; import { InfoWithDelta } from './components/InfoWithDelta';
export function Characteristics() { export function Characteristics() {
const wideFormat = useWideFormat(960);
const awaitedEquipmentDefinitions = use(equipmentDefinitions); const awaitedEquipmentDefinitions = use(equipmentDefinitions);
const awaitedModelDefinitions = use(modelDefinitions); const awaitedModelDefinitions = use(modelDefinitions);
const awaitedProvisionDefinitions = use(provisionDefinitions); const awaitedProvisionDefinitions = use(provisionDefinitions);
@@ -128,7 +127,13 @@ export function Characteristics() {
}, [hasImprovedVerticalStabilizer]); }, [hasImprovedVerticalStabilizer]);
return ( return (
<Flex direction={wideFormat ? 'row' : 'column'} gap="8" wrap="wrap"> <Flex
gap="8"
direction={{
initial: 'column',
md: 'row',
}}
>
<Flex direction="column" gap="8" style={{ flex: 1 }}> <Flex direction="column" gap="8" style={{ flex: 1 }}>
<Flex direction="column" gap="2"> <Flex direction="column" gap="2">
<Flex align="center" gap="4"> <Flex align="center" gap="4">
@@ -480,6 +485,16 @@ export function Characteristics() {
</Flex> </Flex>
</Flex> </Flex>
<Flex
justify="center"
display={{
initial: 'flex',
xs: 'none',
}}
>
<Ad type={AdType.MediumRectangleHorizontalPurple} />
</Flex>
<Flex direction="column" gap="8" style={{ flex: 1 }}> <Flex direction="column" gap="8" style={{ flex: 1 }}>
<Flex direction="column" gap="2"> <Flex direction="column" gap="2">
<Heading size="5">Maneuverability</Heading> <Heading size="5">Maneuverability</Heading>
@@ -1,5 +1,5 @@
import { Flex, Heading } from '@radix-ui/themes'; import { Flex, Heading } from '@radix-ui/themes';
import { useWideFormat } from '../../../../../../hooks/useWideFormat'; import { Ad, AdType } from '../../../../../../components/Ad';
import { Characteristics } from '../Characteristics'; import { Characteristics } from '../Characteristics';
import { Consumables } from '../Characteristics/components/Consumables'; import { Consumables } from '../Characteristics/components/Consumables';
import { Equipment } from '../Characteristics/components/Equipment'; import { Equipment } from '../Characteristics/components/Equipment';
@@ -9,22 +9,39 @@ import { Provisions } from '../Characteristics/components/Provisions';
import { Skills } from '../Characteristics/components/Skills'; import { Skills } from '../Characteristics/components/Skills';
export function CharacteristicsSection() { export function CharacteristicsSection() {
const wideFormat = useWideFormat(880);
return ( return (
<Flex <Flex
align="center" // align="center"
px="4" px="4"
style={{ style={{
boxSizing: 'border-box', boxSizing: 'border-box',
}} }}
direction={wideFormat ? 'row' : 'column'} gap="6"
> >
<Flex <Flex
direction="column"
gap="4"
display={{
initial: 'none',
lg: 'flex',
}}
pt={{
initial: '9',
md: '0',
}}
>
<Ad type={AdType.WideSkyscraperVerticalPurple} />
<Ad type={AdType.WideSkyscraperVerticalPurple} />
</Flex>
<Flex
flexGrow="1"
gap="6" gap="6"
style={{ width: '100%' }}
direction={wideFormat ? 'row' : 'column'}
justify="center" justify="center"
direction={{
initial: 'column',
sm: 'row',
}}
> >
<Flex direction="column" gap="4"> <Flex direction="column" gap="4">
<Heading>Configuration</Heading> <Heading>Configuration</Heading>
@@ -37,10 +54,11 @@ export function CharacteristicsSection() {
</Flex> </Flex>
<Flex <Flex
style={{ flexGrow="1"
flex: 1, maxWidth={{
maxWidth: wideFormat ? 640 : undefined, initial: 'unset',
minWidth: 320, xs: '320px',
md: '640px',
}} }}
direction="column" direction="column"
gap="4" gap="4"
@@ -49,6 +67,23 @@ export function CharacteristicsSection() {
<Characteristics /> <Characteristics />
</Flex> </Flex>
</Flex> </Flex>
<Flex
direction="column"
gap="4"
height="100%"
display={{
initial: 'none',
xs: 'flex',
}}
pt={{
initial: '9',
md: '0',
}}
>
<Ad type={AdType.WideSkyscraperVerticalPurple} />
<Ad type={AdType.WideSkyscraperVerticalPurple} />
</Flex>
</Flex> </Flex>
); );
} }
+5 -4
View File
@@ -1,7 +1,8 @@
'use client'; 'use client';
import { useEffect } from 'react'; import { useEffect } from 'react';
import { MidSectionAd } from '../../../../components/MidSectionAd'; import { AdMidSectionResponsive } from '../../../../components/AdMidSectionResponsive';
import { AdMidSectionWideOnly } from '../../../../components/AdMidSectionWideOnly';
import PageWrapper from '../../../../components/PageWrapper'; import PageWrapper from '../../../../components/PageWrapper';
import { assignDuelMember } from '../../../../core/blitzkit/assignDuelMember'; import { assignDuelMember } from '../../../../core/blitzkit/assignDuelMember';
import { mutateDuel, useDuel } from '../../../../stores/duel'; import { mutateDuel, useDuel } from '../../../../stores/duel';
@@ -75,12 +76,12 @@ export default function Page({ params }: { params: { id: string } }) {
{assigned && ( {assigned && (
<> <>
<HeroSection /> <HeroSection />
<MidSectionAd /> <AdMidSectionWideOnly />
<CharacteristicsSection /> <CharacteristicsSection />
<MidSectionAd /> <AdMidSectionResponsive />
<TechTreeSection /> <TechTreeSection />
<VideoSection /> <VideoSection />
<MidSectionAd /> <AdMidSectionResponsive />
<HistorySection /> <HistorySection />
{/* <TankopediaSeparator /> */} {/* <TankopediaSeparator /> */}
</> </>
+19
View File
@@ -0,0 +1,19 @@
import { Flex, FlexProps } from '@radix-ui/themes';
import { Ad, AdType } from './Ad';
export function AdMidSectionNarrowOnly(props: FlexProps) {
return (
<Flex
justify="center"
py="4"
gap="4"
display={{
initial: 'flex',
sm: 'none',
}}
{...props}
>
<Ad type={AdType.MediumRectangleHorizontalPurple} />
</Flex>
);
}
@@ -1,7 +1,7 @@
import { Flex, FlexProps } from '@radix-ui/themes'; import { Flex, FlexProps } from '@radix-ui/themes';
import { Ad, AdType } from './Ad'; import { Ad, AdType } from './Ad';
export function MidSectionAd(props: FlexProps) { export function AdMidSectionResponsive(props: FlexProps) {
return ( return (
<Flex justify="center" py="4" gap="4" {...props}> <Flex justify="center" py="4" gap="4" {...props}>
<Ad <Ad
+19
View File
@@ -0,0 +1,19 @@
import { Flex, FlexProps } from '@radix-ui/themes';
import { Ad, AdType } from './Ad';
export function AdMidSectionWideOnly(props: FlexProps) {
return (
<Flex
justify="center"
py="4"
gap="4"
display={{
initial: 'none',
sm: 'flex',
}}
{...props}
>
<Ad type={AdType.LeaderboardHorizontalPurple} />
</Flex>
);
}