diff --git a/src/app/tools/tankopedia/[id]/components/Model/HeroSection.tsx b/src/app/tools/tankopedia/[id]/components/Model/HeroSection.tsx index b48e2a5e1..24bdec2b8 100644 --- a/src/app/tools/tankopedia/[id]/components/Model/HeroSection.tsx +++ b/src/app/tools/tankopedia/[id]/components/Model/HeroSection.tsx @@ -1,17 +1,16 @@ import { ChevronLeftIcon, MixIcon } from '@radix-ui/react-icons'; -import { Box, Button, Flex, Heading, Text } from '@radix-ui/themes'; +import { Box, Button, Flex, Heading } from '@radix-ui/themes'; import Link from 'next/link'; import { Suspense, use, useEffect, useMemo, useRef, useState } from 'react'; import { classIcons } from '../../../../../../components/ClassIcon'; -import { ScienceIcon } from '../../../../../../components/ScienceIcon'; import { ThicknessRange } from '../../../../../../components/StaticArmor'; import { resolveNearPenetration } from '../../../../../../core/blitz/resolveNearPenetration'; import { tankDefinitions } from '../../../../../../core/blitzkit/tankDefinitions'; -import { TIER_ROMAN_NUMERALS } from '../../../../../../core/blitzkit/tankDefinitions/constants'; import { useFullScreen } from '../../../../../../hooks/useFullScreen'; -import strings from '../../../../../../lang/en-US.json'; +import * as App from '../../../../../../stores/app'; import * as Duel from '../../../../../../stores/duel'; import { Options } from './components/Options'; +import { MetaSection } from './MetaSection'; import { TankSandbox } from './TankSandbox'; import { TankSandboxLoader } from './TankSandboxLoader'; @@ -20,6 +19,7 @@ interface HeroSectionProps { } export function HeroSection({ id }: HeroSectionProps) { + const developerMode = App.useDeferred(false, (state) => state.developerMode); const canvas = useRef(null); const protagonist = Duel.use((state) => state.protagonist.tank); const antagonist = Duel.use((state) => state.antagonist.tank); @@ -38,6 +38,7 @@ export function HeroSection({ id }: HeroSectionProps) { : undefined; const awaitedTankDefinitions = use(tankDefinitions); const tank = awaitedTankDefinitions[id]; + const ClassIcon = classIcons[tank.class]; const thicknessRange = useMemo(() => { const entries = Object.values(awaitedTankDefinitions); const filtered = entries.filter((thisTank) => thisTank.tier === tank.tier); @@ -66,12 +67,13 @@ export function HeroSection({ id }: HeroSectionProps) { pt={{ initial: '6', md: '0' }} style={{ background: 'var(--color-surface)', position: 'relative' }} height={{ initial: 'calc(75vh - 4rem)', md: undefined }} - minHeight="30rem" + minHeight={{ initial: '30rem' }} gap="4" > - - {' '} - - - {protagonist.name} - - - - - {tank.testing && ( - - - Tank in testing - - - - )} - - - Tier {TIER_ROMAN_NUMERALS[protagonist.tier]}{' '} - { - (strings.common.nations_adjectives as Record)[ - protagonist.nation - ] - }{' '} - {strings.common.tank_class_short[protagonist.class]} - - - - + + + + {' '} + + + + {protagonist.name} + + + + diff --git a/src/app/tools/tankopedia/[id]/components/Model/MetaSection/components/Listing.tsx b/src/app/tools/tankopedia/[id]/components/Model/MetaSection/components/Listing.tsx index 688dc1cd4..bab7f34c8 100644 --- a/src/app/tools/tankopedia/[id]/components/Model/MetaSection/components/Listing.tsx +++ b/src/app/tools/tankopedia/[id]/components/Model/MetaSection/components/Listing.tsx @@ -6,7 +6,7 @@ type ListingProps = TextProps & { export function Listing({ label, ...props }: ListingProps) { return ( - + {label} diff --git a/src/app/tools/tankopedia/[id]/components/Model/MetaSection/index.tsx b/src/app/tools/tankopedia/[id]/components/Model/MetaSection/index.tsx index 8b6083599..793b0212b 100644 --- a/src/app/tools/tankopedia/[id]/components/Model/MetaSection/index.tsx +++ b/src/app/tools/tankopedia/[id]/components/Model/MetaSection/index.tsx @@ -1,138 +1,127 @@ -import { Code, Flex, Heading } from '@radix-ui/themes'; +import { Code, Flex } from '@radix-ui/themes'; import { classIcons } from '../../../../../../../components/ClassIcon'; import { asset } from '../../../../../../../core/blitzkit/asset'; -import { tankIcon } from '../../../../../../../core/blitzkit/tankIcon'; import strings from '../../../../../../../lang/en-US.json'; import * as App from '../../../../../../../stores/app'; import * as Duel from '../../../../../../../stores/duel'; import { Listing } from './components/Listing'; -export function MetaSection() { +interface MetaSectionProps { + naked?: boolean; +} + +export function MetaSection({ naked }: MetaSectionProps) { const developerMode = App.useDeferred(false, (state) => state.developerMode); const tank = Duel.use((state) => state.protagonist.tank); const ClassIcon = classIcons[tank.class]; + const content = ( + + {tank.nameFull && {tank.nameFull}} + + + {tank.nation} + { + strings.common.nations[ + tank.nation as keyof typeof strings.common.nations + ] + } + + + {tank.tier} + + + + {strings.common.tank_class_short[tank.class]} + + + + {strings.common.tree_type[tank.treeType]} + + {developerMode && ( + + {tank.id} + + )} + {tank.treeType === 'premium' && ( + + + {tank.price.value / 400} + gold + + + )} + + + {tank.price.value.toLocaleString()} + {tank.price.type} + + + + + {(tank.price.value / 2).toLocaleString()} + {tank.price.type} + + + {tank.xp && ( + + + {tank.xp.toLocaleString()} + xp + + + )} + + ); + + if (naked) return content; return ( - - - Economics - - - - - Overview - - - {tank.nameFull && ( - {tank.nameFull} - )} - - - {tank.nation} - { - strings.common.nations[ - tank.nation as keyof typeof strings.common.nations - ] - } - - - {tank.tier} - - - - {strings.common.tank_class_short[tank.class]} - - - - {strings.common.tree_type[tank.treeType]} - - {developerMode && ( - - {tank.id} - - )} - - - - - Economics - - - {tank.treeType === 'premium' && ( - - - {tank.price.value / 400} - gold - - - )} - - - {tank.price.value.toLocaleString()} - {tank.price.type} - - - - - {(tank.price.value / 2).toLocaleString()} - {tank.price.type} - - - {tank.xp && ( - - - {tank.xp.toLocaleString()} - xp - - - )} - - - + + {content} ); }