feat: some more localized links

This commit is contained in:
tresabhi committed 2024-12-27 14:01:59 -06:00
1 parent 8203db3dc2
commit e0daf85561
19 files changed
+182 -81

No files matched your search

@@ -1,7 +1,8 @@
---
import { MagicWandIcon, StarFilledIcon } from '@radix-ui/react-icons';
import { Flex, Heading, Link } from '@radix-ui/themes';
import { Flex, Heading } from '@radix-ui/themes';
import { compareVersions } from 'compare-versions';
import { LinkI18n } from '../../../../components/LinkI18n';
import { PageWrapper } from '../../../../components/PageWrapper';
import BaseLayout from '../../../../layouts/BaseLayout.astro';
@@ -16,6 +17,7 @@ const versions = Object.keys(
.map((file) => file.replace(ROOT, '').replace('.md', ''))
.sort(compareVersions)
.reverse();
const { locale } = Astro.params;
---
<title>BlitzKit Patches</title>
@@ -31,7 +33,8 @@ const versions = Object.keys(
const isMajor = split[2] === 0;
return (
<Link
<LinkI18n
{locale}
size="5"
href={`/docs/changelogs/${version}`}
mb={isMajor ? '6' : '0'}
@@ -41,7 +44,7 @@ const versions = Object.keys(
{isMajor && <StarFilledIcon />}
{version}
</Flex>
</Link>
</LinkI18n>
);
})
}
@@ -21,6 +21,7 @@ import {
import BaseLayout from '../../layouts/BaseLayout.astro';
const branch = assertSecret(import.meta.env.PUBLIC_ASSET_BRANCH);
const { locale } = Astro.params;
export const getStaticPaths = (() => {
return [
@@ -47,7 +48,7 @@ export const getStaticPaths = (() => {
<Flex maxWidth="64rem" flexGrow="1" gap="4" direction="column">
<ToolCard tool={tankopediaTool} />
<HomePageHotTanks />
<HomePageHotTanks {locale} />
<Flex gap="4" direction={{ initial: 'column', sm: 'row' }}>
{/* <ToolCard tool={playerStatsTool} /> */}
@@ -2,12 +2,14 @@ import { imgur, ImgurSize } from '@blitzkit/core';
import { Box, Flex, Link, Text } from '@radix-ui/themes';
import { capitalize } from 'lodash-es';
import { PreviewWrapper } from '../../../../components/Embeds/PreviewWrapper';
import { LinkI18n } from '../../../../components/LinkI18n';
import { PageWrapper } from '../../../../components/PageWrapper';
import {
embedConfigurations,
extractEmbedConfigDefaults,
} from '../../../../constants/embeds';
import { Var } from '../../../../core/radix/var';
import { useLocale } from '../../../../hooks/useLocale';
import { App } from '../../../../stores/app';
import { EmbedState } from '../../../../stores/embedState';
@@ -26,6 +28,8 @@ function Content() {
// expires: 0,
// });
const { locale } = useLocale();
return (
<PageWrapper color="red">
{/* {!wargaming && (
@@ -61,7 +65,8 @@ function Content() {
key={embed}
data={extractEmbedConfigDefaults(config)}
>
<Link
<LinkI18n
locale={locale}
href={`/tools/embed/${embed}`}
color="gray"
highContrast
@@ -101,7 +106,7 @@ function Content() {
/>
</Box>
</Flex>
</Link>
</LinkI18n>
</EmbedState.Provider>
))}
</Flex>
@@ -12,6 +12,7 @@ import { VideoSection } from '../../../../../components/Tankopedia/VideoSection'
import { awaitableModelDefinitions } from '../../../../../core/awaitables/modelDefinitions';
import { awaitableProvisionDefinitions } from '../../../../../core/awaitables/provisionDefinitions';
import { awaitableTankDefinitions } from '../../../../../core/awaitables/tankDefinitions';
import { LocaleProvider } from '../../../../../hooks/useLocale';
import { App } from '../../../../../stores/app';
import { Duel } from '../../../../../stores/duel';
import { TankopediaEphemeral } from '../../../../../stores/tankopediaEphemeral';
@@ -20,6 +21,7 @@ import type { MaybeSkeletonComponentProps } from '../../../../../types/maybeSkel
type PageProps = MaybeSkeletonComponentProps & {
id: number;
locale: string | undefined;
};
const [tankDefinitions, provisionDefinitions, modelDefinitions] =
@@ -29,33 +31,35 @@ const [tankDefinitions, provisionDefinitions, modelDefinitions] =
awaitableModelDefinitions,
]);
export function Page({ id, skeleton }: PageProps) {
export function Page({ id, skeleton, locale }: PageProps) {
const tank = tankDefinitions.tanks[id];
const model = modelDefinitions.models[id];
return (
<TankopediaEphemeral.Provider data={model}>
<App.Provider>
<TankopediaPersistent.Provider>
<Duel.Provider
data={{ tank, provisionDefinitions: provisionDefinitions }}
>
<PageWrapper p="0" maxWidth="unset" color="purple" gap="9" pb="9">
<HeroSection skeleton={skeleton} />
<CalloutsSection />
<MetaSection />
{tank.type === TankType.RESEARCHABLE && !tank.deprecated && (
<TechTreeSection skeleton={skeleton} />
)}
<CharacteristicsSection />
<GameModeSection />
<TankopediaCharts />
<VideoSection skeleton={skeleton} />
<HistorySection />
</PageWrapper>
</Duel.Provider>
</TankopediaPersistent.Provider>
</App.Provider>
</TankopediaEphemeral.Provider>
<LocaleProvider locale={locale}>
<TankopediaEphemeral.Provider data={model}>
<App.Provider>
<TankopediaPersistent.Provider>
<Duel.Provider
data={{ tank, provisionDefinitions: provisionDefinitions }}
>
<PageWrapper p="0" maxWidth="unset" color="purple" gap="9" pb="9">
<HeroSection skeleton={skeleton} />
<CalloutsSection />
<MetaSection />
{tank.type === TankType.RESEARCHABLE && !tank.deprecated && (
<TechTreeSection skeleton={skeleton} />
)}
<CharacteristicsSection />
<GameModeSection />
<TankopediaCharts />
<VideoSection skeleton={skeleton} />
<HistorySection />
</PageWrapper>
</Duel.Provider>
</TankopediaPersistent.Provider>
</App.Provider>
</TankopediaEphemeral.Provider>
</LocaleProvider>
);
}
@@ -31,7 +31,7 @@ export const getStaticPaths = (async () => {
.flat();
}) satisfies GetStaticPaths;
const { id } = Astro.params;
const { id, locale } = Astro.params;
const tankDefinitions = await fetchTankDefinitions();
const skillDefinitions = await fetchSkillDefinitions();
@@ -96,7 +96,7 @@ const description = `${
<meta name="twitter:image:src" content={icon} />
<BaseLayout>
<Page id={id} client:only="react">
<Page id={id} skeleton slot="fallback" />
<Page {locale} id={id} client:only="react">
<Page {locale} id={id} skeleton slot="fallback" />
</Page>
</BaseLayout>