From 3d940f4b47b838c28f4924b2a78265614b0249e8 Mon Sep 17 00:00:00 2001 From: tresabhi <43380238+tresabhi@users.noreply.github.com> Date: Wed, 2 Apr 2025 17:48:51 -0500 Subject: [PATCH] feat: discord plug --- packages/i18n/strings/en.json | 6 + .../src/components/BlitzKitTheme/index.tsx | 2 +- .../website/src/components/Discord/index.css | 21 ++ .../website/src/components/Discord/index.tsx | 199 ++++++++++++++++++ .../components/Home/HomeLocaleSwitcher.tsx | 9 +- .../src/components/HomePageHotTanks.tsx | 2 +- .../website/src/pages/[...locale]/index.astro | 15 +- 7 files changed, 250 insertions(+), 4 deletions(-) create mode 100644 packages/website/src/components/Discord/index.css create mode 100644 packages/website/src/components/Discord/index.tsx diff --git a/packages/i18n/strings/en.json b/packages/i18n/strings/en.json index c8484b19c..1eae21f53 100644 --- a/packages/i18n/strings/en.json +++ b/packages/i18n/strings/en.json @@ -824,6 +824,12 @@ }, "home": { + "discord": { + "join_short": "Join cool people!", + "join_long": "Join super duper cool people!", + "action": "Discord" + }, + "hero": { "credit": "By %s1 ❤️" }, diff --git a/packages/website/src/components/BlitzKitTheme/index.tsx b/packages/website/src/components/BlitzKitTheme/index.tsx index c42907090..b695358b3 100644 --- a/packages/website/src/components/BlitzKitTheme/index.tsx +++ b/packages/website/src/components/BlitzKitTheme/index.tsx @@ -13,7 +13,7 @@ export function BlitzKitTheme({ }: BlitzKitThemeProps) { return ( response.json() as Promise); +const filteredMembers = widget.members + .filter((member) => { + const isPrivateUsername = + member.username.length === 4 && member.username.endsWith('...'); + return !isPrivateUsername; + }) + .sort(() => Math.random() - 0.5); + +const columnSize = Math.floor(filteredMembers.length / COLUMN_COUNT); +const columns = times(COLUMN_COUNT, (index) => { + const start = index * columnSize; + const end = start + columnSize; + return filteredMembers.slice(start, end); +}); + +function Member({ id, avatar_url, username, status }: Member) { + let statusColor: string; + + switch (status) { + case Status.DND: + statusColor = Var('red-9'); + break; + + case Status.Idle: + statusColor = Var('amber-9'); + break; + + case Status.Online: + statusColor = Var('jade-9'); + break; + } + + return ( + + + + {`${username} + + + + + {username} + + + ); +} + +function Scroller({ index }: { index: number }) { + return ( + + {columns.map((column) => ( + + {column.map((member) => ( + + ))} + + ))} + + ); +} + +export function DiscordPlug({ locale }: LocaleAcceptorProps) { + const strings = getStrings(locale); + + return ( + + + + + + + + + + + + + + {strings.website.home.discord.join_short} + + + + + {strings.website.home.discord.join_long} + + + + + + + + + ); +} diff --git a/packages/website/src/components/Home/HomeLocaleSwitcher.tsx b/packages/website/src/components/Home/HomeLocaleSwitcher.tsx index 908e8a941..39a3603ae 100644 --- a/packages/website/src/components/Home/HomeLocaleSwitcher.tsx +++ b/packages/website/src/components/Home/HomeLocaleSwitcher.tsx @@ -10,7 +10,14 @@ export function HomeLocaleSwitcher({ }: LocaleAcceptorProps) { return ( - + diff --git a/packages/website/src/components/HomePageHotTanks.tsx b/packages/website/src/components/HomePageHotTanks.tsx index 2a0aebac6..723ded9d6 100644 --- a/packages/website/src/components/HomePageHotTanks.tsx +++ b/packages/website/src/components/HomePageHotTanks.tsx @@ -83,7 +83,7 @@ function Content() { const { locale, strings } = useLocale(); return ( - + {strings.website.home.hot_tanks.title} diff --git a/packages/website/src/pages/[...locale]/index.astro b/packages/website/src/pages/[...locale]/index.astro index 026aa69e9..39c804337 100644 --- a/packages/website/src/pages/[...locale]/index.astro +++ b/packages/website/src/pages/[...locale]/index.astro @@ -5,6 +5,7 @@ import { literals } from '@blitzkit/i18n/src/literals'; import { Box, Flex, Heading, Link } from '@radix-ui/themes'; import type { GetStaticPaths } from 'astro'; import { AesonPlug } from '../../components/AesonPlug'; +import { DiscordPlug } from '../../components/Discord'; import { HomeLocaleSwitcher } from '../../components/Home/HomeLocaleSwitcher'; import HomeHero from '../../components/HomeHero.astro'; import { HomePageHotTanks } from '../../components/HomePageHotTanks'; @@ -45,7 +46,19 @@ export const getStaticPaths = (() => { - + + + + + + { locale !== DEFAULT_LOCALE && (