feat: buttons

This commit is contained in:
TrèsAbhi committed 2024-06-20 13:20:03 -05:00
1 parent 4927f1315c
commit 34cbfd2c9b
3 files changed
+144 -37

No files matched your search

+118 -37
View File
@@ -13,6 +13,7 @@ import { use } from 'react';
import { classIcons } from '../../../components/ClassIcon'; import { classIcons } from '../../../components/ClassIcon';
import { Link } from '../../../components/Link'; import { Link } from '../../../components/Link';
import PageWrapper from '../../../components/PageWrapper'; import PageWrapper from '../../../components/PageWrapper';
import { ResearchedIcon } from '../../../components/ResearchedIcon';
import { TANK_CLASSES } from '../../../components/Tanks/components/Item/constants'; import { TANK_CLASSES } from '../../../components/Tanks/components/Item/constants';
import { asset } from '../../../core/blitzkit/asset'; import { asset } from '../../../core/blitzkit/asset';
import { gameDefinitions } from '../../../core/blitzkit/gameDefinitions'; import { gameDefinitions } from '../../../core/blitzkit/gameDefinitions';
@@ -30,17 +31,45 @@ export default function Page() {
return ( return (
<PageWrapper color="purple" size={1028 + 256}> <PageWrapper color="purple" size={1028 + 256}>
<Flex gap="8">
<Flex direction="column" gap="4" align="start" pt="9">
<Text mb="-3">Class</Text>
<Flex <Flex
direction="column" gap="8"
direction={{
initial: 'column',
sm: 'row',
}}
pt={{
initial: '0',
sm: '6',
}}
>
<Flex
direction={{
initial: 'row',
sm: 'column',
}}
gap="4"
align="start"
pt={{
initial: '0',
sm: '8',
}}
>
<Flex
direction={{
initial: 'row',
sm: 'column',
}}
overflow="hidden" overflow="hidden"
style={{ style={{
borderRadius: 'var(--radius-4)', borderRadius: 'var(--radius-4)',
}} }}
> >
<Flex> <Flex
direction={{
sm: 'row',
initial: 'column',
}}
>
{times(5, (index) => { {times(5, (index) => {
const tier = (index + 1) as Tier; const tier = (index + 1) as Tier;
@@ -60,7 +89,12 @@ export default function Page() {
); );
})} })}
</Flex> </Flex>
<Flex> <Flex
direction={{
sm: 'row',
initial: 'column',
}}
>
{times(5, (index) => { {times(5, (index) => {
const tier = (index + 6) as Tier; const tier = (index + 6) as Tier;
@@ -82,50 +116,32 @@ export default function Page() {
</Flex> </Flex>
</Flex> </Flex>
<Text mb="-3">Type</Text>
<Flex <Flex
overflow="hidden" direction={{
style={{ initial: 'row',
borderRadius: 'var(--radius-full)', sm: 'column',
}} }}
>
{TANK_CLASSES.map((tankClass) => {
const Icon = classIcons[tankClass];
return (
<IconButton
key={tankClass}
variant="soft"
radius="none"
color="gray"
highContrast
>
<Icon style={{ width: '1em', height: '1em' }} />
</IconButton>
);
})}
</Flex>
<Text mb="-3">Nation</Text>
<Flex
direction="column"
overflow="hidden" overflow="hidden"
style={{ style={{
borderRadius: 'var(--radius-4)', borderRadius: 'var(--radius-4)',
}} }}
> >
<Flex> <Flex
direction={{
sm: 'row',
initial: 'column',
}}
>
{awaitedGameDefinitions.nations {awaitedGameDefinitions.nations
.slice(0, Math.ceil(awaitedGameDefinitions.nations.length / 2)) .slice(0, Math.ceil(awaitedGameDefinitions.nations.length / 2))
.map((nation) => ( .map((nation) => (
<IconButton <IconButton
style={{ flex: 1 }} // style={{ flex: 1 }}
variant="soft" variant="soft"
color="gray" color="gray"
highContrast highContrast
radius="none" radius="none"
> >
{/* TODO: trim icons */}
<img <img
style={{ width: '1em', height: '1em' }} style={{ width: '1em', height: '1em' }}
src={asset(`flags/circle/${nation}.webp`)} src={asset(`flags/circle/${nation}.webp`)}
@@ -133,7 +149,12 @@ export default function Page() {
</IconButton> </IconButton>
))} ))}
</Flex> </Flex>
<Flex> <Flex
direction={{
sm: 'row',
initial: 'column',
}}
>
{awaitedGameDefinitions.nations {awaitedGameDefinitions.nations
.slice(Math.ceil(awaitedGameDefinitions.nations.length / 2)) .slice(Math.ceil(awaitedGameDefinitions.nations.length / 2))
.map((nation) => ( .map((nation) => (
@@ -154,15 +175,75 @@ export default function Page() {
</Flex> </Flex>
</Flex> </Flex>
<Text mb="-3">Test tanks</Text> <Flex
overflow="hidden"
style={{
borderRadius: 'var(--radius-full)',
}}
direction={{
sm: 'row',
initial: 'column',
}}
>
{TANK_CLASSES.map((tankClass) => {
const Icon = classIcons[tankClass];
return (
<IconButton
key={tankClass}
variant="soft"
radius="none"
color="gray"
highContrast
>
<Icon style={{ width: '1em', height: '1em' }} />
</IconButton>
);
})}
</Flex>
<Flex
overflow="hidden"
style={{
borderRadius: 'var(--radius-full)',
}}
direction={{
sm: 'row',
initial: 'column',
}}
>
<IconButton variant="soft" radius="none" color="gray" highContrast>
<ResearchedIcon style={{ width: '1em', height: '1em' }} />
</IconButton>
<IconButton variant="soft" radius="none" color="gray" highContrast>
<Text
color="amber"
style={{ display: 'flex', justifyContent: 'center' }}
>
<ResearchedIcon style={{ width: '1em', height: '1em' }} />
</Text>
</IconButton>
<IconButton variant="soft" radius="none" color="gray" highContrast>
<Text
color="blue"
style={{ display: 'flex', justifyContent: 'center' }}
>
<ResearchedIcon style={{ width: '1em', height: '1em' }} />
</Text>
</IconButton>
</Flex>
<Flex direction="column" gap="2">
<Text wrap="nowrap">Test tanks</Text>
<RadioGroup.Root defaultValue="include"> <RadioGroup.Root defaultValue="include">
<RadioGroup.Item value="include">Include</RadioGroup.Item> <RadioGroup.Item value="include">Include</RadioGroup.Item>
<RadioGroup.Item value="exclude">Exclude</RadioGroup.Item> <RadioGroup.Item value="exclude">Exclude</RadioGroup.Item>
<RadioGroup.Item value="only">Only</RadioGroup.Item> <RadioGroup.Item value="only">Only</RadioGroup.Item>
</RadioGroup.Root> </RadioGroup.Root>
</Flex> </Flex>
</Flex>
<Flex direction="column" gap="8" mt="4" flexGrow="1"> <Flex direction="column" gap="8" flexGrow="1">
{range(10, 0).map((tierUntyped) => { {range(10, 0).map((tierUntyped) => {
const tier = tierUntyped as Tier; const tier = tierUntyped as Tier;
const tierTanks = awaitedTanksDefinitionsArray const tierTanks = awaitedTanksDefinitionsArray
+25
View File
@@ -0,0 +1,25 @@
import { ComponentProps } from 'react';
export function ResearchedIcon(props: ComponentProps<'svg'>) {
return (
<svg
width="64"
height="64"
viewBox="0 0 64 64"
fill="none"
xmlns="http://www.w3.org/2000/svg"
{...props}
>
<path
d="M63 25V43L48 51H60C58.5 53.6667 51.6 59 36 59L62 25H63Z"
fill="currentColor"
/>
<path d="M48 3L60 18L54 27L48 3Z" fill="currentColor" />
<path
d="M3 25V43L18 51H6C7.5 53.6667 14.4 59 30 59L4 25H3Z"
fill="currentColor"
/>
<path d="M18 3L6 18L12 27L18 3Z" fill="currentColor" />
</svg>
);
}
@@ -197,6 +197,7 @@ export const tankNames = tanksDefinitionsArray.then((tanks) =>
export type Tier = (typeof TIERS)[number]; export type Tier = (typeof TIERS)[number];
// TODO: DEPRICATE THISuuu
export const NATIONS = tanksDefinitionsArray.then((tanks) => { export const NATIONS = tanksDefinitionsArray.then((tanks) => {
const nations = Array.from( const nations = Array.from(
new Set<string>(Object.values(tanks).map((tank) => tank.nation)), new Set<string>(Object.values(tanks).map((tank) => tank.nation)),