diff --git a/packages/website/src/components/TankSearch/components/FilterControl.tsx b/packages/website/src/components/TankSearch/components/FilterControl.tsx index bd3c86e5e..f8d9b372d 100644 --- a/packages/website/src/components/TankSearch/components/FilterControl.tsx +++ b/packages/website/src/components/TankSearch/components/FilterControl.tsx @@ -8,7 +8,16 @@ import { TIER_ROMAN_NUMERALS, } from "@blitzkit/core"; import { TrashIcon } from "@radix-ui/react-icons"; -import { Box, Button, DropdownMenu, Flex, Text } from "@radix-ui/themes"; +import { + Box, + Button, + DropdownMenu, + Flex, + IconButton, + Inset, + Popover, + Text, +} from "@radix-ui/themes"; import { times } from "lodash-es"; import type { ComponentProps, ReactNode } from "react"; import { awaitableGameDefinitions } from "../../../core/awaitables/gameDefinitions"; @@ -18,6 +27,7 @@ import { classIcons } from "../../ClassIcon"; import { GunAutoloaderIcon } from "../../GunAutoloaderIcon"; import { GunAutoreloaderIcon } from "../../GunAutoreloaderIcon"; import { GunRegularIcon } from "../../GunRegularIcon"; +import { MissingShellIcon } from "../../MissingShellIcon"; import { ResearchedIcon } from "../../ResearchedIcon"; const gameDefinitions = await awaitableGameDefinitions; @@ -60,6 +70,7 @@ export function FilterControl() { + ); } @@ -478,3 +489,94 @@ function TypeFilter() { ); } + +function ShellFilter() { + return ( + + + + + + ); +} + +function IndividualShellFilter({ + index, + premium, +}: { + index: number; + premium?: boolean; +}) { + const shells = TankFilters.use((state) => state.shells); + + return ( + + + + {shells[index] === null && ( + + + + )} + {shells[index] !== null && ( + + )} + + + + + + + {Object.values(ShellType).map((shellType) => { + if (typeof shellType === "string") return null; + + const selected = shells[index] === shellType; + + return ( + { + const mutated = [...shells] as TankFilters["shells"]; + + mutated[index] = selected ? null : shellType; + + TankFilters.mutate((draft) => { + draft.shells = mutated; + }); + }} + highContrast={selected} + color={selected ? undefined : "gray"} + > + + + ); + })} + + + + + ); +}