mirror of
https://github.com/blitzkit/blitzkit.git
synced 2026-11-10 11:16:10 +01:00
ai can you do this? probably not
This commit is contained in:
1 parent
234d927313
commit
01e3763f1e
4 files changed
+63
-62
No files matched your search
@@ -23,7 +23,8 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.Item,
|
.Item,
|
||||||
.CheckboxItem {
|
.CheckboxItem,
|
||||||
|
.RadioItem {
|
||||||
position: relative;
|
position: relative;
|
||||||
|
|
||||||
background-color: var(--gray-3);
|
background-color: var(--gray-3);
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
.filters {
|
.filters {
|
||||||
display: flex;
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
|
||||||
gap: var(--space-3);
|
gap: var(--space-3);
|
||||||
|
|
||||||
|
|||||||
@@ -5,9 +5,9 @@ import locales from "@blitzkit/i18n/locales.json";
|
|||||||
import { ShellType, TankType } from "@blitzkit/protos";
|
import { ShellType, TankType } from "@blitzkit/protos";
|
||||||
import {
|
import {
|
||||||
CheckIcon,
|
CheckIcon,
|
||||||
|
DotFilledIcon,
|
||||||
LockClosedIcon,
|
LockClosedIcon,
|
||||||
LockOpen2Icon,
|
LockOpen2Icon,
|
||||||
ResetIcon,
|
|
||||||
TrashIcon,
|
TrashIcon,
|
||||||
} from "@radix-ui/react-icons";
|
} from "@radix-ui/react-icons";
|
||||||
import { Fragment } from "react";
|
import { Fragment } from "react";
|
||||||
@@ -27,7 +27,6 @@ import { MissingShellIcon } from "../MissingShellIcon";
|
|||||||
import { ResearchedIcon } from "../ResearchedIcon";
|
import { ResearchedIcon } from "../ResearchedIcon";
|
||||||
import { ScienceIcon } from "../ScienceIcon";
|
import { ScienceIcon } from "../ScienceIcon";
|
||||||
import { ScienceOffIcon } from "../ScienceOffIcon";
|
import { ScienceOffIcon } from "../ScienceOffIcon";
|
||||||
import { Text } from "../Text";
|
|
||||||
import { Tooltip } from "../Tooltip";
|
import { Tooltip } from "../Tooltip";
|
||||||
import styles from "./index.module.css";
|
import styles from "./index.module.css";
|
||||||
|
|
||||||
@@ -163,13 +162,13 @@ export function TankSearchFilters() {
|
|||||||
<TestFilter />
|
<TestFilter />
|
||||||
|
|
||||||
<GunTypeFilter />
|
<GunTypeFilter />
|
||||||
{/* <ShellFilter />
|
<ShellFilter />
|
||||||
|
|
||||||
<ConsumablesFilter />
|
<ConsumablesFilter />
|
||||||
<ProvisionsFilter />
|
<ProvisionsFilter />
|
||||||
<GameModeAbilitiesFilter />
|
<GameModeAbilitiesFilter />
|
||||||
|
|
||||||
<ResetButton /> */}
|
<ResetButton />
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -183,7 +182,7 @@ function ResetButton() {
|
|||||||
TankFilters.set(TankFilters.initial);
|
TankFilters.set(TankFilters.initial);
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<ResetIcon />
|
<TrashIcon />
|
||||||
</IconButton>
|
</IconButton>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -586,11 +585,11 @@ function TypeFilter() {
|
|||||||
|
|
||||||
function ShellFilter() {
|
function ShellFilter() {
|
||||||
return (
|
return (
|
||||||
<Flex>
|
<div className={styles.grouped}>
|
||||||
<IndividualShellFilter index={0} />
|
<IndividualShellFilter index={0} />
|
||||||
<IndividualShellFilter index={1} premium />
|
<IndividualShellFilter index={1} premium />
|
||||||
<IndividualShellFilter index={2} />
|
<IndividualShellFilter index={2} />
|
||||||
</Flex>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -607,15 +606,13 @@ function IndividualShellFilter({
|
|||||||
return (
|
return (
|
||||||
<DropdownMenu.Root modal={false}>
|
<DropdownMenu.Root modal={false}>
|
||||||
<DropdownMenu.Trigger asChild>
|
<DropdownMenu.Trigger asChild>
|
||||||
<IconButton listChild variant="surface" color="gray">
|
<IconButton listChild="horizontal" variant="soft" color="gray">
|
||||||
{shells[index] === null && (
|
{shells[index] === null && (
|
||||||
<Text lowContrast className={styles["shell-icon"]}>
|
<MissingShellIcon width="1em" height="1em" />
|
||||||
<MissingShellIcon width="1em" height="1em" />
|
|
||||||
</Text>
|
|
||||||
)}
|
)}
|
||||||
|
|
||||||
{shells[index] !== null && (
|
{shells[index] !== null && (
|
||||||
<img
|
<img
|
||||||
style={{ width: "1em", height: "1em" }}
|
|
||||||
src={alias(
|
src={alias(
|
||||||
"api",
|
"api",
|
||||||
`/icons/shells/${shellTypeIcons[shells[index]]}${premium ? "_premium" : ""}.webp`,
|
`/icons/shells/${shellTypeIcons[shells[index]]}${premium ? "_premium" : ""}.webp`,
|
||||||
@@ -649,15 +646,9 @@ function IndividualShellFilter({
|
|||||||
}}
|
}}
|
||||||
color={selected ? undefined : "gray"}
|
color={selected ? undefined : "gray"}
|
||||||
>
|
>
|
||||||
<img
|
<DropdownMenu.ItemIndicator>
|
||||||
src={alias(
|
<DotFilledIcon />
|
||||||
"api",
|
</DropdownMenu.ItemIndicator>
|
||||||
`/icons/shells/${shellTypeIcons[shellType]}${
|
|
||||||
premium ? "_premium" : ""
|
|
||||||
}.webp`,
|
|
||||||
)}
|
|
||||||
style={{ width: "1.25em", height: "1.25em" }}
|
|
||||||
/>
|
|
||||||
|
|
||||||
{
|
{
|
||||||
strings.common.shells[
|
strings.common.shells[
|
||||||
@@ -666,6 +657,15 @@ function IndividualShellFilter({
|
|||||||
] as keyof typeof strings.common.shells
|
] as keyof typeof strings.common.shells
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
<img
|
||||||
|
src={alias(
|
||||||
|
"api",
|
||||||
|
`/icons/shells/${shellTypeIcons[shellType]}${
|
||||||
|
premium ? "_premium" : ""
|
||||||
|
}.webp`,
|
||||||
|
)}
|
||||||
|
/>
|
||||||
</DropdownMenu.RadioItem>
|
</DropdownMenu.RadioItem>
|
||||||
);
|
);
|
||||||
})}
|
})}
|
||||||
@@ -686,8 +686,9 @@ function IndividualShellFilter({
|
|||||||
});
|
});
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<TrashIcon />
|
|
||||||
{strings.website.common.tank_search.clear}
|
{strings.website.common.tank_search.clear}
|
||||||
|
|
||||||
|
<TrashIcon />
|
||||||
</DropdownMenu.Item>
|
</DropdownMenu.Item>
|
||||||
</DropdownMenu.RadioGroup>
|
</DropdownMenu.RadioGroup>
|
||||||
</DropdownMenu.Content>
|
</DropdownMenu.Content>
|
||||||
@@ -821,8 +822,8 @@ function ConsumablesFilter() {
|
|||||||
return (
|
return (
|
||||||
<DropdownMenu.Root modal={false}>
|
<DropdownMenu.Root modal={false}>
|
||||||
<DropdownMenu.Trigger asChild>
|
<DropdownMenu.Trigger asChild>
|
||||||
<Button color="gray" variant="surface">
|
<Button color="gray" variant="soft">
|
||||||
{consumables.slice(0, MAX_ICONS).map((consumable, index) => (
|
{consumables.slice(0, MAX_ICONS).map((consumable) => (
|
||||||
<img
|
<img
|
||||||
key={consumable}
|
key={consumable}
|
||||||
className={styles.icon}
|
className={styles.icon}
|
||||||
@@ -864,16 +865,15 @@ function ConsumablesFilter() {
|
|||||||
checked={selected}
|
checked={selected}
|
||||||
key={consumable}
|
key={consumable}
|
||||||
>
|
>
|
||||||
<img
|
<DropdownMenu.ItemIndicator>
|
||||||
style={{
|
<CheckIcon />
|
||||||
width: "1.25em",
|
</DropdownMenu.ItemIndicator>
|
||||||
height: "1.25em",
|
|
||||||
objectFit: "contain",
|
|
||||||
}}
|
|
||||||
src={alias("api", `/icons/consumables/${consumable}.webp`)}
|
|
||||||
/>
|
|
||||||
|
|
||||||
{unwrap(consumableDefinition.name!)}
|
{unwrap(consumableDefinition.name!)}
|
||||||
|
|
||||||
|
<img
|
||||||
|
src={alias("api", `/icons/consumables/${consumable}.webp`)}
|
||||||
|
/>
|
||||||
</DropdownMenu.CheckboxItem>
|
</DropdownMenu.CheckboxItem>
|
||||||
);
|
);
|
||||||
})}
|
})}
|
||||||
@@ -890,8 +890,9 @@ function ConsumablesFilter() {
|
|||||||
});
|
});
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<TrashIcon />
|
|
||||||
{strings.website.common.tank_search.clear}
|
{strings.website.common.tank_search.clear}
|
||||||
|
|
||||||
|
<TrashIcon />
|
||||||
</DropdownMenu.Item>
|
</DropdownMenu.Item>
|
||||||
</DropdownMenu.Content>
|
</DropdownMenu.Content>
|
||||||
</DropdownMenu.Root>
|
</DropdownMenu.Root>
|
||||||
@@ -908,8 +909,8 @@ function ProvisionsFilter() {
|
|||||||
return (
|
return (
|
||||||
<DropdownMenu.Root modal={false}>
|
<DropdownMenu.Root modal={false}>
|
||||||
<DropdownMenu.Trigger asChild>
|
<DropdownMenu.Trigger asChild>
|
||||||
<Button color="gray" variant="surface">
|
<Button color="gray" variant="soft">
|
||||||
{provisions.slice(0, MAX_ICONS).map((provision, index) => (
|
{provisions.slice(0, MAX_ICONS).map((provision) => (
|
||||||
<img
|
<img
|
||||||
key={provision}
|
key={provision}
|
||||||
className={styles.icon}
|
className={styles.icon}
|
||||||
@@ -951,16 +952,13 @@ function ProvisionsFilter() {
|
|||||||
checked={selected}
|
checked={selected}
|
||||||
key={provision}
|
key={provision}
|
||||||
>
|
>
|
||||||
<img
|
<DropdownMenu.ItemIndicator>
|
||||||
style={{
|
<CheckIcon />
|
||||||
width: "1.25em",
|
</DropdownMenu.ItemIndicator>
|
||||||
height: "1.25em",
|
|
||||||
objectFit: "contain",
|
|
||||||
}}
|
|
||||||
src={alias("api", `/icons/provisions/${provision}.webp`)}
|
|
||||||
/>
|
|
||||||
|
|
||||||
{unwrap(provisionDefinition.name!)}
|
{unwrap(provisionDefinition.name!)}
|
||||||
|
|
||||||
|
<img src={alias("api", `/icons/provisions/${provision}.webp`)} />
|
||||||
</DropdownMenu.CheckboxItem>
|
</DropdownMenu.CheckboxItem>
|
||||||
);
|
);
|
||||||
})}
|
})}
|
||||||
@@ -977,8 +975,9 @@ function ProvisionsFilter() {
|
|||||||
});
|
});
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<TrashIcon />
|
|
||||||
{strings.website.common.tank_search.clear}
|
{strings.website.common.tank_search.clear}
|
||||||
|
|
||||||
|
<TrashIcon />
|
||||||
</DropdownMenu.Item>
|
</DropdownMenu.Item>
|
||||||
</DropdownMenu.Content>
|
</DropdownMenu.Content>
|
||||||
</DropdownMenu.Root>
|
</DropdownMenu.Root>
|
||||||
@@ -1010,8 +1009,8 @@ function GameModeAbilitiesFilter() {
|
|||||||
return (
|
return (
|
||||||
<DropdownMenu.Root modal={false}>
|
<DropdownMenu.Root modal={false}>
|
||||||
<DropdownMenu.Trigger asChild>
|
<DropdownMenu.Trigger asChild>
|
||||||
<Button color="gray" variant="surface">
|
<Button color="gray" variant="soft">
|
||||||
{icons.slice(0, MAX_ICONS).map((icon, index) => (
|
{icons.slice(0, MAX_ICONS).map((icon) => (
|
||||||
<img key={icon} className={styles.icon} src={icon} />
|
<img key={icon} className={styles.icon} src={icon} />
|
||||||
))}
|
))}
|
||||||
|
|
||||||
@@ -1071,19 +1070,18 @@ function GameModeAbilitiesFilter() {
|
|||||||
checked={selected}
|
checked={selected}
|
||||||
key={consumable}
|
key={consumable}
|
||||||
>
|
>
|
||||||
|
<DropdownMenu.ItemIndicator>
|
||||||
|
<CheckIcon />
|
||||||
|
</DropdownMenu.ItemIndicator>
|
||||||
|
|
||||||
|
{unwrap(abilityDefinition.name!)}
|
||||||
|
|
||||||
<img
|
<img
|
||||||
style={{
|
|
||||||
width: "1.25em",
|
|
||||||
height: "1.25em",
|
|
||||||
objectFit: "contain",
|
|
||||||
}}
|
|
||||||
src={alias(
|
src={alias(
|
||||||
"api",
|
"api",
|
||||||
`/icons/consumables/${consumable}.webp`,
|
`/icons/consumables/${consumable}.webp`,
|
||||||
)}
|
)}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
{unwrap(abilityDefinition.name!)}
|
|
||||||
</DropdownMenu.CheckboxItem>
|
</DropdownMenu.CheckboxItem>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -1123,19 +1121,18 @@ function GameModeAbilitiesFilter() {
|
|||||||
checked={selected}
|
checked={selected}
|
||||||
key={provision}
|
key={provision}
|
||||||
>
|
>
|
||||||
|
<DropdownMenu.ItemIndicator>
|
||||||
|
<CheckIcon />
|
||||||
|
</DropdownMenu.ItemIndicator>
|
||||||
|
|
||||||
|
{unwrap(powerDefinition.name!)}
|
||||||
|
|
||||||
<img
|
<img
|
||||||
style={{
|
|
||||||
width: "1.25em",
|
|
||||||
height: "1.25em",
|
|
||||||
objectFit: "contain",
|
|
||||||
}}
|
|
||||||
src={alias(
|
src={alias(
|
||||||
"api",
|
"api",
|
||||||
`/icons/provisions/${provision}.webp`,
|
`/icons/provisions/${provision}.webp`,
|
||||||
)}
|
)}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
{unwrap(powerDefinition.name!)}
|
|
||||||
</DropdownMenu.CheckboxItem>
|
</DropdownMenu.CheckboxItem>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -1157,8 +1154,9 @@ function GameModeAbilitiesFilter() {
|
|||||||
});
|
});
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<TrashIcon />
|
|
||||||
{strings.website.common.tank_search.clear}
|
{strings.website.common.tank_search.clear}
|
||||||
|
|
||||||
|
<TrashIcon />
|
||||||
</DropdownMenu.Item>
|
</DropdownMenu.Item>
|
||||||
</DropdownMenu.Content>
|
</DropdownMenu.Content>
|
||||||
</DropdownMenu.Root>
|
</DropdownMenu.Root>
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ const { locale } = Astro.props;
|
|||||||
<BaseLayout {locale} accent="purple">
|
<BaseLayout {locale} accent="purple">
|
||||||
<ColorScale color="blue" />
|
<ColorScale color="blue" />
|
||||||
<ColorScale color="amber" />
|
<ColorScale color="amber" />
|
||||||
|
<ColorScale color="red" />
|
||||||
|
|
||||||
<ToolBanner {locale} tool={tools.tanks} slot="pre-app" />
|
<ToolBanner {locale} tool={tools.tanks} slot="pre-app" />
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user