From 60ab845326dae6a970a942bc93fafe1c25101437 Mon Sep 17 00:00:00 2001 From: tresabhi <43380238+tresabhi@users.noreply.github.com> Date: Thu, 26 Dec 2024 14:36:48 -0600 Subject: [PATCH 001/114] feat: set up locales --- packages/bot/src/core/discord/localizationObject.ts | 4 ++-- .../bot/src/core/localization/strings/constants.ts | 12 ++++-------- packages/bot/src/core/localization/strings/index.ts | 4 ++-- packages/bot/src/core/localization/translator.ts | 5 +++-- packages/core/src/blitzkit/index.ts | 1 + packages/core/src/blitzkit/supportedLocales.ts | 10 ++++++++++ packages/website/astro.config.mjs | 6 ++++++ 7 files changed, 28 insertions(+), 14 deletions(-) create mode 100644 packages/core/src/blitzkit/supportedLocales.ts diff --git a/packages/bot/src/core/discord/localizationObject.ts b/packages/bot/src/core/discord/localizationObject.ts index a89f9cd0a..5faffa7d2 100644 --- a/packages/bot/src/core/discord/localizationObject.ts +++ b/packages/bot/src/core/discord/localizationObject.ts @@ -1,5 +1,5 @@ import { Locale } from 'discord.js'; -import { SUPPORTED_LOCALES } from '../localization/strings/constants'; +import { SUPPORTED_DISCORD_LOCALES } from '../localization/strings/constants'; import { translator } from '../localization/translator'; const validNameRegex = /^[-_\p{L}\p{N}\p{sc=Deva}\p{sc=Thai}]{1,32}$/u; @@ -9,7 +9,7 @@ export function localizationObject( literals?: string[], strict = false, ) { - return SUPPORTED_LOCALES.reduce>>( + return SUPPORTED_DISCORD_LOCALES.reduce>>( (localizations, locale) => { const { translate } = translator(locale); const translation = translate(path, literals); diff --git a/packages/bot/src/core/localization/strings/constants.ts b/packages/bot/src/core/localization/strings/constants.ts index 7b0b977a4..15078968d 100644 --- a/packages/bot/src/core/localization/strings/constants.ts +++ b/packages/bot/src/core/localization/strings/constants.ts @@ -1,10 +1,6 @@ +import { LOCALE_FILES } from '@blitzkit/core'; import { Locale } from 'discord.js'; -export const SUPPORTED_LOCALES: Locale[] = [ - Locale.EnglishUS, - Locale.SpanishES, - Locale.Croatian, - Locale.Russian, - Locale.Ukrainian, - Locale.ChineseCN, -]; +export const SUPPORTED_DISCORD_LOCALES = Object.values( + LOCALE_FILES, +) as Locale[]; diff --git a/packages/bot/src/core/localization/strings/index.ts b/packages/bot/src/core/localization/strings/index.ts index 133f3a5ca..c47c97d59 100644 --- a/packages/bot/src/core/localization/strings/index.ts +++ b/packages/bot/src/core/localization/strings/index.ts @@ -1,5 +1,5 @@ import { Locale } from 'discord.js'; -import { SUPPORTED_LOCALES } from './constants'; +import { SUPPORTED_DISCORD_LOCALES } from './constants'; export type TranslationFragmentTree = { [key: string]: TranslationFragment; @@ -8,7 +8,7 @@ export type TranslationFragmentTree = { }; export type TranslationFragment = string | TranslationFragmentTree; -export const translations = SUPPORTED_LOCALES.reduce< +export const translations = SUPPORTED_DISCORD_LOCALES.reduce< Partial> >( (table, locale) => ({ diff --git a/packages/bot/src/core/localization/translator.ts b/packages/bot/src/core/localization/translator.ts index 2428b75b2..d6099197e 100644 --- a/packages/bot/src/core/localization/translator.ts +++ b/packages/bot/src/core/localization/translator.ts @@ -1,10 +1,11 @@ import { Locale } from 'discord.js'; import { translations } from './strings'; -import { SUPPORTED_LOCALES } from './strings/constants'; +import { SUPPORTED_DISCORD_LOCALES } from './strings/constants'; export function translator(localeRaw: Locale) { const locale = - localeRaw !== Locale.EnglishUS && SUPPORTED_LOCALES.includes(localeRaw) + localeRaw !== Locale.EnglishUS && + SUPPORTED_DISCORD_LOCALES.includes(localeRaw) ? localeRaw : Locale.EnglishUS; const strings = translations[locale]!; diff --git a/packages/core/src/blitzkit/index.ts b/packages/core/src/blitzkit/index.ts index 983def4d7..3f3cf0daa 100644 --- a/packages/core/src/blitzkit/index.ts +++ b/packages/core/src/blitzkit/index.ts @@ -46,4 +46,5 @@ export * from './votes'; export * from './createDefaultProvisions'; export * from './metaSortTank'; export * from './romanize'; +export * from './supportedLocales'; export * from './youtubers'; diff --git a/packages/core/src/blitzkit/supportedLocales.ts b/packages/core/src/blitzkit/supportedLocales.ts new file mode 100644 index 000000000..457066ffe --- /dev/null +++ b/packages/core/src/blitzkit/supportedLocales.ts @@ -0,0 +1,10 @@ +export const SUPPORTED_LOCALES = ['en', 'es', 'hr', 'ru', 'uk', 'cn']; +export const LOCALE_FILES: Record<(typeof SUPPORTED_LOCALES)[number], string> = + { + en: 'en-US', + es: 'es-ES', + hr: 'hr', + ru: 'ru', + uk: 'uk', + cn: 'zh-CN', + }; diff --git a/packages/website/astro.config.mjs b/packages/website/astro.config.mjs index 31cecc7e0..5536116ff 100644 --- a/packages/website/astro.config.mjs +++ b/packages/website/astro.config.mjs @@ -2,9 +2,15 @@ import react from '@astrojs/react'; import sitemap from '@astrojs/sitemap'; +import { SUPPORTED_LOCALES } from '@blitzkit/core'; import { defineConfig } from 'astro/config'; export default defineConfig({ + i18n: { + defaultLocale: 'en', + locales: SUPPORTED_LOCALES, + }, + devToolbar: { enabled: false }, output: 'static', site: 'https://blitzkit.app', From 1843eb3bcf83ca89d48a44abf7090203e45c0880 Mon Sep 17 00:00:00 2001 From: tresabhi <43380238+tresabhi@users.noreply.github.com> Date: Fri, 27 Dec 2024 12:38:38 -0600 Subject: [PATCH 002/114] feat: move to locale --- packages/website/astro.config.mjs | 3 + .../website/src/components/Embeds/Boolean.tsx | 2 +- .../website/src/components/Embeds/Color.tsx | 2 +- .../website/src/components/Embeds/Enum.tsx | 2 +- .../website/src/components/Embeds/Radius.tsx | 2 +- .../src/components/Embeds/RichText.tsx | 2 +- .../website/src/components/Embeds/Size.tsx | 2 +- .../src/components/Embeds/SizeWithout0.tsx | 2 +- .../website/src/components/Embeds/Slider.tsx | 2 +- .../src/components/Embeds/TextController.tsx | 2 +- .../auth/[provider]/_index.tsx | 2 +- .../auth/[provider]/index.astro | 2 +- .../docs/[directory]/[document]/_index.tsx | 4 +- .../docs/[directory]/[document]/index.astro | 0 .../docs/patches/index.astro | 2 +- .../src/pages/{ => [...locale]}/index.astro | 24 +++++--- .../{ => [...locale]}/settings/_index.tsx | 4 +- .../{ => [...locale]}/settings/index.astro | 0 .../{ => [...locale]}/tools/charts/_index.tsx | 10 +-- .../tools/charts/index.astro | 2 +- .../tools/compare/_index.tsx | 30 ++++----- .../tools/compare/index.astro | 2 +- .../tools/embed/[embed]/_index.tsx | 38 ++++++------ .../tools/embed/[embed]/host/_index.tsx | 8 +-- .../tools/embed/[embed]/host/index.astro | 0 .../tools/embed/[embed]/index.astro | 2 +- .../{ => [...locale]}/tools/embed/_index.tsx | 12 ++-- .../{ => [...locale]}/tools/embed/index.astro | 2 +- .../tools/gallery/_index.tsx | 8 +-- .../tools/gallery/index.astro | 6 +- .../[...locale]/tools/performance/_index.tsx | 30 +++++++++ .../tools/performance/index.astro | 2 +- .../tools/session/_index.tsx | 14 ++--- .../tools/session/index.astro | 2 +- .../tools/tankopedia/[id]/_index.tsx | 61 +++++++++++++++++++ .../tools/tankopedia/[id]/index.astro | 4 +- .../tools/tankopedia/_index.tsx | 8 +-- .../tools/tankopedia/index.astro | 2 +- .../[...locale]/tools/tier-list/_index.tsx | 30 +++++++++ .../tools/tier-list/index.astro | 2 +- .../api/tankopedia/tank-icon/[id]/index.astro | 2 +- .../src/pages/tools/performance/_index.tsx | 30 --------- .../pages/tools/tankopedia/[id]/_index.tsx | 61 ------------------- .../src/pages/tools/tier-list/_index.tsx | 30 --------- 44 files changed, 234 insertions(+), 223 deletions(-) rename packages/website/src/pages/{ => [...locale]}/auth/[provider]/_index.tsx (96%) rename packages/website/src/pages/{ => [...locale]}/auth/[provider]/index.astro (92%) rename packages/website/src/pages/{ => [...locale]}/docs/[directory]/[document]/_index.tsx (58%) rename packages/website/src/pages/{ => [...locale]}/docs/[directory]/[document]/index.astro (100%) rename packages/website/src/pages/{ => [...locale]}/docs/patches/index.astro (95%) rename packages/website/src/pages/{ => [...locale]}/index.astro (78%) rename packages/website/src/pages/{ => [...locale]}/settings/_index.tsx (88%) rename packages/website/src/pages/{ => [...locale]}/settings/index.astro (100%) rename packages/website/src/pages/{ => [...locale]}/tools/charts/_index.tsx (55%) rename packages/website/src/pages/{ => [...locale]}/tools/charts/index.astro (74%) rename packages/website/src/pages/{ => [...locale]}/tools/compare/_index.tsx (79%) rename packages/website/src/pages/{ => [...locale]}/tools/compare/index.astro (81%) rename packages/website/src/pages/{ => [...locale]}/tools/embed/[embed]/_index.tsx (85%) rename packages/website/src/pages/{ => [...locale]}/tools/embed/[embed]/host/_index.tsx (83%) rename packages/website/src/pages/{ => [...locale]}/tools/embed/[embed]/host/index.astro (100%) rename packages/website/src/pages/{ => [...locale]}/tools/embed/[embed]/index.astro (92%) rename packages/website/src/pages/{ => [...locale]}/tools/embed/_index.tsx (89%) rename packages/website/src/pages/{ => [...locale]}/tools/embed/index.astro (73%) rename packages/website/src/pages/{ => [...locale]}/tools/gallery/_index.tsx (70%) rename packages/website/src/pages/{ => [...locale]}/tools/gallery/index.astro (76%) create mode 100644 packages/website/src/pages/[...locale]/tools/performance/_index.tsx rename packages/website/src/pages/{ => [...locale]}/tools/performance/index.astro (83%) rename packages/website/src/pages/{ => [...locale]}/tools/session/_index.tsx (96%) rename packages/website/src/pages/{ => [...locale]}/tools/session/index.astro (74%) create mode 100644 packages/website/src/pages/[...locale]/tools/tankopedia/[id]/_index.tsx rename packages/website/src/pages/{ => [...locale]}/tools/tankopedia/[id]/index.astro (94%) rename packages/website/src/pages/{ => [...locale]}/tools/tankopedia/_index.tsx (50%) rename packages/website/src/pages/{ => [...locale]}/tools/tankopedia/index.astro (77%) create mode 100644 packages/website/src/pages/[...locale]/tools/tier-list/_index.tsx rename packages/website/src/pages/{ => [...locale]}/tools/tier-list/index.astro (74%) delete mode 100644 packages/website/src/pages/tools/performance/_index.tsx delete mode 100644 packages/website/src/pages/tools/tankopedia/[id]/_index.tsx delete mode 100644 packages/website/src/pages/tools/tier-list/_index.tsx diff --git a/packages/website/astro.config.mjs b/packages/website/astro.config.mjs index 5536116ff..4eb634a07 100644 --- a/packages/website/astro.config.mjs +++ b/packages/website/astro.config.mjs @@ -9,6 +9,9 @@ export default defineConfig({ i18n: { defaultLocale: 'en', locales: SUPPORTED_LOCALES, + routing: { + prefixDefaultLocale: false, + }, }, devToolbar: { enabled: false }, diff --git a/packages/website/src/components/Embeds/Boolean.tsx b/packages/website/src/components/Embeds/Boolean.tsx index 0ae6c06bf..d4a3180f6 100644 --- a/packages/website/src/components/Embeds/Boolean.tsx +++ b/packages/website/src/components/Embeds/Boolean.tsx @@ -1,5 +1,5 @@ import { Switch } from '@radix-ui/themes'; -import type { EmbedPreviewControllerProps } from '../../pages/tools/embed/[embed]/_index'; +import type { EmbedPreviewControllerProps } from '../../pages/[...locale]/tools/embed/[embed]/_index'; import { EmbedState } from '../../stores/embedState'; export function Boolean({ configKey }: EmbedPreviewControllerProps) { diff --git a/packages/website/src/components/Embeds/Color.tsx b/packages/website/src/components/Embeds/Color.tsx index cad88b7e3..259665bb6 100644 --- a/packages/website/src/components/Embeds/Color.tsx +++ b/packages/website/src/components/Embeds/Color.tsx @@ -1,4 +1,4 @@ -import type { EmbedPreviewControllerProps } from '../../pages/tools/embed/[embed]/_index'; +import type { EmbedPreviewControllerProps } from '../../pages/[...locale]/tools/embed/[embed]/_index'; import { EmbedState } from '../../stores/embedState'; import { ColorControllerRaw } from './ColorControllerRaw'; diff --git a/packages/website/src/components/Embeds/Enum.tsx b/packages/website/src/components/Embeds/Enum.tsx index b83bcbee6..865abb527 100644 --- a/packages/website/src/components/Embeds/Enum.tsx +++ b/packages/website/src/components/Embeds/Enum.tsx @@ -1,5 +1,5 @@ import { Select } from '@radix-ui/themes'; -import type { EmbedPreviewControllerProps } from '../../pages/tools/embed/[embed]/_index'; +import type { EmbedPreviewControllerProps } from '../../pages/[...locale]/tools/embed/[embed]/_index'; import { EmbedState } from '../../stores/embedState'; import type { EmbedConfigItemType, diff --git a/packages/website/src/components/Embeds/Radius.tsx b/packages/website/src/components/Embeds/Radius.tsx index cd4f2c05c..f770b43b0 100644 --- a/packages/website/src/components/Embeds/Radius.tsx +++ b/packages/website/src/components/Embeds/Radius.tsx @@ -1,5 +1,5 @@ import { Slider } from '@radix-ui/themes'; -import type { EmbedPreviewControllerProps } from '../../pages/tools/embed/[embed]/_index'; +import type { EmbedPreviewControllerProps } from '../../pages/[...locale]/tools/embed/[embed]/_index'; import { EmbedState, type RadixRadius } from '../../stores/embedState'; export function Radius({ configKey }: EmbedPreviewControllerProps) { diff --git a/packages/website/src/components/Embeds/RichText.tsx b/packages/website/src/components/Embeds/RichText.tsx index 76fe0acf2..ec5c6e24f 100644 --- a/packages/website/src/components/Embeds/RichText.tsx +++ b/packages/website/src/components/Embeds/RichText.tsx @@ -1,6 +1,6 @@ import { FontBoldIcon, FontSizeIcon } from '@radix-ui/react-icons'; import { Flex, Slider, Text } from '@radix-ui/themes'; -import type { EmbedPreviewControllerProps } from '../../pages/tools/embed/[embed]/_index'; +import type { EmbedPreviewControllerProps } from '../../pages/[...locale]/tools/embed/[embed]/_index'; import { EmbedState, type RadixSizeWithout0 } from '../../stores/embedState'; import { radixTextWeights, diff --git a/packages/website/src/components/Embeds/Size.tsx b/packages/website/src/components/Embeds/Size.tsx index 248cec4ea..c885b0b86 100644 --- a/packages/website/src/components/Embeds/Size.tsx +++ b/packages/website/src/components/Embeds/Size.tsx @@ -1,5 +1,5 @@ import { Slider } from '@radix-ui/themes'; -import type { EmbedPreviewControllerProps } from '../../pages/tools/embed/[embed]/_index'; +import type { EmbedPreviewControllerProps } from '../../pages/[...locale]/tools/embed/[embed]/_index'; import { EmbedState, type RadixSize } from '../../stores/embedState'; export function Size({ configKey }: EmbedPreviewControllerProps) { diff --git a/packages/website/src/components/Embeds/SizeWithout0.tsx b/packages/website/src/components/Embeds/SizeWithout0.tsx index ea0ed192f..c44625a4e 100644 --- a/packages/website/src/components/Embeds/SizeWithout0.tsx +++ b/packages/website/src/components/Embeds/SizeWithout0.tsx @@ -1,5 +1,5 @@ import { Slider } from '@radix-ui/themes'; -import type { EmbedPreviewControllerProps } from '../../pages/tools/embed/[embed]/_index'; +import type { EmbedPreviewControllerProps } from '../../pages/[...locale]/tools/embed/[embed]/_index'; import { EmbedState, type RadixSizeWithout0 } from '../../stores/embedState'; export function SizeWithout0({ configKey }: EmbedPreviewControllerProps) { diff --git a/packages/website/src/components/Embeds/Slider.tsx b/packages/website/src/components/Embeds/Slider.tsx index 6fe525684..e2b59f02a 100644 --- a/packages/website/src/components/Embeds/Slider.tsx +++ b/packages/website/src/components/Embeds/Slider.tsx @@ -1,5 +1,5 @@ import { Slider as RadixSlider } from '@radix-ui/themes'; -import type { EmbedPreviewControllerProps } from '../../pages/tools/embed/[embed]/_index'; +import type { EmbedPreviewControllerProps } from '../../pages/[...locale]/tools/embed/[embed]/_index'; import { EmbedState, type RadixSize } from '../../stores/embedState'; import type { EmbedConfigItemType, diff --git a/packages/website/src/components/Embeds/TextController.tsx b/packages/website/src/components/Embeds/TextController.tsx index 5e0c95cf0..5d819731f 100644 --- a/packages/website/src/components/Embeds/TextController.tsx +++ b/packages/website/src/components/Embeds/TextController.tsx @@ -1,5 +1,5 @@ import { TextField } from '@radix-ui/themes'; -import type { EmbedPreviewControllerProps } from '../../pages/tools/embed/[embed]/_index'; +import type { EmbedPreviewControllerProps } from '../../pages/[...locale]/tools/embed/[embed]/_index'; import { EmbedState } from '../../stores/embedState'; export function TextController({ configKey }: EmbedPreviewControllerProps) { diff --git a/packages/website/src/pages/auth/[provider]/_index.tsx b/packages/website/src/pages/[...locale]/auth/[provider]/_index.tsx similarity index 96% rename from packages/website/src/pages/auth/[provider]/_index.tsx rename to packages/website/src/pages/[...locale]/auth/[provider]/_index.tsx index a9dd5444c..f0c9c08ce 100644 --- a/packages/website/src/pages/auth/[provider]/_index.tsx +++ b/packages/website/src/pages/[...locale]/auth/[provider]/_index.tsx @@ -1,5 +1,5 @@ import { useEffect } from 'react'; -import { App } from '../../../stores/app'; +import { App } from '../../../../stores/app'; export const AUTH_PROVIDERS = ['wargaming'] as const; diff --git a/packages/website/src/pages/auth/[provider]/index.astro b/packages/website/src/pages/[...locale]/auth/[provider]/index.astro similarity index 92% rename from packages/website/src/pages/auth/[provider]/index.astro rename to packages/website/src/pages/[...locale]/auth/[provider]/index.astro index 6e6379f8c..42ebd3b22 100644 --- a/packages/website/src/pages/auth/[provider]/index.astro +++ b/packages/website/src/pages/[...locale]/auth/[provider]/index.astro @@ -1,7 +1,7 @@ --- import { Flex, Heading, Text } from '@radix-ui/themes'; import type { GetStaticPaths } from 'astro'; -import { PageWrapper } from '../../../components/PageWrapper'; +import { PageWrapper } from '../../../../components/PageWrapper'; import BaseLayout from '../../../layouts/BaseLayout.astro'; import { AUTH_PROVIDERS, AUTH_PROVIDER_NAMES, Authorize } from './_index'; diff --git a/packages/website/src/pages/docs/[directory]/[document]/_index.tsx b/packages/website/src/pages/[...locale]/docs/[directory]/[document]/_index.tsx similarity index 58% rename from packages/website/src/pages/docs/[directory]/[document]/_index.tsx rename to packages/website/src/pages/[...locale]/docs/[directory]/[document]/_index.tsx index 02ef84eb8..921bf79b2 100644 --- a/packages/website/src/pages/docs/[directory]/[document]/_index.tsx +++ b/packages/website/src/pages/[...locale]/docs/[directory]/[document]/_index.tsx @@ -1,5 +1,5 @@ -import { Markdown } from '../../../../components/Markdown'; -import { PageWrapper } from '../../../../components/PageWrapper'; +import { Markdown } from '../../../../../components/Markdown'; +import { PageWrapper } from '../../../../../components/PageWrapper'; interface PageProps { content: string; diff --git a/packages/website/src/pages/docs/[directory]/[document]/index.astro b/packages/website/src/pages/[...locale]/docs/[directory]/[document]/index.astro similarity index 100% rename from packages/website/src/pages/docs/[directory]/[document]/index.astro rename to packages/website/src/pages/[...locale]/docs/[directory]/[document]/index.astro diff --git a/packages/website/src/pages/docs/patches/index.astro b/packages/website/src/pages/[...locale]/docs/patches/index.astro similarity index 95% rename from packages/website/src/pages/docs/patches/index.astro rename to packages/website/src/pages/[...locale]/docs/patches/index.astro index d62a148ad..a77e39b75 100644 --- a/packages/website/src/pages/docs/patches/index.astro +++ b/packages/website/src/pages/[...locale]/docs/patches/index.astro @@ -2,7 +2,7 @@ import { MagicWandIcon, StarFilledIcon } from '@radix-ui/react-icons'; import { Flex, Heading, Link } from '@radix-ui/themes'; import { compareVersions } from 'compare-versions'; -import { PageWrapper } from '../../../components/PageWrapper'; +import { PageWrapper } from '../../../../components/PageWrapper'; import BaseLayout from '../../../layouts/BaseLayout.astro'; // this can't be used in template literal :( diff --git a/packages/website/src/pages/index.astro b/packages/website/src/pages/[...locale]/index.astro similarity index 78% rename from packages/website/src/pages/index.astro rename to packages/website/src/pages/[...locale]/index.astro index 88acb981e..02052ffdd 100644 --- a/packages/website/src/pages/index.astro +++ b/packages/website/src/pages/[...locale]/index.astro @@ -1,11 +1,12 @@ --- -import { assertSecret } from '@blitzkit/core'; +import { assertSecret, SUPPORTED_LOCALES } from '@blitzkit/core'; import { Box, Flex, Heading } from '@radix-ui/themes'; -import { AesonPlug } from '../components/AesonPlug'; -import HomeHero from '../components/HomeHero.astro'; -import { HomePageHotTanks } from '../components/HomePageHotTanks'; -import { Plugs } from '../components/Plugs.tsx'; -import ToolCard from '../components/ToolCard.astro'; +import type { GetStaticPaths } from 'astro'; +import { AesonPlug } from '../../components/AesonPlug'; +import HomeHero from '../../components/HomeHero.astro'; +import { HomePageHotTanks } from '../../components/HomePageHotTanks'; +import { Plugs } from '../../components/Plugs'; +import ToolCard from '../../components/ToolCard.astro'; import { compareTool, discordTool, @@ -16,10 +17,17 @@ import { sessionTool, tankopediaTool, tierListTool, -} from '../constants/tools'; -import BaseLayout from '../layouts/BaseLayout.astro'; +} from '../../constants/tools'; +import BaseLayout from '../../layouts/BaseLayout.astro'; const branch = assertSecret(import.meta.env.PUBLIC_ASSET_BRANCH); + +export const getStaticPaths = (() => { + return [ + ...SUPPORTED_LOCALES.map((locale) => ({ params: { locale } })), + { params: { locale: undefined } }, + ]; +}) satisfies GetStaticPaths; --- diff --git a/packages/website/src/pages/settings/_index.tsx b/packages/website/src/pages/[...locale]/settings/_index.tsx similarity index 88% rename from packages/website/src/pages/settings/_index.tsx rename to packages/website/src/pages/[...locale]/settings/_index.tsx index d1693ebe8..783a2718f 100644 --- a/packages/website/src/pages/settings/_index.tsx +++ b/packages/website/src/pages/[...locale]/settings/_index.tsx @@ -1,6 +1,6 @@ import { Flex, Heading, Switch, Text } from '@radix-ui/themes'; -import { PageWrapper } from '../../components/PageWrapper'; -import { App } from '../../stores/app'; +import { PageWrapper } from '../../../components/PageWrapper'; +import { App } from '../../../stores/app'; export function Page() { return ( diff --git a/packages/website/src/pages/settings/index.astro b/packages/website/src/pages/[...locale]/settings/index.astro similarity index 100% rename from packages/website/src/pages/settings/index.astro rename to packages/website/src/pages/[...locale]/settings/index.astro diff --git a/packages/website/src/pages/tools/charts/_index.tsx b/packages/website/src/pages/[...locale]/tools/charts/_index.tsx similarity index 55% rename from packages/website/src/pages/tools/charts/_index.tsx rename to packages/website/src/pages/[...locale]/tools/charts/_index.tsx index 1dcd37693..d0fcbf9ab 100644 --- a/packages/website/src/pages/tools/charts/_index.tsx +++ b/packages/website/src/pages/[...locale]/tools/charts/_index.tsx @@ -1,9 +1,9 @@ import { Flex } from '@radix-ui/themes'; -import { ChartsControl } from '../../../components/Charts/ChartsControl'; -import { PlayersInPeriod } from '../../../components/Charts/PlayersInPeriod'; -import { PageWrapper } from '../../../components/PageWrapper'; -import { FilterControl } from '../../../components/TankSearch/components/FilterControl'; -import { Charts } from '../../../stores/charts'; +import { ChartsControl } from '../../../../components/Charts/ChartsControl'; +import { PlayersInPeriod } from '../../../../components/Charts/PlayersInPeriod'; +import { PageWrapper } from '../../../../components/PageWrapper'; +import { FilterControl } from '../../../../components/TankSearch/components/FilterControl'; +import { Charts } from '../../../../stores/charts'; export function Page() { return ( diff --git a/packages/website/src/pages/tools/charts/index.astro b/packages/website/src/pages/[...locale]/tools/charts/index.astro similarity index 74% rename from packages/website/src/pages/tools/charts/index.astro rename to packages/website/src/pages/[...locale]/tools/charts/index.astro index bf78728e5..bf316a9ee 100644 --- a/packages/website/src/pages/tools/charts/index.astro +++ b/packages/website/src/pages/[...locale]/tools/charts/index.astro @@ -1,5 +1,5 @@ --- -import { chartsTool } from '../../../constants/tools'; +import { chartsTool } from '../../../../constants/tools'; import ToolLayout from '../../../layouts/ToolLayout.astro'; import { Page } from './_index'; --- diff --git a/packages/website/src/pages/tools/compare/_index.tsx b/packages/website/src/pages/[...locale]/tools/compare/_index.tsx similarity index 79% rename from packages/website/src/pages/tools/compare/_index.tsx rename to packages/website/src/pages/[...locale]/tools/compare/_index.tsx index b89cf12fd..a8d74a7cd 100644 --- a/packages/website/src/pages/tools/compare/_index.tsx +++ b/packages/website/src/pages/[...locale]/tools/compare/_index.tsx @@ -2,21 +2,21 @@ import { createDefaultSkills } from '@blitzkit/core'; import { PlusIcon } from '@radix-ui/react-icons'; import { Flex, Heading, Text } from '@radix-ui/themes'; import { useEffect, useMemo, useState } from 'react'; -import { CompareTable } from '../../../components/Compare/CompareTable'; -import { Controls } from '../../../components/Compare/Controls'; -import { DamageWarning } from '../../../components/DamageWarning'; -import { PageWrapper } from '../../../components/PageWrapper'; -import { awaitableEquipmentDefinitions } from '../../../core/awaitables/equipmentDefinitions'; -import { awaitableModelDefinitions } from '../../../core/awaitables/modelDefinitions'; -import { awaitableProvisionDefinitions } from '../../../core/awaitables/provisionDefinitions'; -import { awaitableSkillDefinitions } from '../../../core/awaitables/skillDefinitions'; -import { awaitableTankDefinitions } from '../../../core/awaitables/tankDefinitions'; -import { tankCharacteristics } from '../../../core/blitzkit/tankCharacteristics'; -import { tankToCompareMember } from '../../../core/blitzkit/tankToCompareMember'; -import { App } from '../../../stores/app'; -import { CompareEphemeral } from '../../../stores/compareEphemeral'; -import { ComparePersistent } from '../../../stores/comparePersistent'; -import { TankopediaPersistent } from '../../../stores/tankopediaPersistent'; +import { CompareTable } from '../../../../components/Compare/CompareTable'; +import { Controls } from '../../../../components/Compare/Controls'; +import { DamageWarning } from '../../../../components/DamageWarning'; +import { PageWrapper } from '../../../../components/PageWrapper'; +import { awaitableEquipmentDefinitions } from '../../../../core/awaitables/equipmentDefinitions'; +import { awaitableModelDefinitions } from '../../../../core/awaitables/modelDefinitions'; +import { awaitableProvisionDefinitions } from '../../../../core/awaitables/provisionDefinitions'; +import { awaitableSkillDefinitions } from '../../../../core/awaitables/skillDefinitions'; +import { awaitableTankDefinitions } from '../../../../core/awaitables/tankDefinitions'; +import { tankCharacteristics } from '../../../../core/blitzkit/tankCharacteristics'; +import { tankToCompareMember } from '../../../../core/blitzkit/tankToCompareMember'; +import { App } from '../../../../stores/app'; +import { CompareEphemeral } from '../../../../stores/compareEphemeral'; +import { ComparePersistent } from '../../../../stores/comparePersistent'; +import { TankopediaPersistent } from '../../../../stores/tankopediaPersistent'; const [ modelDefinitions, diff --git a/packages/website/src/pages/tools/compare/index.astro b/packages/website/src/pages/[...locale]/tools/compare/index.astro similarity index 81% rename from packages/website/src/pages/tools/compare/index.astro rename to packages/website/src/pages/[...locale]/tools/compare/index.astro index 518668228..e54a46fc0 100644 --- a/packages/website/src/pages/tools/compare/index.astro +++ b/packages/website/src/pages/[...locale]/tools/compare/index.astro @@ -1,6 +1,6 @@ --- +import { compareTool } from '../../../../constants/tools'; import ToolOpenGraph from '../../../components/ToolOpenGraph.astro'; -import { compareTool } from '../../../constants/tools'; import BaseLayout from '../../../layouts/BaseLayout.astro'; import { Page } from './_index'; --- diff --git a/packages/website/src/pages/tools/embed/[embed]/_index.tsx b/packages/website/src/pages/[...locale]/tools/embed/[embed]/_index.tsx similarity index 85% rename from packages/website/src/pages/tools/embed/[embed]/_index.tsx rename to packages/website/src/pages/[...locale]/tools/embed/[embed]/_index.tsx index 8e3eb379f..adb33d8b4 100644 --- a/packages/website/src/pages/tools/embed/[embed]/_index.tsx +++ b/packages/website/src/pages/[...locale]/tools/embed/[embed]/_index.tsx @@ -10,28 +10,28 @@ import { import { Box, Button, Flex, Heading, ScrollArea, Text } from '@radix-ui/themes'; import { capitalize, startCase } from 'lodash-es'; import { useEffect, useRef, useState, type ReactNode } from 'react'; -import { CopyButton } from '../../../../components/CopyButton'; -import { Boolean } from '../../../../components/Embeds/Boolean'; -import { Color } from '../../../../components/Embeds/Color'; -import { Enum } from '../../../../components/Embeds/Enum'; -import { GenerateURL } from '../../../../components/Embeds/GenerateURL'; -import { Import } from '../../../../components/Embeds/Import'; -import { PreviewWrapper } from '../../../../components/Embeds/PreviewWrapper'; -import { Radius } from '../../../../components/Embeds/Radius'; -import { RichText } from '../../../../components/Embeds/RichText'; -import { Size } from '../../../../components/Embeds/Size'; -import { SizeWithout0 } from '../../../../components/Embeds/SizeWithout0'; -import { Slider } from '../../../../components/Embeds/Slider'; -import { TextController } from '../../../../components/Embeds/TextController'; -import { PageWrapper } from '../../../../components/PageWrapper'; +import { CopyButton } from '../../../../../components/CopyButton'; +import { Boolean } from '../../../../../components/Embeds/Boolean'; +import { Color } from '../../../../../components/Embeds/Color'; +import { Enum } from '../../../../../components/Embeds/Enum'; +import { GenerateURL } from '../../../../../components/Embeds/GenerateURL'; +import { Import } from '../../../../../components/Embeds/Import'; +import { PreviewWrapper } from '../../../../../components/Embeds/PreviewWrapper'; +import { Radius } from '../../../../../components/Embeds/Radius'; +import { RichText } from '../../../../../components/Embeds/RichText'; +import { Size } from '../../../../../components/Embeds/Size'; +import { SizeWithout0 } from '../../../../../components/Embeds/SizeWithout0'; +import { Slider } from '../../../../../components/Embeds/Slider'; +import { TextController } from '../../../../../components/Embeds/TextController'; +import { PageWrapper } from '../../../../../components/PageWrapper'; import { embedConfigurations, extractEmbedConfigDefaults, -} from '../../../../constants/embeds'; -import { NAVBAR_HEIGHT } from '../../../../constants/navbar'; -import { App } from '../../../../stores/app'; -import { EmbedState, type EmbedConfig } from '../../../../stores/embedState'; -import { EmbedItemType } from '../../../../stores/embedState/constants'; +} from '../../../../../constants/embeds'; +import { NAVBAR_HEIGHT } from '../../../../../constants/navbar'; +import { App } from '../../../../../stores/app'; +import { EmbedState, type EmbedConfig } from '../../../../../stores/embedState'; +import { EmbedItemType } from '../../../../../stores/embedState/constants'; export interface EmbedPreviewControllerProps { configKey: string; diff --git a/packages/website/src/pages/tools/embed/[embed]/host/_index.tsx b/packages/website/src/pages/[...locale]/tools/embed/[embed]/host/_index.tsx similarity index 83% rename from packages/website/src/pages/tools/embed/[embed]/host/_index.tsx rename to packages/website/src/pages/[...locale]/tools/embed/[embed]/host/_index.tsx index 74b70a5a0..fbdc1b54e 100644 --- a/packages/website/src/pages/tools/embed/[embed]/host/_index.tsx +++ b/packages/website/src/pages/[...locale]/tools/embed/[embed]/host/_index.tsx @@ -1,18 +1,18 @@ import { Box } from '@radix-ui/themes'; import { useMemo } from 'react'; import { parse } from 'urlon'; -import { BlitzKitTheme } from '../../../../../components/BlitzKitTheme'; +import { BlitzKitTheme } from '../../../../../../components/BlitzKitTheme'; import { embedConfigurations, embedRenderers, extractEmbedConfigDefaults, -} from '../../../../../constants/embeds'; +} from '../../../../../../constants/embeds'; import { EmbedState, type EmbedConfig, type ExtractEmbedConfigTypes, -} from '../../../../../stores/embedState'; -import { useEmbedStateCurry } from '../../../../../stores/embedState/utilities'; +} from '../../../../../../stores/embedState'; +import { useEmbedStateCurry } from '../../../../../../stores/embedState/utilities'; interface PageProps { embed: keyof typeof embedConfigurations; diff --git a/packages/website/src/pages/tools/embed/[embed]/host/index.astro b/packages/website/src/pages/[...locale]/tools/embed/[embed]/host/index.astro similarity index 100% rename from packages/website/src/pages/tools/embed/[embed]/host/index.astro rename to packages/website/src/pages/[...locale]/tools/embed/[embed]/host/index.astro diff --git a/packages/website/src/pages/tools/embed/[embed]/index.astro b/packages/website/src/pages/[...locale]/tools/embed/[embed]/index.astro similarity index 92% rename from packages/website/src/pages/tools/embed/[embed]/index.astro rename to packages/website/src/pages/[...locale]/tools/embed/[embed]/index.astro index cda65e038..7fef6fb00 100644 --- a/packages/website/src/pages/tools/embed/[embed]/index.astro +++ b/packages/website/src/pages/[...locale]/tools/embed/[embed]/index.astro @@ -1,7 +1,7 @@ --- import type { GetStaticPaths } from 'astro'; import { capitalize } from 'lodash-es'; -import { embedConfigurations } from '../../../../constants/embeds'; +import { embedConfigurations } from '../../../../../constants/embeds'; import BaseLayout from '../../../../layouts/BaseLayout.astro'; import { Page } from './_index'; diff --git a/packages/website/src/pages/tools/embed/_index.tsx b/packages/website/src/pages/[...locale]/tools/embed/_index.tsx similarity index 89% rename from packages/website/src/pages/tools/embed/_index.tsx rename to packages/website/src/pages/[...locale]/tools/embed/_index.tsx index 5d27fcb22..e1bd8a3a2 100644 --- a/packages/website/src/pages/tools/embed/_index.tsx +++ b/packages/website/src/pages/[...locale]/tools/embed/_index.tsx @@ -1,15 +1,15 @@ 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 { PageWrapper } from '../../../components/PageWrapper'; +import { PreviewWrapper } from '../../../../components/Embeds/PreviewWrapper'; +import { PageWrapper } from '../../../../components/PageWrapper'; import { embedConfigurations, extractEmbedConfigDefaults, -} from '../../../constants/embeds'; -import { Var } from '../../../core/radix/var'; -import { App } from '../../../stores/app'; -import { EmbedState } from '../../../stores/embedState'; +} from '../../../../constants/embeds'; +import { Var } from '../../../../core/radix/var'; +import { App } from '../../../../stores/app'; +import { EmbedState } from '../../../../stores/embedState'; export function Page() { return ( diff --git a/packages/website/src/pages/tools/embed/index.astro b/packages/website/src/pages/[...locale]/tools/embed/index.astro similarity index 73% rename from packages/website/src/pages/tools/embed/index.astro rename to packages/website/src/pages/[...locale]/tools/embed/index.astro index 70f7dcf2c..23d116f1c 100644 --- a/packages/website/src/pages/tools/embed/index.astro +++ b/packages/website/src/pages/[...locale]/tools/embed/index.astro @@ -1,5 +1,5 @@ --- -import { embedTool } from '../../../constants/tools'; +import { embedTool } from '../../../../constants/tools'; import ToolLayout from '../../../layouts/ToolLayout.astro'; import { Page } from './_index'; --- diff --git a/packages/website/src/pages/tools/gallery/_index.tsx b/packages/website/src/pages/[...locale]/tools/gallery/_index.tsx similarity index 70% rename from packages/website/src/pages/tools/gallery/_index.tsx rename to packages/website/src/pages/[...locale]/tools/gallery/_index.tsx index b2f6bb97f..3ea4087b4 100644 --- a/packages/website/src/pages/tools/gallery/_index.tsx +++ b/packages/website/src/pages/[...locale]/tools/gallery/_index.tsx @@ -1,9 +1,9 @@ import { CalendarIcon } from '@radix-ui/react-icons'; import { Callout, Flex } from '@radix-ui/themes'; -import { GalleryList, type Avatar } from '../../../components/Gallery/List'; -import { GallerySearch } from '../../../components/Gallery/Search'; -import { PageWrapper } from '../../../components/PageWrapper'; -import { GalleryEphemeral } from '../../../stores/galleryEphemeral'; +import { GalleryList, type Avatar } from '../../../../components/Gallery/List'; +import { GallerySearch } from '../../../../components/Gallery/Search'; +import { PageWrapper } from '../../../../components/PageWrapper'; +import { GalleryEphemeral } from '../../../../stores/galleryEphemeral'; interface PageProps { avatars: Avatar[]; diff --git a/packages/website/src/pages/tools/gallery/index.astro b/packages/website/src/pages/[...locale]/tools/gallery/index.astro similarity index 76% rename from packages/website/src/pages/tools/gallery/index.astro rename to packages/website/src/pages/[...locale]/tools/gallery/index.astro index b917eca87..fa88ede7a 100644 --- a/packages/website/src/pages/tools/gallery/index.astro +++ b/packages/website/src/pages/[...locale]/tools/gallery/index.astro @@ -1,7 +1,7 @@ --- -import type { Avatar } from '../../../components/Gallery/List'; -import { galleryTool } from '../../../constants/tools'; -import { fetchGlossary } from '../../../core/blitz/fetchGlossary'; +import type { Avatar } from '../../../../components/Gallery/List'; +import { galleryTool } from '../../../../constants/tools'; +import { fetchGlossary } from '../../../../core/blitz/fetchGlossary'; import ToolLayout from '../../../layouts/ToolLayout.astro'; import { Page } from './_index'; diff --git a/packages/website/src/pages/[...locale]/tools/performance/_index.tsx b/packages/website/src/pages/[...locale]/tools/performance/_index.tsx new file mode 100644 index 000000000..2eff693ad --- /dev/null +++ b/packages/website/src/pages/[...locale]/tools/performance/_index.tsx @@ -0,0 +1,30 @@ +import { PageWrapper } from '../../../../components/PageWrapper'; +import { PerformanceInfo } from '../../../../components/Performance/PerformanceInfo'; +import { PlayerCountControl } from '../../../../components/Performance/PlayerCountControl'; +import { TankTable } from '../../../../components/Performance/Table'; +import { FilterControl } from '../../../../components/TankSearch/components/FilterControl'; +import { TankPerformanceEphemeral } from '../../../../stores/tankPerformanceEphemeral'; +import { TankPerformanceSort } from '../../../../stores/tankPerformanceSort'; +import type { MaybeSkeletonComponentProps } from '../../../../types/maybeSkeletonComponentProps'; + +export function Page({ skeleton }: MaybeSkeletonComponentProps) { + return ( + + + + + + ); +} + +function Content({ skeleton }: MaybeSkeletonComponentProps) { + return ( + + + + + + + + ); +} diff --git a/packages/website/src/pages/tools/performance/index.astro b/packages/website/src/pages/[...locale]/tools/performance/index.astro similarity index 83% rename from packages/website/src/pages/tools/performance/index.astro rename to packages/website/src/pages/[...locale]/tools/performance/index.astro index e9568b801..e0f4a9468 100644 --- a/packages/website/src/pages/tools/performance/index.astro +++ b/packages/website/src/pages/[...locale]/tools/performance/index.astro @@ -1,6 +1,6 @@ --- +import { performanceTool } from '../../../../constants/tools'; import ToolOpenGraph from '../../../components/ToolOpenGraph.astro'; -import { performanceTool } from '../../../constants/tools'; import BaseLayout from '../../../layouts/BaseLayout.astro'; import { Page } from './_index'; --- diff --git a/packages/website/src/pages/tools/session/_index.tsx b/packages/website/src/pages/[...locale]/tools/session/_index.tsx similarity index 96% rename from packages/website/src/pages/tools/session/_index.tsx rename to packages/website/src/pages/[...locale]/tools/session/_index.tsx index 0068dff49..233de62fc 100644 --- a/packages/website/src/pages/tools/session/_index.tsx +++ b/packages/website/src/pages/[...locale]/tools/session/_index.tsx @@ -33,13 +33,13 @@ import { } from '@radix-ui/themes'; import { debounce } from 'lodash-es'; import { useEffect, useMemo, useRef, useState } from 'react'; -import { PageWrapper } from '../../../components/PageWrapper'; -import { StickyRowHeaderCell } from '../../../components/StickyRowHeaderCell'; -import { StickyTableRoot } from '../../../components/StickyTableRoot'; -import { TankRowHeaderCell } from '../../../components/TankRowHeaderCell'; -import { awaitableAverageDefinitions } from '../../../core/awaitables/averageDefinitions'; -import { awaitableTankDefinitions } from '../../../core/awaitables/tankDefinitions'; -import { Session, type SessionTracking } from '../../../stores/session'; +import { PageWrapper } from '../../../../components/PageWrapper'; +import { StickyRowHeaderCell } from '../../../../components/StickyRowHeaderCell'; +import { StickyTableRoot } from '../../../../components/StickyTableRoot'; +import { TankRowHeaderCell } from '../../../../components/TankRowHeaderCell'; +import { awaitableAverageDefinitions } from '../../../../core/awaitables/averageDefinitions'; +import { awaitableTankDefinitions } from '../../../../core/awaitables/tankDefinitions'; +import { Session, type SessionTracking } from '../../../../stores/session'; const [tankDefinitions, averageDefinitions] = await Promise.all([ awaitableTankDefinitions, diff --git a/packages/website/src/pages/tools/session/index.astro b/packages/website/src/pages/[...locale]/tools/session/index.astro similarity index 74% rename from packages/website/src/pages/tools/session/index.astro rename to packages/website/src/pages/[...locale]/tools/session/index.astro index cc086bdeb..c696fd0a2 100644 --- a/packages/website/src/pages/tools/session/index.astro +++ b/packages/website/src/pages/[...locale]/tools/session/index.astro @@ -1,5 +1,5 @@ --- -import { sessionTool } from '../../../constants/tools'; +import { sessionTool } from '../../../../constants/tools'; import ToolLayout from '../../../layouts/ToolLayout.astro'; import { Page } from './_index'; --- diff --git a/packages/website/src/pages/[...locale]/tools/tankopedia/[id]/_index.tsx b/packages/website/src/pages/[...locale]/tools/tankopedia/[id]/_index.tsx new file mode 100644 index 000000000..aa188aa49 --- /dev/null +++ b/packages/website/src/pages/[...locale]/tools/tankopedia/[id]/_index.tsx @@ -0,0 +1,61 @@ +import { TankType } from '@blitzkit/core'; +import { PageWrapper } from '../../../../../components/PageWrapper'; +import { CalloutsSection } from '../../../../../components/Tankopedia/CalloutsSection'; +import { CharacteristicsSection } from '../../../../../components/Tankopedia/CharacteristicsSection'; +import { GameModeSection } from '../../../../../components/Tankopedia/GameModeSection'; +import { HeroSection } from '../../../../../components/Tankopedia/HeroSection'; +import { HistorySection } from '../../../../../components/Tankopedia/HistorySection'; +import { MetaSection } from '../../../../../components/Tankopedia/MetaSection'; +import { TankopediaCharts } from '../../../../../components/Tankopedia/TankopediaCharts'; +import { TechTreeSection } from '../../../../../components/Tankopedia/TechTreeSection'; +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 { App } from '../../../../../stores/app'; +import { Duel } from '../../../../../stores/duel'; +import { TankopediaEphemeral } from '../../../../../stores/tankopediaEphemeral'; +import { TankopediaPersistent } from '../../../../../stores/tankopediaPersistent'; +import type { MaybeSkeletonComponentProps } from '../../../../../types/maybeSkeletonComponentProps'; + +type PageProps = MaybeSkeletonComponentProps & { + id: number; +}; + +const [tankDefinitions, provisionDefinitions, modelDefinitions] = + await Promise.all([ + awaitableTankDefinitions, + awaitableProvisionDefinitions, + awaitableModelDefinitions, + ]); + +export function Page({ id, skeleton }: PageProps) { + const tank = tankDefinitions.tanks[id]; + const model = modelDefinitions.models[id]; + + return ( + + + + + + + + + {tank.type === TankType.RESEARCHABLE && !tank.deprecated && ( + + )} + + + + + + + + + + + ); +} diff --git a/packages/website/src/pages/tools/tankopedia/[id]/index.astro b/packages/website/src/pages/[...locale]/tools/tankopedia/[id]/index.astro similarity index 94% rename from packages/website/src/pages/tools/tankopedia/[id]/index.astro rename to packages/website/src/pages/[...locale]/tools/tankopedia/[id]/index.astro index 39f89b505..cdccbf6ac 100644 --- a/packages/website/src/pages/tools/tankopedia/[id]/index.astro +++ b/packages/website/src/pages/[...locale]/tools/tankopedia/[id]/index.astro @@ -12,9 +12,9 @@ import { } from '@blitzkit/core'; import strings from '@blitzkit/core/lang/en-US.json'; import type { GetStaticPaths } from 'astro'; -import { tankCharacteristics } from '../../../../core/blitzkit/tankCharacteristics'; +import { tankCharacteristics } from '../../../../../core/blitzkit/tankCharacteristics'; import BaseLayout from '../../../../layouts/BaseLayout.astro'; -import { genericDefaultEquipmentMatrix } from '../../../../stores/duel/constants'; +import { genericDefaultEquipmentMatrix } from '../../../../../stores/duel/constants'; import { Page } from './_index'; export const getStaticPaths = (async () => { diff --git a/packages/website/src/pages/tools/tankopedia/_index.tsx b/packages/website/src/pages/[...locale]/tools/tankopedia/_index.tsx similarity index 50% rename from packages/website/src/pages/tools/tankopedia/_index.tsx rename to packages/website/src/pages/[...locale]/tools/tankopedia/_index.tsx index 75bd39002..860d7663a 100644 --- a/packages/website/src/pages/tools/tankopedia/_index.tsx +++ b/packages/website/src/pages/[...locale]/tools/tankopedia/_index.tsx @@ -1,7 +1,7 @@ -import { PageWrapper } from '../../../components/PageWrapper'; -import { TankSearch } from '../../../components/TankSearch'; -import { App } from '../../../stores/app'; -import { TankopediaPersistent } from '../../../stores/tankopediaPersistent'; +import { PageWrapper } from '../../../../components/PageWrapper'; +import { TankSearch } from '../../../../components/TankSearch'; +import { App } from '../../../../stores/app'; +import { TankopediaPersistent } from '../../../../stores/tankopediaPersistent'; export function Page() { return ( diff --git a/packages/website/src/pages/tools/tankopedia/index.astro b/packages/website/src/pages/[...locale]/tools/tankopedia/index.astro similarity index 77% rename from packages/website/src/pages/tools/tankopedia/index.astro rename to packages/website/src/pages/[...locale]/tools/tankopedia/index.astro index 6e2055143..e76c94c8e 100644 --- a/packages/website/src/pages/tools/tankopedia/index.astro +++ b/packages/website/src/pages/[...locale]/tools/tankopedia/index.astro @@ -1,5 +1,5 @@ --- -import { tankopediaTool } from '../../../constants/tools'; +import { tankopediaTool } from '../../../../constants/tools'; import ToolLayout from '../../../layouts/ToolLayout.astro'; import { Page } from './_index'; --- diff --git a/packages/website/src/pages/[...locale]/tools/tier-list/_index.tsx b/packages/website/src/pages/[...locale]/tools/tier-list/_index.tsx new file mode 100644 index 000000000..a9fce97ef --- /dev/null +++ b/packages/website/src/pages/[...locale]/tools/tier-list/_index.tsx @@ -0,0 +1,30 @@ +import { PageWrapper } from '../../../../components/PageWrapper'; +import { FilterControl } from '../../../../components/TankSearch/components/FilterControl'; +import { TierListControls } from '../../../../components/TierList/Controls'; +import { TierListTable } from '../../../../components/TierList/Table'; +import { TierListTiles } from '../../../../components/TierList/Tiles'; +import { URLManager } from '../../../../components/TierList/URLManager'; +import { TankopediaPersistent } from '../../../../stores/tankopediaPersistent'; +import { TierList } from '../../../../stores/tierList'; + +export function Page() { + return ( + + + + + + ); +} + +function Content() { + return ( + + + + + + + + ); +} diff --git a/packages/website/src/pages/tools/tier-list/index.astro b/packages/website/src/pages/[...locale]/tools/tier-list/index.astro similarity index 74% rename from packages/website/src/pages/tools/tier-list/index.astro rename to packages/website/src/pages/[...locale]/tools/tier-list/index.astro index 552b02045..6736a4104 100644 --- a/packages/website/src/pages/tools/tier-list/index.astro +++ b/packages/website/src/pages/[...locale]/tools/tier-list/index.astro @@ -1,5 +1,5 @@ --- -import { tierListTool } from '../../../constants/tools'; +import { tierListTool } from '../../../../constants/tools'; import ToolLayout from '../../../layouts/ToolLayout.astro'; import { Page } from './_index'; --- diff --git a/packages/website/src/pages/api/tankopedia/tank-icon/[id]/index.astro b/packages/website/src/pages/api/tankopedia/tank-icon/[id]/index.astro index 7aa817f2b..e8e8d414a 100644 --- a/packages/website/src/pages/api/tankopedia/tank-icon/[id]/index.astro +++ b/packages/website/src/pages/api/tankopedia/tank-icon/[id]/index.astro @@ -1,7 +1,7 @@ --- import { assertSecret } from '@blitzkit/core'; import type { GetStaticPaths } from 'astro'; -import { getStaticPaths as tankopediaGetStaticPaths } from '../../../../tools/tankopedia/[id]/index.astro'; +import { getStaticPaths as tankopediaGetStaticPaths } from '../../../../[...locale]/tools/tankopedia/[id]/index.astro'; import { Page } from './_index'; export const getStaticPaths = (async () => { diff --git a/packages/website/src/pages/tools/performance/_index.tsx b/packages/website/src/pages/tools/performance/_index.tsx deleted file mode 100644 index 86aea4d74..000000000 --- a/packages/website/src/pages/tools/performance/_index.tsx +++ /dev/null @@ -1,30 +0,0 @@ -import { PageWrapper } from '../../../components/PageWrapper'; -import { PerformanceInfo } from '../../../components/Performance/PerformanceInfo'; -import { PlayerCountControl } from '../../../components/Performance/PlayerCountControl'; -import { TankTable } from '../../../components/Performance/Table'; -import { FilterControl } from '../../../components/TankSearch/components/FilterControl'; -import { TankPerformanceEphemeral } from '../../../stores/tankPerformanceEphemeral'; -import { TankPerformanceSort } from '../../../stores/tankPerformanceSort'; -import type { MaybeSkeletonComponentProps } from '../../../types/maybeSkeletonComponentProps'; - -export function Page({ skeleton }: MaybeSkeletonComponentProps) { - return ( - - - - - - ); -} - -function Content({ skeleton }: MaybeSkeletonComponentProps) { - return ( - - - - - - - - ); -} diff --git a/packages/website/src/pages/tools/tankopedia/[id]/_index.tsx b/packages/website/src/pages/tools/tankopedia/[id]/_index.tsx deleted file mode 100644 index ed1ca3be8..000000000 --- a/packages/website/src/pages/tools/tankopedia/[id]/_index.tsx +++ /dev/null @@ -1,61 +0,0 @@ -import { TankType } from '@blitzkit/core'; -import { PageWrapper } from '../../../../components/PageWrapper'; -import { CalloutsSection } from '../../../../components/Tankopedia/CalloutsSection'; -import { CharacteristicsSection } from '../../../../components/Tankopedia/CharacteristicsSection'; -import { GameModeSection } from '../../../../components/Tankopedia/GameModeSection'; -import { HeroSection } from '../../../../components/Tankopedia/HeroSection'; -import { HistorySection } from '../../../../components/Tankopedia/HistorySection'; -import { MetaSection } from '../../../../components/Tankopedia/MetaSection'; -import { TankopediaCharts } from '../../../../components/Tankopedia/TankopediaCharts'; -import { TechTreeSection } from '../../../../components/Tankopedia/TechTreeSection'; -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 { App } from '../../../../stores/app'; -import { Duel } from '../../../../stores/duel'; -import { TankopediaEphemeral } from '../../../../stores/tankopediaEphemeral'; -import { TankopediaPersistent } from '../../../../stores/tankopediaPersistent'; -import type { MaybeSkeletonComponentProps } from '../../../../types/maybeSkeletonComponentProps'; - -type PageProps = MaybeSkeletonComponentProps & { - id: number; -}; - -const [tankDefinitions, provisionDefinitions, modelDefinitions] = - await Promise.all([ - awaitableTankDefinitions, - awaitableProvisionDefinitions, - awaitableModelDefinitions, - ]); - -export function Page({ id, skeleton }: PageProps) { - const tank = tankDefinitions.tanks[id]; - const model = modelDefinitions.models[id]; - - return ( - - - - - - - - - {tank.type === TankType.RESEARCHABLE && !tank.deprecated && ( - - )} - - - - - - - - - - - ); -} diff --git a/packages/website/src/pages/tools/tier-list/_index.tsx b/packages/website/src/pages/tools/tier-list/_index.tsx deleted file mode 100644 index 2cfe0749a..000000000 --- a/packages/website/src/pages/tools/tier-list/_index.tsx +++ /dev/null @@ -1,30 +0,0 @@ -import { PageWrapper } from '../../../components/PageWrapper'; -import { FilterControl } from '../../../components/TankSearch/components/FilterControl'; -import { TierListControls } from '../../../components/TierList/Controls'; -import { TierListTable } from '../../../components/TierList/Table'; -import { TierListTiles } from '../../../components/TierList/Tiles'; -import { URLManager } from '../../../components/TierList/URLManager'; -import { TankopediaPersistent } from '../../../stores/tankopediaPersistent'; -import { TierList } from '../../../stores/tierList'; - -export function Page() { - return ( - - - - - - ); -} - -function Content() { - return ( - - - - - - - - ); -} From 844965bcb00a0d8faf8ff77e9aabcc57ec613935 Mon Sep 17 00:00:00 2001 From: tresabhi <43380238+tresabhi@users.noreply.github.com> Date: Fri, 27 Dec 2024 12:55:52 -0600 Subject: [PATCH 003/114] feat: locale redirect --- packages/core/src/blitzkit/supportedLocales.ts | 1 + packages/website/src/layouts/BaseLayout.astro | 15 +++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/packages/core/src/blitzkit/supportedLocales.ts b/packages/core/src/blitzkit/supportedLocales.ts index 457066ffe..9c3ca86f4 100644 --- a/packages/core/src/blitzkit/supportedLocales.ts +++ b/packages/core/src/blitzkit/supportedLocales.ts @@ -1,4 +1,5 @@ export const SUPPORTED_LOCALES = ['en', 'es', 'hr', 'ru', 'uk', 'cn']; +export const DEFAULT_LOCALE = SUPPORTED_LOCALES[0]; export const LOCALE_FILES: Record<(typeof SUPPORTED_LOCALES)[number], string> = { en: 'en-US', diff --git a/packages/website/src/layouts/BaseLayout.astro b/packages/website/src/layouts/BaseLayout.astro index 8ed4cd9da..819ab245f 100644 --- a/packages/website/src/layouts/BaseLayout.astro +++ b/packages/website/src/layouts/BaseLayout.astro @@ -36,6 +36,21 @@ const isRoot = pathname === '/'; + + From 68362c22b1c53d01bf979decee37b3af0dce0fdd Mon Sep 17 00:00:00 2001 From: tresabhi <43380238+tresabhi@users.noreply.github.com> Date: Fri, 27 Dec 2024 12:59:56 -0600 Subject: [PATCH 004/114] fix: imports --- .../website/src/pages/[...locale]/auth/[provider]/index.astro | 2 +- .../pages/[...locale]/docs/[directory]/[document]/index.astro | 2 +- .../website/src/pages/[...locale]/docs/patches/index.astro | 2 +- packages/website/src/pages/[...locale]/settings/index.astro | 2 +- .../website/src/pages/[...locale]/tools/charts/index.astro | 2 +- .../website/src/pages/[...locale]/tools/compare/index.astro | 4 ++-- .../pages/[...locale]/tools/embed/[embed]/host/index.astro | 3 ++- .../src/pages/[...locale]/tools/embed/[embed]/index.astro | 2 +- .../website/src/pages/[...locale]/tools/embed/index.astro | 2 +- .../website/src/pages/[...locale]/tools/gallery/index.astro | 2 +- .../src/pages/[...locale]/tools/performance/index.astro | 4 ++-- .../website/src/pages/[...locale]/tools/session/index.astro | 2 +- .../src/pages/[...locale]/tools/tankopedia/[id]/index.astro | 2 +- .../src/pages/[...locale]/tools/tankopedia/index.astro | 2 +- .../website/src/pages/[...locale]/tools/tier-list/index.astro | 2 +- 15 files changed, 18 insertions(+), 17 deletions(-) diff --git a/packages/website/src/pages/[...locale]/auth/[provider]/index.astro b/packages/website/src/pages/[...locale]/auth/[provider]/index.astro index 42ebd3b22..71779a58f 100644 --- a/packages/website/src/pages/[...locale]/auth/[provider]/index.astro +++ b/packages/website/src/pages/[...locale]/auth/[provider]/index.astro @@ -2,7 +2,7 @@ import { Flex, Heading, Text } from '@radix-ui/themes'; import type { GetStaticPaths } from 'astro'; import { PageWrapper } from '../../../../components/PageWrapper'; -import BaseLayout from '../../../layouts/BaseLayout.astro'; +import BaseLayout from '../../../../layouts/BaseLayout.astro'; import { AUTH_PROVIDERS, AUTH_PROVIDER_NAMES, Authorize } from './_index'; export const getStaticPaths = (() => { diff --git a/packages/website/src/pages/[...locale]/docs/[directory]/[document]/index.astro b/packages/website/src/pages/[...locale]/docs/[directory]/[document]/index.astro index c213c2d4c..0a094ea23 100644 --- a/packages/website/src/pages/[...locale]/docs/[directory]/[document]/index.astro +++ b/packages/website/src/pages/[...locale]/docs/[directory]/[document]/index.astro @@ -1,7 +1,7 @@ --- import type { GetStaticPaths } from 'astro'; import { readFile } from 'fs/promises'; -import BaseLayout from '../../../../layouts/BaseLayout.astro'; +import BaseLayout from '../../../../../layouts/BaseLayout.astro'; import { Page } from './_index'; export const getStaticPaths = (async () => { diff --git a/packages/website/src/pages/[...locale]/docs/patches/index.astro b/packages/website/src/pages/[...locale]/docs/patches/index.astro index a77e39b75..a599a36a0 100644 --- a/packages/website/src/pages/[...locale]/docs/patches/index.astro +++ b/packages/website/src/pages/[...locale]/docs/patches/index.astro @@ -3,7 +3,7 @@ import { MagicWandIcon, StarFilledIcon } from '@radix-ui/react-icons'; import { Flex, Heading, Link } from '@radix-ui/themes'; import { compareVersions } from 'compare-versions'; import { PageWrapper } from '../../../../components/PageWrapper'; -import BaseLayout from '../../../layouts/BaseLayout.astro'; +import BaseLayout from '../../../../layouts/BaseLayout.astro'; // this can't be used in template literal :( const ROOT = '../../../../../../docs/changelogs/'; diff --git a/packages/website/src/pages/[...locale]/settings/index.astro b/packages/website/src/pages/[...locale]/settings/index.astro index e3e75c5d4..540ca476c 100644 --- a/packages/website/src/pages/[...locale]/settings/index.astro +++ b/packages/website/src/pages/[...locale]/settings/index.astro @@ -1,5 +1,5 @@ --- -import BaseLayout from '../../layouts/BaseLayout.astro'; +import BaseLayout from '../../../layouts/BaseLayout.astro'; import { Page } from './_index'; --- diff --git a/packages/website/src/pages/[...locale]/tools/charts/index.astro b/packages/website/src/pages/[...locale]/tools/charts/index.astro index bf316a9ee..3656de25d 100644 --- a/packages/website/src/pages/[...locale]/tools/charts/index.astro +++ b/packages/website/src/pages/[...locale]/tools/charts/index.astro @@ -1,6 +1,6 @@ --- import { chartsTool } from '../../../../constants/tools'; -import ToolLayout from '../../../layouts/ToolLayout.astro'; +import ToolLayout from '../../../../layouts/ToolLayout.astro'; import { Page } from './_index'; --- diff --git a/packages/website/src/pages/[...locale]/tools/compare/index.astro b/packages/website/src/pages/[...locale]/tools/compare/index.astro index e54a46fc0..38b677cc3 100644 --- a/packages/website/src/pages/[...locale]/tools/compare/index.astro +++ b/packages/website/src/pages/[...locale]/tools/compare/index.astro @@ -1,7 +1,7 @@ --- +import ToolOpenGraph from '../../../../components/ToolOpenGraph.astro'; import { compareTool } from '../../../../constants/tools'; -import ToolOpenGraph from '../../../components/ToolOpenGraph.astro'; -import BaseLayout from '../../../layouts/BaseLayout.astro'; +import BaseLayout from '../../../../layouts/BaseLayout.astro'; import { Page } from './_index'; --- diff --git a/packages/website/src/pages/[...locale]/tools/embed/[embed]/host/index.astro b/packages/website/src/pages/[...locale]/tools/embed/[embed]/host/index.astro index 61a13a3e0..19dbbcbde 100644 --- a/packages/website/src/pages/[...locale]/tools/embed/[embed]/host/index.astro +++ b/packages/website/src/pages/[...locale]/tools/embed/[embed]/host/index.astro @@ -1,6 +1,7 @@ --- import { capitalize } from 'lodash-es'; -import EmbedLayout from '../../../../../layouts/EmbedLayout.astro'; +import EmbedLayout from '../../../../../../layouts/EmbedLayout.astro'; +import type { getStaticPaths } from '../index.astro'; import { Page } from './_index'; export { getStaticPaths } from '../index.astro'; diff --git a/packages/website/src/pages/[...locale]/tools/embed/[embed]/index.astro b/packages/website/src/pages/[...locale]/tools/embed/[embed]/index.astro index 7fef6fb00..3c6dd563c 100644 --- a/packages/website/src/pages/[...locale]/tools/embed/[embed]/index.astro +++ b/packages/website/src/pages/[...locale]/tools/embed/[embed]/index.astro @@ -2,7 +2,7 @@ import type { GetStaticPaths } from 'astro'; import { capitalize } from 'lodash-es'; import { embedConfigurations } from '../../../../../constants/embeds'; -import BaseLayout from '../../../../layouts/BaseLayout.astro'; +import BaseLayout from '../../../../../layouts/BaseLayout.astro'; import { Page } from './_index'; export const getStaticPaths = (() => { diff --git a/packages/website/src/pages/[...locale]/tools/embed/index.astro b/packages/website/src/pages/[...locale]/tools/embed/index.astro index 23d116f1c..68bb9fcb7 100644 --- a/packages/website/src/pages/[...locale]/tools/embed/index.astro +++ b/packages/website/src/pages/[...locale]/tools/embed/index.astro @@ -1,6 +1,6 @@ --- import { embedTool } from '../../../../constants/tools'; -import ToolLayout from '../../../layouts/ToolLayout.astro'; +import ToolLayout from '../../../../layouts/ToolLayout.astro'; import { Page } from './_index'; --- diff --git a/packages/website/src/pages/[...locale]/tools/gallery/index.astro b/packages/website/src/pages/[...locale]/tools/gallery/index.astro index fa88ede7a..017440b20 100644 --- a/packages/website/src/pages/[...locale]/tools/gallery/index.astro +++ b/packages/website/src/pages/[...locale]/tools/gallery/index.astro @@ -2,7 +2,7 @@ import type { Avatar } from '../../../../components/Gallery/List'; import { galleryTool } from '../../../../constants/tools'; import { fetchGlossary } from '../../../../core/blitz/fetchGlossary'; -import ToolLayout from '../../../layouts/ToolLayout.astro'; +import ToolLayout from '../../../../layouts/ToolLayout.astro'; import { Page } from './_index'; const glossary = await fetchGlossary(); diff --git a/packages/website/src/pages/[...locale]/tools/performance/index.astro b/packages/website/src/pages/[...locale]/tools/performance/index.astro index e0f4a9468..8b8d90988 100644 --- a/packages/website/src/pages/[...locale]/tools/performance/index.astro +++ b/packages/website/src/pages/[...locale]/tools/performance/index.astro @@ -1,7 +1,7 @@ --- +import ToolOpenGraph from '../../../../components/ToolOpenGraph.astro'; import { performanceTool } from '../../../../constants/tools'; -import ToolOpenGraph from '../../../components/ToolOpenGraph.astro'; -import BaseLayout from '../../../layouts/BaseLayout.astro'; +import BaseLayout from '../../../../layouts/BaseLayout.astro'; import { Page } from './_index'; --- diff --git a/packages/website/src/pages/[...locale]/tools/session/index.astro b/packages/website/src/pages/[...locale]/tools/session/index.astro index c696fd0a2..322d8abb4 100644 --- a/packages/website/src/pages/[...locale]/tools/session/index.astro +++ b/packages/website/src/pages/[...locale]/tools/session/index.astro @@ -1,6 +1,6 @@ --- import { sessionTool } from '../../../../constants/tools'; -import ToolLayout from '../../../layouts/ToolLayout.astro'; +import ToolLayout from '../../../../layouts/ToolLayout.astro'; import { Page } from './_index'; --- diff --git a/packages/website/src/pages/[...locale]/tools/tankopedia/[id]/index.astro b/packages/website/src/pages/[...locale]/tools/tankopedia/[id]/index.astro index cdccbf6ac..4f3934cfd 100644 --- a/packages/website/src/pages/[...locale]/tools/tankopedia/[id]/index.astro +++ b/packages/website/src/pages/[...locale]/tools/tankopedia/[id]/index.astro @@ -13,7 +13,7 @@ import { import strings from '@blitzkit/core/lang/en-US.json'; import type { GetStaticPaths } from 'astro'; import { tankCharacteristics } from '../../../../../core/blitzkit/tankCharacteristics'; -import BaseLayout from '../../../../layouts/BaseLayout.astro'; +import BaseLayout from '../../../../../layouts/BaseLayout.astro'; import { genericDefaultEquipmentMatrix } from '../../../../../stores/duel/constants'; import { Page } from './_index'; diff --git a/packages/website/src/pages/[...locale]/tools/tankopedia/index.astro b/packages/website/src/pages/[...locale]/tools/tankopedia/index.astro index e76c94c8e..6362de006 100644 --- a/packages/website/src/pages/[...locale]/tools/tankopedia/index.astro +++ b/packages/website/src/pages/[...locale]/tools/tankopedia/index.astro @@ -1,6 +1,6 @@ --- import { tankopediaTool } from '../../../../constants/tools'; -import ToolLayout from '../../../layouts/ToolLayout.astro'; +import ToolLayout from '../../../../layouts/ToolLayout.astro'; import { Page } from './_index'; --- diff --git a/packages/website/src/pages/[...locale]/tools/tier-list/index.astro b/packages/website/src/pages/[...locale]/tools/tier-list/index.astro index 6736a4104..624d33036 100644 --- a/packages/website/src/pages/[...locale]/tools/tier-list/index.astro +++ b/packages/website/src/pages/[...locale]/tools/tier-list/index.astro @@ -1,6 +1,6 @@ --- import { tierListTool } from '../../../../constants/tools'; -import ToolLayout from '../../../layouts/ToolLayout.astro'; +import ToolLayout from '../../../../layouts/ToolLayout.astro'; import { Page } from './_index'; --- From 1f577c2317368146f07062428669b515b91a18a5 Mon Sep 17 00:00:00 2001 From: tresabhi <43380238+tresabhi@users.noreply.github.com> Date: Fri, 27 Dec 2024 13:16:51 -0600 Subject: [PATCH 005/114] feat: i18n paths --- .../[...locale]/auth/[provider]/index.astro | 7 ++++++- .../pages/[...locale]/tools/charts/index.astro | 2 ++ .../pages/[...locale]/tools/compare/index.astro | 2 ++ .../[...locale]/tools/embed/[embed]/index.astro | 16 +++++++++++++--- .../pages/[...locale]/tools/embed/index.astro | 2 ++ .../pages/[...locale]/tools/gallery/index.astro | 2 ++ .../[...locale]/tools/performance/index.astro | 2 ++ .../pages/[...locale]/tools/session/index.astro | 2 ++ .../tools/tankopedia/[id]/index.astro | 12 +++++++++--- .../[...locale]/tools/tankopedia/index.astro | 2 ++ .../[...locale]/tools/tier-list/index.astro | 2 ++ 11 files changed, 44 insertions(+), 7 deletions(-) diff --git a/packages/website/src/pages/[...locale]/auth/[provider]/index.astro b/packages/website/src/pages/[...locale]/auth/[provider]/index.astro index 71779a58f..dde72c3fd 100644 --- a/packages/website/src/pages/[...locale]/auth/[provider]/index.astro +++ b/packages/website/src/pages/[...locale]/auth/[provider]/index.astro @@ -3,10 +3,15 @@ import { Flex, Heading, Text } from '@radix-ui/themes'; import type { GetStaticPaths } from 'astro'; import { PageWrapper } from '../../../../components/PageWrapper'; import BaseLayout from '../../../../layouts/BaseLayout.astro'; +import { getStaticPaths as parentGetStaticPaths } from '../../index.astro'; import { AUTH_PROVIDERS, AUTH_PROVIDER_NAMES, Authorize } from './_index'; export const getStaticPaths = (() => { - return AUTH_PROVIDERS.map((provider) => ({ params: { provider } })); + const parentPaths = parentGetStaticPaths(); + + return AUTH_PROVIDERS.map((provider) => + parentPaths.map((parent) => ({ params: { ...parent.params, provider } })), + ).flat(); }) satisfies GetStaticPaths; const { provider } = Astro.params; diff --git a/packages/website/src/pages/[...locale]/tools/charts/index.astro b/packages/website/src/pages/[...locale]/tools/charts/index.astro index 3656de25d..d04592c03 100644 --- a/packages/website/src/pages/[...locale]/tools/charts/index.astro +++ b/packages/website/src/pages/[...locale]/tools/charts/index.astro @@ -2,6 +2,8 @@ import { chartsTool } from '../../../../constants/tools'; import ToolLayout from '../../../../layouts/ToolLayout.astro'; import { Page } from './_index'; + +export { getStaticPaths } from '../../index.astro'; --- diff --git a/packages/website/src/pages/[...locale]/tools/compare/index.astro b/packages/website/src/pages/[...locale]/tools/compare/index.astro index 38b677cc3..8c28f897f 100644 --- a/packages/website/src/pages/[...locale]/tools/compare/index.astro +++ b/packages/website/src/pages/[...locale]/tools/compare/index.astro @@ -3,6 +3,8 @@ import ToolOpenGraph from '../../../../components/ToolOpenGraph.astro'; import { compareTool } from '../../../../constants/tools'; import BaseLayout from '../../../../layouts/BaseLayout.astro'; import { Page } from './_index'; + +export { getStaticPaths } from '../../index.astro'; --- diff --git a/packages/website/src/pages/[...locale]/tools/embed/[embed]/index.astro b/packages/website/src/pages/[...locale]/tools/embed/[embed]/index.astro index 3c6dd563c..72313bcc9 100644 --- a/packages/website/src/pages/[...locale]/tools/embed/[embed]/index.astro +++ b/packages/website/src/pages/[...locale]/tools/embed/[embed]/index.astro @@ -3,12 +3,22 @@ import type { GetStaticPaths } from 'astro'; import { capitalize } from 'lodash-es'; import { embedConfigurations } from '../../../../../constants/embeds'; import BaseLayout from '../../../../../layouts/BaseLayout.astro'; +import { getStaticPaths as parentGetStaticPaths } from '../index.astro'; import { Page } from './_index'; export const getStaticPaths = (() => { - return Object.keys(embedConfigurations).map((embed) => ({ - params: { embed: embed as keyof typeof embedConfigurations }, - })); + const parentPaths = parentGetStaticPaths(); + + return Object.keys(embedConfigurations) + .map((embed) => + parentPaths.map((parent) => ({ + params: { + ...parent.params, + embed: embed as keyof typeof embedConfigurations, + }, + })), + ) + .flat(); }) satisfies GetStaticPaths; --- diff --git a/packages/website/src/pages/[...locale]/tools/embed/index.astro b/packages/website/src/pages/[...locale]/tools/embed/index.astro index 68bb9fcb7..96c841177 100644 --- a/packages/website/src/pages/[...locale]/tools/embed/index.astro +++ b/packages/website/src/pages/[...locale]/tools/embed/index.astro @@ -2,6 +2,8 @@ import { embedTool } from '../../../../constants/tools'; import ToolLayout from '../../../../layouts/ToolLayout.astro'; import { Page } from './_index'; + +export { getStaticPaths } from '../../index.astro'; --- diff --git a/packages/website/src/pages/[...locale]/tools/gallery/index.astro b/packages/website/src/pages/[...locale]/tools/gallery/index.astro index 017440b20..b9d649d2a 100644 --- a/packages/website/src/pages/[...locale]/tools/gallery/index.astro +++ b/packages/website/src/pages/[...locale]/tools/gallery/index.astro @@ -5,6 +5,8 @@ import { fetchGlossary } from '../../../../core/blitz/fetchGlossary'; import ToolLayout from '../../../../layouts/ToolLayout.astro'; import { Page } from './_index'; +export { getStaticPaths } from '../../index.astro'; + const glossary = await fetchGlossary(); const avatars = Object.entries(glossary) .filter( diff --git a/packages/website/src/pages/[...locale]/tools/performance/index.astro b/packages/website/src/pages/[...locale]/tools/performance/index.astro index 8b8d90988..ed283ae41 100644 --- a/packages/website/src/pages/[...locale]/tools/performance/index.astro +++ b/packages/website/src/pages/[...locale]/tools/performance/index.astro @@ -3,6 +3,8 @@ import ToolOpenGraph from '../../../../components/ToolOpenGraph.astro'; import { performanceTool } from '../../../../constants/tools'; import BaseLayout from '../../../../layouts/BaseLayout.astro'; import { Page } from './_index'; + +export { getStaticPaths } from '../../index.astro'; --- diff --git a/packages/website/src/pages/[...locale]/tools/session/index.astro b/packages/website/src/pages/[...locale]/tools/session/index.astro index 322d8abb4..1042965fd 100644 --- a/packages/website/src/pages/[...locale]/tools/session/index.astro +++ b/packages/website/src/pages/[...locale]/tools/session/index.astro @@ -2,6 +2,8 @@ import { sessionTool } from '../../../../constants/tools'; import ToolLayout from '../../../../layouts/ToolLayout.astro'; import { Page } from './_index'; + +export { getStaticPaths } from '../../index.astro'; --- diff --git a/packages/website/src/pages/[...locale]/tools/tankopedia/[id]/index.astro b/packages/website/src/pages/[...locale]/tools/tankopedia/[id]/index.astro index 4f3934cfd..ad70470e6 100644 --- a/packages/website/src/pages/[...locale]/tools/tankopedia/[id]/index.astro +++ b/packages/website/src/pages/[...locale]/tools/tankopedia/[id]/index.astro @@ -15,14 +15,20 @@ import type { GetStaticPaths } from 'astro'; import { tankCharacteristics } from '../../../../../core/blitzkit/tankCharacteristics'; import BaseLayout from '../../../../../layouts/BaseLayout.astro'; import { genericDefaultEquipmentMatrix } from '../../../../../stores/duel/constants'; +import { getStaticPaths as parentGetStaticPaths } from '../index.astro'; import { Page } from './_index'; export const getStaticPaths = (async () => { const tankDefinitions = await fetchTankDefinitions(); + const parentPaths = parentGetStaticPaths(); - return Object.values(tankDefinitions.tanks).map((tank) => ({ - params: { id: tank.id }, - })); + return Object.values(tankDefinitions.tanks) + .map((tank) => + parentPaths.map((parent) => ({ + params: { ...parent.params, id: tank.id }, + })), + ) + .flat(); }) satisfies GetStaticPaths; const { id } = Astro.params; diff --git a/packages/website/src/pages/[...locale]/tools/tankopedia/index.astro b/packages/website/src/pages/[...locale]/tools/tankopedia/index.astro index 6362de006..0efb66a9a 100644 --- a/packages/website/src/pages/[...locale]/tools/tankopedia/index.astro +++ b/packages/website/src/pages/[...locale]/tools/tankopedia/index.astro @@ -2,6 +2,8 @@ import { tankopediaTool } from '../../../../constants/tools'; import ToolLayout from '../../../../layouts/ToolLayout.astro'; import { Page } from './_index'; + +export { getStaticPaths } from '../../index.astro'; --- diff --git a/packages/website/src/pages/[...locale]/tools/tier-list/index.astro b/packages/website/src/pages/[...locale]/tools/tier-list/index.astro index 624d33036..fd889bcc8 100644 --- a/packages/website/src/pages/[...locale]/tools/tier-list/index.astro +++ b/packages/website/src/pages/[...locale]/tools/tier-list/index.astro @@ -2,6 +2,8 @@ import { tierListTool } from '../../../../constants/tools'; import ToolLayout from '../../../../layouts/ToolLayout.astro'; import { Page } from './_index'; + +export { getStaticPaths } from '../../index.astro'; --- From eb5527706ef10649650a627377c0f759c0da3dc3 Mon Sep 17 00:00:00 2001 From: tresabhi <43380238+tresabhi@users.noreply.github.com> Date: Fri, 27 Dec 2024 13:34:39 -0600 Subject: [PATCH 006/114] fix: remove dead code --- packages/website/src/components/DummyLink.tsx | 7 ------- 1 file changed, 7 deletions(-) delete mode 100644 packages/website/src/components/DummyLink.tsx diff --git a/packages/website/src/components/DummyLink.tsx b/packages/website/src/components/DummyLink.tsx deleted file mode 100644 index 51dd7ad89..000000000 --- a/packages/website/src/components/DummyLink.tsx +++ /dev/null @@ -1,7 +0,0 @@ -import { Link, type LinkProps } from '@radix-ui/themes'; - -export function DummyLink({ href = '#', onClick, ...props }: LinkProps) { - return ( - event.preventDefault()} {...props} /> - ); -} From 8203db3dc224fac659072b8e58b7f39e6851e35e Mon Sep 17 00:00:00 2001 From: tresabhi <43380238+tresabhi@users.noreply.github.com> Date: Fri, 27 Dec 2024 13:43:25 -0600 Subject: [PATCH 007/114] feat: some locale links --- packages/website/src/components/Footer.astro | 18 ++++++++++++------ packages/website/src/components/LinkI18n.tsx | 19 +++++++++++++++++++ .../website/src/core/i18n/getBestLocale.ts | 11 +++++++++++ packages/website/src/layouts/BaseLayout.astro | 11 +++++------ 4 files changed, 47 insertions(+), 12 deletions(-) create mode 100644 packages/website/src/components/LinkI18n.tsx create mode 100644 packages/website/src/core/i18n/getBestLocale.ts diff --git a/packages/website/src/components/Footer.astro b/packages/website/src/components/Footer.astro index 2bd1ccc6b..1f22b5a93 100644 --- a/packages/website/src/components/Footer.astro +++ b/packages/website/src/components/Footer.astro @@ -2,8 +2,10 @@ import { assertSecret, fetchGameDefinitions } from '@blitzkit/core'; import { Code, Flex, Heading, Link, Text } from '@radix-ui/themes'; import packageJson from '../../../../package.json'; +import { LinkI18n } from './LinkI18n'; const gameDefinitions = await fetchGameDefinitions(); +const { locale } = Astro.params; --- + {locale} - Credits + Credits GitHub - Patches + Patches @@ -101,12 +107,12 @@ const gameDefinitions = await fetchGameDefinitions(); > Legal - + Privacy policy - - + + Terms of service - + diff --git a/packages/website/src/components/LinkI18n.tsx b/packages/website/src/components/LinkI18n.tsx new file mode 100644 index 000000000..4ad51e137 --- /dev/null +++ b/packages/website/src/components/LinkI18n.tsx @@ -0,0 +1,19 @@ +import { Link, type LinkProps } from '@radix-ui/themes'; +import { getBestLocale } from '../core/i18n/getBestLocale'; + +type LinkI18nProps = LinkProps & { + locale: string | undefined; +}; + +export function LinkI18n({ locale, href, ...props }: LinkI18nProps) { + const bestLocale = getBestLocale(); + const resolvedLocale = locale ?? bestLocale; + const prefix = resolvedLocale === undefined ? '' : `/${resolvedLocale}`; + + return ( + + ); +} diff --git a/packages/website/src/core/i18n/getBestLocale.ts b/packages/website/src/core/i18n/getBestLocale.ts new file mode 100644 index 000000000..471f663ed --- /dev/null +++ b/packages/website/src/core/i18n/getBestLocale.ts @@ -0,0 +1,11 @@ +import { DEFAULT_LOCALE, SUPPORTED_LOCALES } from '@blitzkit/core'; + +export function getBestLocale() { + const desiredLocale = navigator.language.split('-')[0]; + const isSupported = SUPPORTED_LOCALES.includes(desiredLocale); + const isDefault = desiredLocale === DEFAULT_LOCALE; + + if (!isSupported || isDefault) return undefined; + + return desiredLocale; +} diff --git a/packages/website/src/layouts/BaseLayout.astro b/packages/website/src/layouts/BaseLayout.astro index 819ab245f..9704d5d82 100644 --- a/packages/website/src/layouts/BaseLayout.astro +++ b/packages/website/src/layouts/BaseLayout.astro @@ -38,17 +38,16 @@ const isRoot = pathname === '/'; From e0daf85561b12ef05007fcc6f4fe365778cc82e4 Mon Sep 17 00:00:00 2001 From: tresabhi <43380238+tresabhi@users.noreply.github.com> Date: Fri, 27 Dec 2024 14:01:59 -0600 Subject: [PATCH 008/114] feat: some more localized links --- .../website/src/components/Checks/index.tsx | 16 ++++-- .../src/components/Compare/TankControl.tsx | 13 +++-- .../src/components/HomePageHotTanks.tsx | 15 ++++-- packages/website/src/components/LinkI18n.tsx | 5 +- packages/website/src/components/Navbar.astro | 22 +++++--- .../website/src/components/TankCard/index.tsx | 10 ++-- .../src/components/TankRowHeaderCell.tsx | 17 ++++-- .../TankSearch/components/QuickLink.tsx | 9 ++-- .../components/Modules.tsx | 9 +++- .../Tankopedia/MetaSection/index.tsx | 14 +++-- .../TechTreeSection/components/Node.tsx | 10 ++-- .../website/src/components/ToolCard.astro | 9 ++-- packages/website/src/hooks/useLocale.tsx | 28 ++++++++++ packages/website/src/pages/404.astro | 7 ++- .../[...locale]/docs/patches/index.astro | 9 ++-- .../website/src/pages/[...locale]/index.astro | 3 +- .../pages/[...locale]/tools/embed/_index.tsx | 9 +++- .../tools/tankopedia/[id]/_index.tsx | 52 ++++++++++--------- .../tools/tankopedia/[id]/index.astro | 6 +-- 19 files changed, 182 insertions(+), 81 deletions(-) create mode 100644 packages/website/src/hooks/useLocale.tsx diff --git a/packages/website/src/components/Checks/index.tsx b/packages/website/src/components/Checks/index.tsx index 9ba56edcc..7288edad3 100644 --- a/packages/website/src/components/Checks/index.tsx +++ b/packages/website/src/components/Checks/index.tsx @@ -1,8 +1,10 @@ import { assertSecret, idToRegion } from '@blitzkit/core'; -import { Button, Flex, Heading, Link, Text } from '@radix-ui/themes'; +import { Button, Flex, Heading, Text } from '@radix-ui/themes'; import { useEffect, useState } from 'react'; +import { useLocale } from '../../hooks/useLocale'; import { App } from '../../stores/app'; import { CURRENT_POLICIES_AGREEMENT_INDEX } from '../../stores/app/constants'; +import { LinkI18n } from '../LinkI18n'; import './index.css'; type Extension = @@ -30,6 +32,7 @@ export function Checks() { * Wargaming: 14 (refresh: 7) */ function Content() { + const { locale } = useLocale(); const logins = App.use((state) => state.logins); const mutateApp = App.useMutation(); const appStore = App.useStore(); @@ -118,9 +121,14 @@ function Content() { This website utilizes cookies to perform analytics and personalize your experience. You can learn more through{' '} - our privacy policy. - By using BlitzKit, you also agree to our{' '} - terms of service. + + our privacy policy + + . By using BlitzKit, you also agree to our{' '} + + terms of service + + . diff --git a/packages/website/src/components/Compare/TankControl.tsx b/packages/website/src/components/Compare/TankControl.tsx index 83d6b920f..96aa5840f 100644 --- a/packages/website/src/components/Compare/TankControl.tsx +++ b/packages/website/src/components/Compare/TankControl.tsx @@ -1,9 +1,11 @@ import { ExternalLinkIcon, LoopIcon, TrashIcon } from '@radix-ui/react-icons'; -import { Dialog, Flex, IconButton, Link } from '@radix-ui/themes'; +import { Dialog, Flex, IconButton } from '@radix-ui/themes'; import { useState } from 'react'; import { awaitableProvisionDefinitions } from '../../core/awaitables/provisionDefinitions'; import { tankToCompareMember } from '../../core/blitzkit/tankToCompareMember'; +import { useLocale } from '../../hooks/useLocale'; import { CompareEphemeral } from '../../stores/compareEphemeral'; +import { LinkI18n } from '../LinkI18n'; import { TankSearch } from '../TankSearch'; interface TankControlProps { @@ -14,6 +16,7 @@ interface TankControlProps { const provisionDefinitions = await awaitableProvisionDefinitions; export function TankControl({ index, id }: TankControlProps) { + const { locale } = useLocale(); const [switchTankDialogOpen, setSwitchTankDialogOpen] = useState(false); const mutateCompareEphemeral = CompareEphemeral.useMutation(); @@ -69,11 +72,15 @@ export function TankControl({ index, id }: TankControlProps) { - + - + ); } diff --git a/packages/website/src/components/HomePageHotTanks.tsx b/packages/website/src/components/HomePageHotTanks.tsx index 815f93f9b..774bf2549 100644 --- a/packages/website/src/components/HomePageHotTanks.tsx +++ b/packages/website/src/components/HomePageHotTanks.tsx @@ -3,6 +3,7 @@ import { EyeOpenIcon } from '@radix-ui/react-icons'; import { Box, Flex, Heading, Text } from '@radix-ui/themes'; import { google } from 'googleapis'; import { awaitableTankDefinitions } from '../core/awaitables/tankDefinitions'; +import { LocaleProvider } from '../hooks/useLocale'; import { TankopediaPersistent } from '../stores/tankopediaPersistent'; import { TankCard } from './TankCard'; @@ -63,11 +64,17 @@ const hotTanks = report.data.rows views, })); -export function HomePageHotTanks() { +interface HomePageHotTanksProps { + locale: string | undefined; +} + +export function HomePageHotTanks({ locale }: HomePageHotTanksProps) { return ( - - - + + + + + ); } diff --git a/packages/website/src/components/LinkI18n.tsx b/packages/website/src/components/LinkI18n.tsx index 4ad51e137..da2cc0d90 100644 --- a/packages/website/src/components/LinkI18n.tsx +++ b/packages/website/src/components/LinkI18n.tsx @@ -11,9 +11,6 @@ export function LinkI18n({ locale, href, ...props }: LinkI18nProps) { const prefix = resolvedLocale === undefined ? '' : `/${resolvedLocale}`; return ( - + ); } diff --git a/packages/website/src/components/Navbar.astro b/packages/website/src/components/Navbar.astro index c461016de..cb2b7ddfb 100644 --- a/packages/website/src/components/Navbar.astro +++ b/packages/website/src/components/Navbar.astro @@ -20,11 +20,13 @@ import { import { resolveBranchName } from '../core/blitzkit/branches'; import { homeTool, TOOLS } from '../constants/tools'; import { NavbarAccount } from './NavbarAccount'; +import { LinkI18n } from './LinkI18n'; const toolsFiltered = TOOLS.filter((tool) => !('href' in tool)); const tools = [homeTool, ...toolsFiltered]; const branchName = resolveBranchName(); const isBranchNamed = branchName !== undefined; +const { locale } = Astro.params; --- - {locale} BlitzKit - Everything World of Tanks Blitz + {strings.website.footer.motto} - Unaffiliated with Wargaming or any service + {strings.website.footer.copyright} @@ -63,7 +64,7 @@ const { locale } = Astro.params; sm: 'auto', }} > - About + {strings.website.footer.about.title} - Credits + + {strings.website.footer.about.credits} + - Discord + {strings.website.footer.about.discord} - GitHub + {strings.website.footer.about.github} - Patches + + {strings.website.footer.about.patches} + @@ -105,13 +107,13 @@ const { locale } = Astro.params; sm: 'auto', }} > - Legal + {strings.website.footer.legal.title} - Privacy policy + {strings.website.footer.legal.privacy} - Terms of service + {strings.website.footer.legal.terms} diff --git a/packages/website/src/components/HomeHero.astro b/packages/website/src/components/HomeHero.astro index 06d7c0308..424cfbe87 100644 --- a/packages/website/src/components/HomeHero.astro +++ b/packages/website/src/components/HomeHero.astro @@ -1,9 +1,14 @@ --- import { Code, Flex, Heading, Text } from '@radix-ui/themes'; import { resolveBranchName } from '../core/blitzkit/branches'; +import { DEFAULT_LOCALE } from '@blitzkit/core'; +import { getStrings } from '../core/i18n/getStrings'; +import { literals } from '../core/i18n/literals'; -const branchName = resolveBranchName(); +const { locale } = Astro.params; +const branchName = resolveBranchName(locale); const isBranchNamed = branchName !== undefined; +const strings = getStrings(locale); --- - + diff --git a/packages/website/src/pages/[...locale]/tools/embed/_index.tsx b/packages/website/src/pages/[...locale]/tools/embed/_index.tsx index 0f92f4b41..15a183f76 100644 --- a/packages/website/src/pages/[...locale]/tools/embed/_index.tsx +++ b/packages/website/src/pages/[...locale]/tools/embed/_index.tsx @@ -1,6 +1,5 @@ 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'; @@ -9,52 +8,37 @@ import { extractEmbedConfigDefaults, } from '../../../../constants/embeds'; import { Var } from '../../../../core/radix/var'; -import { useLocale } from '../../../../hooks/useLocale'; +import { + LocaleProvider, + useLocale, + type LocaleAcceptorProps, +} from '../../../../hooks/useLocale'; import { App } from '../../../../stores/app'; import { EmbedState } from '../../../../stores/embedState'; -export function Page() { +export function Page({ locale }: LocaleAcceptorProps) { return ( - - - + + + + + ); } function Content() { - // const wargaming = App.useDeferred((state) => state.logins.wargaming, { - // token: '', - // id: 0, - // expires: 0, - // }); - - const { locale } = useLocale(); + const { locale, strings } = useLocale(); return ( - {/* {!wargaming && ( - - - - - - - You must log in to generate embeds. - - - - Log in with Wargaming - - )} */} - - More embeds coming soon.{' '} + {strings.website.tools.embed.coming_soon}{' '} - Suggest ideas + {strings.website.tools.embed.suggest} . @@ -86,7 +70,13 @@ function Content() { }} > - {capitalize(embed)} + + { + strings.website.tools.embed.types[ + embed as keyof typeof strings.website.tools.embed.types + ].name + } + - + diff --git a/packages/website/src/stores/embedState/index.ts b/packages/website/src/stores/embedState/index.ts index 91ed41320..28412a65d 100644 --- a/packages/website/src/stores/embedState/index.ts +++ b/packages/website/src/stores/embedState/index.ts @@ -94,8 +94,8 @@ export type EmbedConfigItem = ( type: EmbedItemType.Enum; default: string; options: { - label: string; value: string; + locales: Record; }[]; } ) & { From ad555ece9a8a62f993b8016a8a888c981170917e Mon Sep 17 00:00:00 2001 From: tresabhi <43380238+tresabhi@users.noreply.github.com> Date: Wed, 15 Jan 2025 14:00:06 -0600 Subject: [PATCH 044/114] fix: warning --- packages/website/src/layouts/BaseLayout.astro | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/website/src/layouts/BaseLayout.astro b/packages/website/src/layouts/BaseLayout.astro index efe83e9b7..81709be81 100644 --- a/packages/website/src/layouts/BaseLayout.astro +++ b/packages/website/src/layouts/BaseLayout.astro @@ -6,7 +6,7 @@ import Footer from '../components/Footer.astro'; import Navbar from '../components/Navbar.astro'; import Party3 from '../components/Party3.astro'; import './base.css'; -import { DEFAULT_LOCALE, SUPPORTED_LOCALES } from '@blitzkit/i18n'; +import { DEFAULT_LOCALE } from '@blitzkit/i18n'; export interface Props { noFooter?: boolean; @@ -28,7 +28,7 @@ const locale = Astro.params.locale ?? DEFAULT_LOCALE; diff --git a/packages/website/src/layouts/BaseLayout.astro b/packages/website/src/layouts/BaseLayout.astro index 05f7adab9..aab9b246d 100644 --- a/packages/website/src/layouts/BaseLayout.astro +++ b/packages/website/src/layouts/BaseLayout.astro @@ -7,6 +7,7 @@ import Navbar from '../components/Navbar.astro'; import Party3 from '../components/Party3.astro'; import './base.css'; import { DEFAULT_LOCALE } from '@blitzkit/i18n'; +import Funny from '../components/Funny.astro'; export interface Props { noFooter?: boolean; @@ -23,6 +24,10 @@ const locale = Astro.params.locale ?? DEFAULT_LOCALE; + @@ -55,6 +60,8 @@ const locale = Astro.params.locale ?? DEFAULT_LOCALE; + + diff --git a/packages/website/src/layouts/base.css b/packages/website/src/layouts/base.css index a3de75274..664cb15bb 100644 --- a/packages/website/src/layouts/base.css +++ b/packages/website/src/layouts/base.css @@ -2,4 +2,48 @@ body { margin: 0; + cursor: + url(https://i.imgur.com/MeQQWCX.png) 16 16, + auto; +} + +* { + font-family: 'Schoolbell', cursive !important; +} + +.radix-themes { + --gray-1: var(--crimson-5); + --gray-2: var(--crimson-5); + --gray-3: var(--crimson-5); + --gray-4: var(--crimson-6); + --gray-5: var(--crimson-6); + --gray-6: var(--crimson-7); + --gray-7: var(--crimson-7); + --gray-8: var(--crimson-8); + --gray-9: var(--crimson-9); + --gray-10: var(--crimson-10); + --gray-11: var(--crimson-11); + --gray-12: var(--crimson-12); +} + +.star { + position: fixed; + color: yellow; + font-size: 20px; + pointer-events: none; + animation: + fade-out 0.6s ease-out forwards, + move-up 0.6s ease-out forwards; +} + +@keyframes fade-out { + to { + opacity: 0; + } +} + +@keyframes move-up { + to { + transform: translateY(20px); + } } diff --git a/packages/website/src/pages/[...locale]/index.astro b/packages/website/src/pages/[...locale]/index.astro index 025a9ef1c..f95ff9578 100644 --- a/packages/website/src/pages/[...locale]/index.astro +++ b/packages/website/src/pages/[...locale]/index.astro @@ -1,7 +1,8 @@ --- import { assertSecret } from '@blitzkit/core'; import { DEFAULT_LOCALE, SUPPORTED_LOCALES } from '@blitzkit/i18n'; -import { Box, Flex, Heading, Link } from '@radix-ui/themes'; +import { literals } from '@blitzkit/i18n/src/literals'; +import { Box, Flex, Heading, Link, Quote } from '@radix-ui/themes'; import type { GetStaticPaths } from 'astro'; import { AesonPlug } from '../../components/AesonPlug'; import { HomeLocaleSwitcher } from '../../components/Home/HomeLocaleSwitcher'; @@ -21,7 +22,6 @@ import { tierListTool, } from '../../constants/tools'; import { getStrings } from '../../core/i18n/getStrings'; -import { literals } from '@blitzkit/i18n/src/literals'; import BaseLayout from '../../layouts/BaseLayout.astro'; const PUBLIC_ASSET_BRANCH = assertSecret(import.meta.env.PUBLIC_ASSET_BRANCH); @@ -45,6 +45,20 @@ export const getStaticPaths = (() => { + + + + It has come to our attention that tanks are very harsh objects. To even + it out, we made the website a pretty pretty princess {'<'}3 + + + + { From 40a81f6b1b29813739ef0df37283bb6911158149 Mon Sep 17 00:00:00 2001 From: tresabhi <43380238+tresabhi@users.noreply.github.com> Date: Mon, 31 Mar 2025 17:39:01 -0500 Subject: [PATCH 106/114] fix: class list --- packages/website/src/components/Funny.astro | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/website/src/components/Funny.astro b/packages/website/src/components/Funny.astro index d9faab95e..5ea7628d6 100644 --- a/packages/website/src/components/Funny.astro +++ b/packages/website/src/components/Funny.astro @@ -5,8 +5,7 @@ if ( node.nodeType !== 3 || !node.textContent || - !(node instanceof HTMLElement) || - node.classList.contains('no-funny') + (node as HTMLElement).classList?.contains('no-funny') ) return; From 28f365f7621977b4c7f614b38e690f3373dca615 Mon Sep 17 00:00:00 2001 From: tresabhi <43380238+tresabhi@users.noreply.github.com> Date: Mon, 31 Mar 2025 17:39:42 -0500 Subject: [PATCH 107/114] fix: no class list --- packages/website/src/components/Funny.astro | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/packages/website/src/components/Funny.astro b/packages/website/src/components/Funny.astro index 5ea7628d6..6ad8ac537 100644 --- a/packages/website/src/components/Funny.astro +++ b/packages/website/src/components/Funny.astro @@ -2,12 +2,7 @@ function funnify() { document.body.querySelectorAll('*').forEach((element) => { element.childNodes.forEach((node) => { - if ( - node.nodeType !== 3 || - !node.textContent || - (node as HTMLElement).classList?.contains('no-funny') - ) - return; + if (node.nodeType !== 3 || !node.textContent) return; node.textContent = node.textContent .replaceAll(/[tdkqgp]/g, 'w') From 0368e9cedadffc9a969827769a342bbe378c60a8 Mon Sep 17 00:00:00 2001 From: tresabhi <43380238+tresabhi@users.noreply.github.com> Date: Mon, 31 Mar 2025 17:44:08 -0500 Subject: [PATCH 108/114] feat: pink bot --- packages/bot/src/stitches.config.ts | 17 ++++++++++++++++- packages/core/src/blitzkit/isFunny.ts | 2 ++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/packages/bot/src/stitches.config.ts b/packages/bot/src/stitches.config.ts index 07d1f0f0e..27617dbc3 100644 --- a/packages/bot/src/stitches.config.ts +++ b/packages/bot/src/stitches.config.ts @@ -18,12 +18,27 @@ import { } from '@radix-ui/colors'; import { createBorderStyles, createColors, createSpaces } from 'bepaint'; +const funnyColors = { + pink1: crimsonDark.crimson5, + pink2: crimsonDark.crimson5, + pink3: crimsonDark.crimson5, + pink4: crimsonDark.crimson6, + pink5: crimsonDark.crimson6, + pink6: crimsonDark.crimson7, + pink7: crimsonDark.crimson7, + pink8: crimsonDark.crimson8, + pink9: crimsonDark.crimson9, + pink10: crimsonDark.crimson10, + pink11: crimsonDark.crimson11, + pink12: crimsonDark.crimson12, +}; + // this isn't really a stitches config, but the object is compliant export const theme = { spaces: createSpaces(), colors: { - ...createColors(slateDark), + ...createColors(funnyColors), ...createColors(slateDarkA, 'alpha'), ...createColors(slate, 'light'), diff --git a/packages/core/src/blitzkit/isFunny.ts b/packages/core/src/blitzkit/isFunny.ts index 3376a3fb9..4c73235a5 100644 --- a/packages/core/src/blitzkit/isFunny.ts +++ b/packages/core/src/blitzkit/isFunny.ts @@ -5,6 +5,8 @@ const FUNNY_DATES: [number, number][] = [ ]; export function isFunny() { + return true; + const now = new Date(); return ( From 034417d19f6d264f733ee1911877094406e8f6db Mon Sep 17 00:00:00 2001 From: tresabhi <43380238+tresabhi@users.noreply.github.com> Date: Mon, 31 Mar 2025 17:49:23 -0500 Subject: [PATCH 109/114] fix: remove cue4 --- submodules/CUE4Parse | 1 - 1 file changed, 1 deletion(-) delete mode 160000 submodules/CUE4Parse diff --git a/submodules/CUE4Parse b/submodules/CUE4Parse deleted file mode 160000 index 624e07c8c..000000000 --- a/submodules/CUE4Parse +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 624e07c8c396724b3ae72d4e1e2854fdc5269e24 From 7472e39fafc2ba548ec70e6056690784cd2ed460 Mon Sep 17 00:00:00 2001 From: tresabhi <43380238+tresabhi@users.noreply.github.com> Date: Tue, 1 Apr 2025 19:34:03 -0500 Subject: [PATCH 110/114] fix: gifs --- .../handlers/chatInputCommand.ts | 20 ++++++++++--------- submodules/CUE4Parse | 1 + 2 files changed, 12 insertions(+), 9 deletions(-) create mode 160000 submodules/CUE4Parse diff --git a/packages/bot/src/events/interactionCreate/handlers/chatInputCommand.ts b/packages/bot/src/events/interactionCreate/handlers/chatInputCommand.ts index 2c883534a..7b73dc7c2 100644 --- a/packages/bot/src/events/interactionCreate/handlers/chatInputCommand.ts +++ b/packages/bot/src/events/interactionCreate/handlers/chatInputCommand.ts @@ -19,21 +19,23 @@ import { Writeable } from '../../../types/writable'; const funnyResponses = [ "your dwecisions were calculawed buw man, you're bad at math 🥀🥀", - 'senpai, have you consiwered not lacking 😳', - 'let shoow a guess cutie... it was your team? 🤬🤬🤬', + 'have you consiwered not lacking 😳', + 'lemme guess... it was your team? 🤬🤬🤬', 'confiwence is key. unforwunawely you lost whe lock 🔒💔', "when they say live green, they dwn't mean your 🌳 winrate 🌳", - 'daddy viewing your swats, hewe? you really are brawe 😎', - 'no surrie! your numwers are swill 💔', + 'viewing your swats, hewe? you really are brawe 😎', + 'no surrie! your numwers are still no bueno 💔💔💔', "i would giwe you awvice, you won'w understand 🥀🥀", "i diwn'w beliewe in negawive numwers unwil i saw your stats 😳😳😳", - 'yeah daddy, use me more 🤤', - 'uwu, hewe are your swaws... uwu 😋😋😋', - 'hehehehe it tickles 😻', - 'yeeeeeeeeeeeeahhhhhh that hits the spot 😳', - 'ooooh yesss my circuits are starting to hurt yeeeeeeee 💥', 'wawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw', 'https://tenor.com/tre3NETle2e.gif', + 'https://tenor.com/bVWoA.gif', + 'https://tenor.com/bARFp.gif', + 'https://tenor.com/jDFYXtzM27i.gif', + 'https://tenor.com/dZ6MB62R32r.gif', + 'https://tenor.com/bqOZf.gif', + 'https://tenor.com/tD2TjXsmGVx.gif', + 'https://tenor.com/bya9M.gif', ]; export async function handleChatInputCommand( diff --git a/submodules/CUE4Parse b/submodules/CUE4Parse new file mode 160000 index 000000000..624e07c8c --- /dev/null +++ b/submodules/CUE4Parse @@ -0,0 +1 @@ +Subproject commit 624e07c8c396724b3ae72d4e1e2854fdc5269e24 From 57b3218c5a5f170dbb9937d936d53c95b5eb40ea Mon Sep 17 00:00:00 2001 From: tresabhi <43380238+tresabhi@users.noreply.github.com> Date: Tue, 1 Apr 2025 19:38:00 -0500 Subject: [PATCH 111/114] undo cue4 --- submodules/CUE4Parse | 1 + 1 file changed, 1 insertion(+) create mode 160000 submodules/CUE4Parse diff --git a/submodules/CUE4Parse b/submodules/CUE4Parse new file mode 160000 index 000000000..624e07c8c --- /dev/null +++ b/submodules/CUE4Parse @@ -0,0 +1 @@ +Subproject commit 624e07c8c396724b3ae72d4e1e2854fdc5269e24 From 71e1ab1362d805238db3a1488223d95d00108912 Mon Sep 17 00:00:00 2001 From: tresabhi <43380238+tresabhi@users.noreply.github.com> Date: Tue, 1 Apr 2025 19:38:58 -0500 Subject: [PATCH 112/114] aaaaaaaaaaaaaaaa --- submodules/CUE4Parse | 1 - 1 file changed, 1 deletion(-) delete mode 160000 submodules/CUE4Parse diff --git a/submodules/CUE4Parse b/submodules/CUE4Parse deleted file mode 160000 index 624e07c8c..000000000 --- a/submodules/CUE4Parse +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 624e07c8c396724b3ae72d4e1e2854fdc5269e24 From 8ef355c574239a0035b3f6d88812871768433a99 Mon Sep 17 00:00:00 2001 From: tresabhi <43380238+tresabhi@users.noreply.github.com> Date: Wed, 2 Apr 2025 16:11:09 -0500 Subject: [PATCH 113/114] feat: we don't talk about it --- docs/changelogs/1.27.4.md | 3 + docs/changelogs/1.27.5.md | 11 +++ package.json | 2 +- .../bot/src/components/CommandWrapper.tsx | 1 + .../normalizeInteractionReturnable.tsx | 75 +------------------ .../handlers/chatInputCommand.ts | 31 -------- packages/bot/src/main.ts | 4 +- packages/core/src/blitzkit/index.ts | 1 - packages/core/src/blitzkit/isFunny.ts | 17 ----- packages/website/src/components/Funny.astro | 37 --------- packages/website/src/layouts/BaseLayout.astro | 8 -- packages/website/src/layouts/base.css | 44 ----------- .../website/src/pages/[...locale]/index.astro | 16 +--- 13 files changed, 20 insertions(+), 230 deletions(-) create mode 100644 docs/changelogs/1.27.4.md create mode 100644 docs/changelogs/1.27.5.md delete mode 100644 packages/core/src/blitzkit/isFunny.ts delete mode 100644 packages/website/src/components/Funny.astro diff --git a/docs/changelogs/1.27.4.md b/docs/changelogs/1.27.4.md new file mode 100644 index 000000000..eb1851f3f --- /dev/null +++ b/docs/changelogs/1.27.4.md @@ -0,0 +1,3 @@ +# FreakKit 1.27.4 + +It has come to our attention that tanks are very harsh objects. To even it out, we made the website a pretty pretty princess <3 diff --git a/docs/changelogs/1.27.5.md b/docs/changelogs/1.27.5.md new file mode 100644 index 000000000..ec1b77275 --- /dev/null +++ b/docs/changelogs/1.27.5.md @@ -0,0 +1,11 @@ +# BlitzKit 1.27.5 + +This update only affects the bot. + +## Changes + +- Removed `/auction` + +## Fixes + +- Fixed a bug that caused `/rating` to disappear diff --git a/package.json b/package.json index a194ac6e0..c07be3556 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "blitzkit", "private": true, - "version": "1.27.4", + "version": "1.27.5", "description": "🎉 Tools for everything World of Tanks Blitz", "type": "module", "types": "./types.d.ts", diff --git a/packages/bot/src/components/CommandWrapper.tsx b/packages/bot/src/components/CommandWrapper.tsx index c3fce00fa..8fe8f612c 100644 --- a/packages/bot/src/components/CommandWrapper.tsx +++ b/packages/bot/src/components/CommandWrapper.tsx @@ -16,6 +16,7 @@ export function CommandWrapper({ children, fat }: CommandWrapperProps) { gap: 16, width: '100%', color: theme.colors.textHighContrast, + backgroundColor: theme.colors.appBackground1, position: 'relative', }} > diff --git a/packages/bot/src/core/discord/normalizeInteractionReturnable.tsx b/packages/bot/src/core/discord/normalizeInteractionReturnable.tsx index 76b2c9e10..3996f98bf 100644 --- a/packages/bot/src/core/discord/normalizeInteractionReturnable.tsx +++ b/packages/bot/src/core/discord/normalizeInteractionReturnable.tsx @@ -1,4 +1,3 @@ -import { imgur, isFunny } from '@blitzkit/core'; import { ActionRowBuilder, AttachmentBuilder, @@ -9,7 +8,6 @@ import { MessageEditOptions, } from 'discord.js'; import { InteractionReturnable } from '../../events/interactionCreate'; -import { theme } from '../../stitches.config'; import { Writeable } from '../../types/writable'; import { jsxToPngThreaded } from '../blitzkit/jsxToPngThreaded'; import { RenderConfiguration } from '../blitzkit/renderConfiguration'; @@ -48,78 +46,7 @@ export async function normalizeInteractionReturnable( } else if (item === null) { return; } else { - let jsx: JSX.Element; - - if (isFunny()) { - const angle = (Math.random() * 2 - 1) * 10; - jsx = ( -
- {item} - - - - - - -
- ); - } else { - jsx = ( -
- {item} -
- ); - } - - const image = await jsxToPngThreaded(jsx, renderConfiguration); + const image = await jsxToPngThreaded(item, renderConfiguration); images.push([index, image]); } }), diff --git a/packages/bot/src/events/interactionCreate/handlers/chatInputCommand.ts b/packages/bot/src/events/interactionCreate/handlers/chatInputCommand.ts index 7b73dc7c2..f48f91950 100644 --- a/packages/bot/src/events/interactionCreate/handlers/chatInputCommand.ts +++ b/packages/bot/src/events/interactionCreate/handlers/chatInputCommand.ts @@ -1,4 +1,3 @@ -import { isFunny } from '@blitzkit/core'; import { ActionRowBuilder, AttachmentBuilder, @@ -17,41 +16,11 @@ import { psa } from '../../../core/discord/psa'; import { translator } from '../../../core/localization/translator'; import { Writeable } from '../../../types/writable'; -const funnyResponses = [ - "your dwecisions were calculawed buw man, you're bad at math 🥀🥀", - 'have you consiwered not lacking 😳', - 'lemme guess... it was your team? 🤬🤬🤬', - 'confiwence is key. unforwunawely you lost whe lock 🔒💔', - "when they say live green, they dwn't mean your 🌳 winrate 🌳", - 'viewing your swats, hewe? you really are brawe 😎', - 'no surrie! your numwers are still no bueno 💔💔💔', - "i would giwe you awvice, you won'w understand 🥀🥀", - "i diwn'w beliewe in negawive numwers unwil i saw your stats 😳😳😳", - 'wawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw', - 'https://tenor.com/tre3NETle2e.gif', - 'https://tenor.com/bVWoA.gif', - 'https://tenor.com/bARFp.gif', - 'https://tenor.com/jDFYXtzM27i.gif', - 'https://tenor.com/dZ6MB62R32r.gif', - 'https://tenor.com/bqOZf.gif', - 'https://tenor.com/tD2TjXsmGVx.gif', - 'https://tenor.com/bya9M.gif', -]; - export async function handleChatInputCommand( interaction: ChatInputCommandInteraction, ) { await interaction.deferReply(); - if (isFunny()) { - const response = - funnyResponses[Math.floor(Math.random() * funnyResponses.length)]; - const waitTime = response.length * 60; - - await interaction.editReply(response); - await new Promise((resolve) => setTimeout(resolve, waitTime)); - } - const awaitedCommands = await commands; const registry = awaitedCommands[interaction.commandName]; diff --git a/packages/bot/src/main.ts b/packages/bot/src/main.ts index 2a030105e..c494ba6ad 100644 --- a/packages/bot/src/main.ts +++ b/packages/bot/src/main.ts @@ -1,4 +1,4 @@ -import { assertSecret, isFunny } from '@blitzkit/core'; +import { assertSecret } from '@blitzkit/core'; import { ActivityType, ShardingManager } from 'discord.js'; import { discoveredIdsDefinitions, @@ -66,7 +66,7 @@ const interval = setInterval(async () => { for (const guild of client.guilds.cache.values()) { try { const botMember = await guild.members.fetch(client.user.id); - await botMember.setNickname(isFunny ? 'FreakKit' : 'BlitzKit'); + await botMember.setNickname('BlitzKit'); } catch {} } }, diff --git a/packages/core/src/blitzkit/index.ts b/packages/core/src/blitzkit/index.ts index e51b3b8d4..983def4d7 100644 --- a/packages/core/src/blitzkit/index.ts +++ b/packages/core/src/blitzkit/index.ts @@ -44,7 +44,6 @@ export * from './unwrapBlitzkitResponse'; export * from './votes'; // export * from './withCORSProxy'; export * from './createDefaultProvisions'; -export * from './isFunny'; export * from './metaSortTank'; export * from './romanize'; export * from './youtubers'; diff --git a/packages/core/src/blitzkit/isFunny.ts b/packages/core/src/blitzkit/isFunny.ts deleted file mode 100644 index 4c73235a5..000000000 --- a/packages/core/src/blitzkit/isFunny.ts +++ /dev/null @@ -1,17 +0,0 @@ -const FUNNY_DATES: [number, number][] = [ - [4, 1], - [4, 2], - [4, 3], -]; - -export function isFunny() { - return true; - - const now = new Date(); - - return ( - FUNNY_DATES.some( - ([month, day]) => now.getMonth() === month - 1 && now.getDate() === day, - ) || import.meta.env.DEBUG_FUNNY === 'true' - ); -} diff --git a/packages/website/src/components/Funny.astro b/packages/website/src/components/Funny.astro deleted file mode 100644 index 6ad8ac537..000000000 --- a/packages/website/src/components/Funny.astro +++ /dev/null @@ -1,37 +0,0 @@ - diff --git a/packages/website/src/layouts/BaseLayout.astro b/packages/website/src/layouts/BaseLayout.astro index aab9b246d..31ab8bcd3 100644 --- a/packages/website/src/layouts/BaseLayout.astro +++ b/packages/website/src/layouts/BaseLayout.astro @@ -7,7 +7,6 @@ import Navbar from '../components/Navbar.astro'; import Party3 from '../components/Party3.astro'; import './base.css'; import { DEFAULT_LOCALE } from '@blitzkit/i18n'; -import Funny from '../components/Funny.astro'; export interface Props { noFooter?: boolean; @@ -24,17 +23,12 @@ const locale = Astro.params.locale ?? DEFAULT_LOCALE; -