feat: filter tooltips

This commit is contained in:
TrèsAbhi committed 2024-08-25 18:45:01 -05:00
1 parent da6691928e
commit 2e97ccd40d
2 files changed
+51 -4

No files matched your search

@@ -1,7 +1,7 @@
'use client'; 'use client';
import { ReloadIcon } from '@radix-ui/react-icons'; import { ReloadIcon } from '@radix-ui/react-icons';
import { Box, Flex, IconButton, Text } from '@radix-ui/themes'; import { Box, Flex, IconButton, Text, Tooltip } from '@radix-ui/themes';
import { times } from 'lodash'; import { times } from 'lodash';
import { use } from 'react'; import { use } from 'react';
import { classIcons } from '../../../../components/ClassIcon'; import { classIcons } from '../../../../components/ClassIcon';
@@ -14,6 +14,7 @@ import { asset } from '../../../../core/blitzkit/asset';
import { gameDefinitions } from '../../../../core/blitzkit/gameDefinitions'; import { gameDefinitions } from '../../../../core/blitzkit/gameDefinitions';
import { Tier } from '../../../../core/blitzkit/tankDefinitions'; import { Tier } from '../../../../core/blitzkit/tankDefinitions';
import { TIER_ROMAN_NUMERALS } from '../../../../core/blitzkit/tankDefinitions/constants'; import { TIER_ROMAN_NUMERALS } from '../../../../core/blitzkit/tankDefinitions/constants';
import strings from '../../../../lang/en-US.json';
import * as TankFilters from '../../../../stores/tankFilters'; import * as TankFilters from '../../../../stores/tankFilters';
interface FilterControlProps { interface FilterControlProps {
@@ -39,6 +40,7 @@ export function FilterControl({ compact }: FilterControlProps) {
const selected = filters.tiers?.includes(tier); const selected = filters.tiers?.includes(tier);
return ( return (
<Tooltip key={tier} content={`Tier ${tier}`}>
<IconButton <IconButton
key={tier} key={tier}
variant={selected ? 'solid' : 'soft'} variant={selected ? 'solid' : 'soft'}
@@ -57,6 +59,7 @@ export function FilterControl({ compact }: FilterControlProps) {
> >
<Text size="2">{TIER_ROMAN_NUMERALS[tier]}</Text> <Text size="2">{TIER_ROMAN_NUMERALS[tier]}</Text>
</IconButton> </IconButton>
</Tooltip>
); );
})} })}
</Flex> </Flex>
@@ -66,6 +69,7 @@ export function FilterControl({ compact }: FilterControlProps) {
const selected = filters.tiers?.includes(tier); const selected = filters.tiers?.includes(tier);
return ( return (
<Tooltip key={tier} content={`Tier ${tier}`}>
<IconButton <IconButton
key={tier} key={tier}
variant={selected ? 'solid' : 'soft'} variant={selected ? 'solid' : 'soft'}
@@ -84,6 +88,7 @@ export function FilterControl({ compact }: FilterControlProps) {
> >
<Text size="2">{TIER_ROMAN_NUMERALS[tier]}</Text> <Text size="2">{TIER_ROMAN_NUMERALS[tier]}</Text>
</IconButton> </IconButton>
</Tooltip>
); );
})} })}
</Flex> </Flex>
@@ -101,8 +106,15 @@ export function FilterControl({ compact }: FilterControlProps) {
const selected = filters.nations?.includes(nation); const selected = filters.nations?.includes(nation);
return ( return (
<IconButton <Tooltip
content={
strings.common.nations[
nation as keyof typeof strings.common.nations
]
}
key={nation} key={nation}
>
<IconButton
variant={selected ? 'solid' : 'soft'} variant={selected ? 'solid' : 'soft'}
color={selected ? undefined : 'gray'} color={selected ? undefined : 'gray'}
highContrast highContrast
@@ -124,6 +136,7 @@ export function FilterControl({ compact }: FilterControlProps) {
src={asset(`flags/circle/${nation}.webp`)} src={asset(`flags/circle/${nation}.webp`)}
/> />
</IconButton> </IconButton>
</Tooltip>
); );
})} })}
</Flex> </Flex>
@@ -134,6 +147,14 @@ export function FilterControl({ compact }: FilterControlProps) {
const selected = filters.nations?.includes(nation); const selected = filters.nations?.includes(nation);
return ( return (
<Tooltip
content={
strings.common.nations[
nation as keyof typeof strings.common.nations
]
}
key={nation}
>
<IconButton <IconButton
key={nation} key={nation}
style={{ flex: 1 }} style={{ flex: 1 }}
@@ -158,6 +179,7 @@ export function FilterControl({ compact }: FilterControlProps) {
src={asset(`flags/circle/${nation}.webp`)} src={asset(`flags/circle/${nation}.webp`)}
/> />
</IconButton> </IconButton>
</Tooltip>
); );
})} })}
</Flex> </Flex>
@@ -173,8 +195,11 @@ export function FilterControl({ compact }: FilterControlProps) {
const selected = filters.classes?.includes(tankClass); const selected = filters.classes?.includes(tankClass);
return ( return (
<IconButton <Tooltip
content={strings.common.tank_class_medium[tankClass]}
key={tankClass} key={tankClass}
>
<IconButton
variant={selected ? 'solid' : 'soft'} variant={selected ? 'solid' : 'soft'}
radius="none" radius="none"
color={selected ? undefined : 'gray'} color={selected ? undefined : 'gray'}
@@ -193,6 +218,7 @@ export function FilterControl({ compact }: FilterControlProps) {
> >
<Icon style={{ width: '1em', height: '1em' }} /> <Icon style={{ width: '1em', height: '1em' }} />
</IconButton> </IconButton>
</Tooltip>
); );
})} })}
</Flex> </Flex>
@@ -202,6 +228,7 @@ export function FilterControl({ compact }: FilterControlProps) {
style={{ borderRadius: 'var(--radius-full)' }} style={{ borderRadius: 'var(--radius-full)' }}
direction={compact ? 'column' : { sm: 'row', initial: 'column' }} direction={compact ? 'column' : { sm: 'row', initial: 'column' }}
> >
<Tooltip content="Researchable">
<IconButton <IconButton
variant={filters.types?.includes('researchable') ? 'solid' : 'soft'} variant={filters.types?.includes('researchable') ? 'solid' : 'soft'}
radius="none" radius="none"
@@ -210,7 +237,9 @@ export function FilterControl({ compact }: FilterControlProps) {
onClick={() => onClick={() =>
mutateTankFilters((draft) => { mutateTankFilters((draft) => {
if (draft.types?.includes('researchable')) { if (draft.types?.includes('researchable')) {
draft.types = draft.types?.filter((t) => t !== 'researchable'); draft.types = draft.types?.filter(
(t) => t !== 'researchable',
);
} else { } else {
draft.types = [...(draft.types ?? []), 'researchable']; draft.types = [...(draft.types ?? []), 'researchable'];
} }
@@ -219,6 +248,8 @@ export function FilterControl({ compact }: FilterControlProps) {
> >
<ResearchedIcon style={{ width: '1em', height: '1em' }} /> <ResearchedIcon style={{ width: '1em', height: '1em' }} />
</IconButton> </IconButton>
</Tooltip>
<Tooltip content="Premium">
<IconButton <IconButton
variant={filters.types?.includes('premium') ? 'solid' : 'soft'} variant={filters.types?.includes('premium') ? 'solid' : 'soft'}
radius="none" radius="none"
@@ -241,6 +272,8 @@ export function FilterControl({ compact }: FilterControlProps) {
<ResearchedIcon style={{ width: '1em', height: '1em' }} /> <ResearchedIcon style={{ width: '1em', height: '1em' }} />
</Text> </Text>
</IconButton> </IconButton>
</Tooltip>
<Tooltip content="Collector">
<IconButton <IconButton
variant={filters.types?.includes('collector') ? 'solid' : 'soft'} variant={filters.types?.includes('collector') ? 'solid' : 'soft'}
radius="none" radius="none"
@@ -263,6 +296,7 @@ export function FilterControl({ compact }: FilterControlProps) {
<ResearchedIcon style={{ width: '1em', height: '1em' }} /> <ResearchedIcon style={{ width: '1em', height: '1em' }} />
</Text> </Text>
</IconButton> </IconButton>
</Tooltip>
</Flex> </Flex>
<Flex <Flex
@@ -270,6 +304,7 @@ export function FilterControl({ compact }: FilterControlProps) {
style={{ borderRadius: 'var(--radius-full)' }} style={{ borderRadius: 'var(--radius-full)' }}
direction={compact ? 'column' : { sm: 'row', initial: 'column' }} direction={compact ? 'column' : { sm: 'row', initial: 'column' }}
> >
<Tooltip content="Include test tank">
<IconButton <IconButton
variant={filters.testing === 'include' ? 'solid' : 'soft'} variant={filters.testing === 'include' ? 'solid' : 'soft'}
radius="none" radius="none"
@@ -285,6 +320,8 @@ export function FilterControl({ compact }: FilterControlProps) {
style={{ width: '1em', height: '1em', color: 'currentColor' }} style={{ width: '1em', height: '1em', color: 'currentColor' }}
/> />
</IconButton> </IconButton>
</Tooltip>
<Tooltip content="Exclude test tank">
<IconButton <IconButton
variant={filters.testing === 'exclude' ? 'solid' : 'soft'} variant={filters.testing === 'exclude' ? 'solid' : 'soft'}
radius="none" radius="none"
@@ -300,6 +337,8 @@ export function FilterControl({ compact }: FilterControlProps) {
style={{ width: '1em', height: '1em', color: 'currentColor' }} style={{ width: '1em', height: '1em', color: 'currentColor' }}
/> />
</IconButton> </IconButton>
</Tooltip>
<Tooltip content="Only test tank">
<IconButton <IconButton
variant={filters.testing === 'only' ? 'solid' : 'soft'} variant={filters.testing === 'only' ? 'solid' : 'soft'}
radius="none" radius="none"
@@ -315,6 +354,7 @@ export function FilterControl({ compact }: FilterControlProps) {
style={{ width: '1em', height: '1em', color: 'currentColor' }} style={{ width: '1em', height: '1em', color: 'currentColor' }}
/> />
</IconButton> </IconButton>
</Tooltip>
</Flex> </Flex>
<Box> <Box>
+7
View File
@@ -58,6 +58,13 @@
"AT-SPG": "TD" "AT-SPG": "TD"
}, },
"tank_class_medium": {
"lightTank": "Light",
"mediumTank": "Medium",
"heavyTank": "Heavy",
"AT-SPG": "Tank destroyer"
},
"tree_type": { "tree_type": {
"researchable": "Tech tree", "researchable": "Tech tree",
"premium": "Premium", "premium": "Premium",