mirror of
https://github.com/blitzkit/blitzkit.git
synced 2026-10-25 03:29:51 +01:00
feat: ads :(
This commit is contained in:
1 parent
d6caeabe68
commit
7cc086b999
3 files changed
+17
-7
No files matched your search
@@ -5,6 +5,7 @@ export function TankCardWrapper(props: GridProps) {
|
|||||||
<Grid
|
<Grid
|
||||||
py="4"
|
py="4"
|
||||||
columns="repeat(auto-fill, minmax(100px, 1fr))"
|
columns="repeat(auto-fill, minmax(100px, 1fr))"
|
||||||
|
flow="dense"
|
||||||
gap="2"
|
gap="2"
|
||||||
gapY="6"
|
gapY="6"
|
||||||
{...props}
|
{...props}
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
import { Callout, Flex, Link, Text } from '@radix-ui/themes';
|
import { Callout, Flex, FlexProps, Link, Text } from '@radix-ui/themes';
|
||||||
import { go } from 'fuzzysort';
|
import { go } from 'fuzzysort';
|
||||||
import { times } from 'lodash';
|
import { times } from 'lodash';
|
||||||
import { memo, use, useMemo } from 'react';
|
import { memo, use, useMemo } from 'react';
|
||||||
|
import { AdMidSectionResponsive } from '../../../../../components/AdMidSectionResponsive';
|
||||||
import { ExperimentIcon } from '../../../../../components/ExperimentIcon';
|
import { ExperimentIcon } from '../../../../../components/ExperimentIcon';
|
||||||
import { TANK_CLASSES } from '../../../../../components/Tanks/components/Item/constants';
|
import { TANK_CLASSES } from '../../../../../components/Tanks/components/Item/constants';
|
||||||
import { resolveNearPenetration } from '../../../../../core/blitz/resolveNearPenetration';
|
import { resolveNearPenetration } from '../../../../../core/blitz/resolveNearPenetration';
|
||||||
@@ -28,14 +29,14 @@ import { TankCard } from '../TankCard';
|
|||||||
import { TankCardWrapper } from '../TankCardWrapper';
|
import { TankCardWrapper } from '../TankCardWrapper';
|
||||||
import { treeTypeOrder } from './constants';
|
import { treeTypeOrder } from './constants';
|
||||||
|
|
||||||
interface TankSearchProps {
|
type TankSearchProps = FlexProps & {
|
||||||
compact?: boolean;
|
compact?: boolean;
|
||||||
onSelect?: (tank: TankDefinition) => void;
|
onSelect?: (tank: TankDefinition) => void;
|
||||||
onSelectAll?: (tanks: TankDefinition[]) => void;
|
onSelectAll?: (tanks: TankDefinition[]) => void;
|
||||||
}
|
};
|
||||||
|
|
||||||
export const TankSearch = memo<TankSearchProps>(
|
export const TankSearch = memo<TankSearchProps>(
|
||||||
({ compact, onSelect, onSelectAll }) => {
|
({ compact, onSelect, onSelectAll, ...props }) => {
|
||||||
const awaitedGameDefinitions = use(gameDefinitions);
|
const awaitedGameDefinitions = use(gameDefinitions);
|
||||||
const awaitedModelDefinitions = use(modelDefinitions);
|
const awaitedModelDefinitions = use(modelDefinitions);
|
||||||
const awaitedTankDefinitions = use(tankDefinitions);
|
const awaitedTankDefinitions = use(tankDefinitions);
|
||||||
@@ -52,6 +53,7 @@ export const TankSearch = memo<TankSearchProps>(
|
|||||||
switch (filters.sort.by) {
|
switch (filters.sort.by) {
|
||||||
case 'meta.none':
|
case 'meta.none':
|
||||||
sorted = filtered
|
sorted = filtered
|
||||||
|
.sort((a, b) => b.tier - a.tier)
|
||||||
.sort(
|
.sort(
|
||||||
(a, b) =>
|
(a, b) =>
|
||||||
treeTypeOrder.indexOf(b.treeType) -
|
treeTypeOrder.indexOf(b.treeType) -
|
||||||
@@ -355,7 +357,7 @@ export const TankSearch = memo<TankSearchProps>(
|
|||||||
}, [filters]);
|
}, [filters]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Flex direction="column" gap="4" flexGrow="1">
|
<Flex direction="column" gap="4" flexGrow="1" {...props}>
|
||||||
<SearchBar topResult={tanks?.[0]} />
|
<SearchBar topResult={tanks?.[0]} />
|
||||||
|
|
||||||
{!filters.search && !filters.searching && (
|
{!filters.search && !filters.searching && (
|
||||||
@@ -410,8 +412,13 @@ export const TankSearch = memo<TankSearchProps>(
|
|||||||
<>
|
<>
|
||||||
{tanks.length > 0 && (
|
{tanks.length > 0 && (
|
||||||
<TankCardWrapper>
|
<TankCardWrapper>
|
||||||
{tanks.map((tank) => (
|
{tanks.map((tank, index) => (
|
||||||
<TankCard onSelect={onSelect} key={tank.id} tank={tank} />
|
<>
|
||||||
|
<TankCard onSelect={onSelect} key={tank.id} tank={tank} />
|
||||||
|
{(index + 16) % 32 === 0 && index !== tanks.length - 1 && (
|
||||||
|
<AdMidSectionResponsive gridColumn="1 / -1" />
|
||||||
|
)}
|
||||||
|
</>
|
||||||
))}
|
))}
|
||||||
</TankCardWrapper>
|
</TankCardWrapper>
|
||||||
)}
|
)}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
'use client';
|
'use client';
|
||||||
|
|
||||||
|
import { AdMidSectionResponsive } from '../../../components/AdMidSectionResponsive';
|
||||||
import PageWrapper from '../../../components/PageWrapper';
|
import PageWrapper from '../../../components/PageWrapper';
|
||||||
import { TankSearch } from './components/TankSearch';
|
import { TankSearch } from './components/TankSearch';
|
||||||
|
|
||||||
@@ -7,6 +8,7 @@ export default function Page() {
|
|||||||
return (
|
return (
|
||||||
<PageWrapper color="purple" size={1028}>
|
<PageWrapper color="purple" size={1028}>
|
||||||
<TankSearch />
|
<TankSearch />
|
||||||
|
<AdMidSectionResponsive />
|
||||||
</PageWrapper>
|
</PageWrapper>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
Reference in new issue
Block a user