diff --git a/_package.json b/_package.json index 3bd098140..d8adc0af6 100644 --- a/_package.json +++ b/_package.json @@ -76,7 +76,6 @@ "@types/three": "^0.160.0", "astro-compressor": "^1.0.0", "@astrojs/partytown": "^2.1.4", - "@astrolib/seo": "^1.0.0-beta.8", "@fontsource/inter": "^5.2.5", "@nanostores/persistent": "^0.10.2", "@nanostores/react": "^0.7.3", diff --git a/packages/website-ue/package.json b/packages/website-ue/package.json index d4fbed284..24d0eb79d 100644 --- a/packages/website-ue/package.json +++ b/packages/website-ue/package.json @@ -11,6 +11,7 @@ "@radix-ui/colors": "^3.0.0", "@radix-ui/react-icons": "^1.3.0", "@radix-ui/themes": "^3.1.4", + "@astrolib/seo": "^1.0.0-beta.8", "@blitzkit/core": "workspace:*", "@blitzkit/closed": "workspace:*", "@astrojs/react": "^4.3.0", diff --git a/packages/website-ue/public/assets/morphing-diamonds.svg b/packages/website-ue/public/assets/morphing-diamonds.svg new file mode 100644 index 000000000..de53531ce --- /dev/null +++ b/packages/website-ue/public/assets/morphing-diamonds.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/packages/website-ue/public/assets/tool-backgrounds/charts.webp b/packages/website-ue/public/assets/tool-backgrounds/charts.webp new file mode 100644 index 000000000..1d9e0538a Binary files /dev/null and b/packages/website-ue/public/assets/tool-backgrounds/charts.webp differ diff --git a/packages/website-ue/public/assets/tool-backgrounds/compare.webp b/packages/website-ue/public/assets/tool-backgrounds/compare.webp new file mode 100644 index 000000000..b24df602f Binary files /dev/null and b/packages/website-ue/public/assets/tool-backgrounds/compare.webp differ diff --git a/packages/website-ue/public/assets/tool-backgrounds/discord.webp b/packages/website-ue/public/assets/tool-backgrounds/discord.webp new file mode 100644 index 000000000..739ed8bc3 Binary files /dev/null and b/packages/website-ue/public/assets/tool-backgrounds/discord.webp differ diff --git a/packages/website-ue/public/assets/tool-backgrounds/embed.webp b/packages/website-ue/public/assets/tool-backgrounds/embed.webp new file mode 100644 index 000000000..5675f84a2 Binary files /dev/null and b/packages/website-ue/public/assets/tool-backgrounds/embed.webp differ diff --git a/packages/website-ue/public/assets/tool-backgrounds/gallery.webp b/packages/website-ue/public/assets/tool-backgrounds/gallery.webp new file mode 100644 index 000000000..c8cdc346e Binary files /dev/null and b/packages/website-ue/public/assets/tool-backgrounds/gallery.webp differ diff --git a/packages/website-ue/public/assets/tool-backgrounds/guess.webp b/packages/website-ue/public/assets/tool-backgrounds/guess.webp new file mode 100644 index 000000000..3453b25f9 Binary files /dev/null and b/packages/website-ue/public/assets/tool-backgrounds/guess.webp differ diff --git a/packages/website-ue/public/assets/tool-backgrounds/more.webp b/packages/website-ue/public/assets/tool-backgrounds/more.webp new file mode 100644 index 000000000..2555eb689 Binary files /dev/null and b/packages/website-ue/public/assets/tool-backgrounds/more.webp differ diff --git a/packages/website-ue/public/assets/tool-backgrounds/performance.webp b/packages/website-ue/public/assets/tool-backgrounds/performance.webp new file mode 100644 index 000000000..917d281d4 Binary files /dev/null and b/packages/website-ue/public/assets/tool-backgrounds/performance.webp differ diff --git a/packages/website-ue/public/assets/tool-backgrounds/players.webp b/packages/website-ue/public/assets/tool-backgrounds/players.webp new file mode 100644 index 000000000..a71fc9721 Binary files /dev/null and b/packages/website-ue/public/assets/tool-backgrounds/players.webp differ diff --git a/packages/website-ue/public/assets/tool-backgrounds/rating.webp b/packages/website-ue/public/assets/tool-backgrounds/rating.webp new file mode 100644 index 000000000..8d3fa44d5 Binary files /dev/null and b/packages/website-ue/public/assets/tool-backgrounds/rating.webp differ diff --git a/packages/website-ue/public/assets/tool-backgrounds/session.webp b/packages/website-ue/public/assets/tool-backgrounds/session.webp new file mode 100644 index 000000000..64e7f5caf Binary files /dev/null and b/packages/website-ue/public/assets/tool-backgrounds/session.webp differ diff --git a/packages/website-ue/public/assets/tool-backgrounds/tanks.webp b/packages/website-ue/public/assets/tool-backgrounds/tanks.webp new file mode 100644 index 000000000..f5ffb5992 Binary files /dev/null and b/packages/website-ue/public/assets/tool-backgrounds/tanks.webp differ diff --git a/packages/website-ue/public/assets/tool-backgrounds/tier-list.webp b/packages/website-ue/public/assets/tool-backgrounds/tier-list.webp new file mode 100644 index 000000000..4cc334352 Binary files /dev/null and b/packages/website-ue/public/assets/tool-backgrounds/tier-list.webp differ diff --git a/packages/website-ue/src/components/HomeHero.astro b/packages/website-ue/src/components/HomeHero.astro new file mode 100644 index 000000000..1a6ec5c50 --- /dev/null +++ b/packages/website-ue/src/components/HomeHero.astro @@ -0,0 +1,156 @@ +--- +import { Code, Flex, Heading, Text } from '@radix-ui/themes'; +import { resolveBranchName } from '../core/blitzkit/branches'; +import { getStrings } from '../core/i18n/getStrings'; +import { literals } from '@blitzkit/i18n/src/literals'; + +interface Props { + locale: string; +} + +const { locale } = Astro.props; +const strings = await getStrings(locale); +const branchName = resolveBranchName(); +const isBranchNamed = branchName !== undefined; +--- + + + + + + + + + + + BlitzKit + { + isBranchNamed && ( + + {branchName} + + ) + } + + + + {literals(strings.website.home.hero.credit, ['TrèsAbhi'])} + + + diff --git a/packages/website-ue/src/components/ToolCard.astro b/packages/website-ue/src/components/ToolCard.astro new file mode 100644 index 000000000..a08983269 --- /dev/null +++ b/packages/website-ue/src/components/ToolCard.astro @@ -0,0 +1,136 @@ +--- +import { assertSecret } from '@blitzkit/core'; +import { CaretRightIcon } from '@radix-ui/react-icons'; +import { Box, Button, Code, Flex, Heading, Text } from '@radix-ui/themes'; +import type { Tool } from '../constants/tools'; +import { getStrings } from '../core/i18n/getStrings'; +import { LinkI18n } from './LinkI18n'; + +interface Props { + tool: Tool; + locale: string; +} + +const { tool, locale } = Astro.props; +const strings = await getStrings(locale); +const disabled = false; +const toolStrings = + strings.website.tools[ + (tool.strings ?? tool.id) as keyof typeof strings.website.tools + ]; +--- + + + + + + + + + + + {toolStrings.name} + + + { + disabled ? ( + <> + Unavailable on{' '} + {assertSecret(import.meta.env.PUBLIC_ASSET_BRANCH)} + + ) : ( + toolStrings.description + ) + } + + + + { + !disabled && ( + + ) + } + + + diff --git a/packages/website-ue/src/constants/tools.ts b/packages/website-ue/src/constants/tools.ts index d6d97c79e..cdd0c6f47 100644 --- a/packages/website-ue/src/constants/tools.ts +++ b/packages/website-ue/src/constants/tools.ts @@ -1,6 +1,6 @@ import type { ButtonProps } from '@radix-ui/themes'; -interface Tool { +export interface Tool { id: string; enabled: boolean; strings?: string; @@ -8,7 +8,7 @@ interface Tool { button: { color: ButtonProps['color']; contrast?: boolean }; } -export const tanks: Tool = { +export const tanksTool: Tool = { id: 'tanks', enabled: true, strings: 'tankopedia', @@ -16,70 +16,70 @@ export const tanks: Tool = { button: { color: 'purple' }, }; -export const compare: Tool = { +export const compareTool: Tool = { id: 'compare', enabled: true, button: { color: 'crimson' }, }; -export const performance: Tool = { +export const performanceTool: Tool = { id: 'performance', enabled: true, button: { color: 'jade' }, }; -export const guess: Tool = { +export const guessTool: Tool = { id: 'guess', enabled: false, button: { color: 'bronze' }, }; -export const charts: Tool = { +export const chartsTool: Tool = { id: 'charts', enabled: false, button: { color: 'bronze' }, }; -export const gallery: Tool = { +export const galleryTool: Tool = { id: 'gallery', enabled: true, button: { color: 'gold' }, }; -export const session: Tool = { +export const sessionTool: Tool = { id: 'session', enabled: true, button: { color: 'blue' }, }; -export const tierList: Tool = { +export const tierListTool: Tool = { id: 'tier-list', enabled: true, strings: 'tier_list', button: { color: 'orange' }, }; -export const embed: Tool = { +export const embedTool: Tool = { id: 'embed', enabled: true, button: { color: 'cyan' }, }; -export const rating: Tool = { +export const ratingTool: Tool = { id: 'rating', enabled: false, button: { color: 'orange' }, }; export const tools: Tool[] = [ - tanks, - compare, - performance, - guess, - charts, - gallery, - session, - tierList, - embed, - rating, + tanksTool, + compareTool, + performanceTool, + guessTool, + chartsTool, + galleryTool, + sessionTool, + tierListTool, + embedTool, + ratingTool, ]; diff --git a/packages/website-ue/src/core/blitzkit/branches.ts b/packages/website-ue/src/core/blitzkit/branches.ts index 841d7ea5e..d78a374c1 100644 --- a/packages/website-ue/src/core/blitzkit/branches.ts +++ b/packages/website-ue/src/core/blitzkit/branches.ts @@ -1,6 +1,6 @@ import { assertSecret } from 'packages/core/src'; -export function resolveBranchName(locale: string) { +export function resolveBranchName() { if (assertSecret(import.meta.env.PUBLIC_ASSET_BRANCH) === 'main') { return undefined; } diff --git a/packages/website-ue/src/pages/[...locale]/index.astro b/packages/website-ue/src/pages/[...locale]/index.astro index 2c38fd6f7..66a053285 100644 --- a/packages/website-ue/src/pages/[...locale]/index.astro +++ b/packages/website-ue/src/pages/[...locale]/index.astro @@ -1,6 +1,18 @@ --- +import { AstroSeo } from '@astrolib/seo'; import locales from '@blitzkit/i18n/locales.json'; +import { ExternalLinkIcon } from '@radix-ui/react-icons'; +import { Flex, Link } from '@radix-ui/themes'; import type { GetStaticPaths } from 'astro'; +import { literals } from 'packages/i18n/src'; +import HomeHero from '../../components/HomeHero.astro'; +import ToolCard from '../../components/ToolCard.astro'; +import { type Tool, tools } from '../../constants/tools'; +import { getStrings } from '../../core/i18n/getStrings'; +import { Var } from '../../core/radix/var'; +import BaseLayout from '../../layouts/BaseLayout.astro'; + +const MAX_TOOLS_PER_ROW = 2; export const getStaticPaths = (() => { return locales.supported.map(({ locale, blitz }) => ({ @@ -10,6 +22,92 @@ export const getStaticPaths = (() => { }) satisfies GetStaticPaths; const { locale } = Astro.props; +const strings = await getStrings(locale); +const rows: Tool[][] = []; + +toolLoop: for (const tool of tools.filter((tool) => tool.enabled)) { + if (tool.significant) { + rows.push([tool]); + } else { + for (const row of rows) { + if (!row[0]?.significant && row.length < MAX_TOOLS_PER_ROW) { + row.push(tool); + continue toolLoop; + } + } + + rows.push([tool]); + } +} --- -Hello in {locale}! + + + + + + + { + locale !== locales.default && ( + + + + {literals(strings.website.home.help_translate, [ + 'BlitzKit', + strings.common.locales[ + locale as keyof typeof strings.common.locales + ], + ])} + + + + + + ) + } + + + + { + rows.map((row) => ( + + {row.map((tool) => ( + + ))} + + )) + } + + + +