diff --git a/packages/website/src/components/Discord/index.tsx b/packages/website/src/components/Discord/index.tsx index cb3d967e6..e0d2c81c0 100644 --- a/packages/website/src/components/Discord/index.tsx +++ b/packages/website/src/components/Discord/index.tsx @@ -5,6 +5,8 @@ import { times } from 'lodash-es'; import { getStrings } from '../../core/i18n/getStrings'; import { Var } from '../../core/radix/var'; import type { LocaleAcceptorProps } from '../../hooks/useLocale'; +import type { MaybeSkeletonComponentProps } from '../../types/maybeSkeletonComponentProps'; +import { InlineSkeleton } from '../InlineSkeleton'; import './index.css'; export interface DiscordWidget { @@ -57,21 +59,31 @@ const columns = times(COLUMN_COUNT, (index) => { return filteredMembers.slice(start, end); }); -function Member({ id, avatar_url, username, status }: Member) { +function Member({ + id, + avatar_url, + username, + status, + skeleton, +}: Member & MaybeSkeletonComponentProps) { let statusColor: string; - switch (status) { - case Status.DND: - statusColor = Var('red-9'); - break; + if (skeleton) { + statusColor = Var('gray-9'); + } else { + switch (status) { + case Status.DND: + statusColor = Var('red-9'); + break; - case Status.Idle: - statusColor = Var('amber-9'); - break; + case Status.Idle: + statusColor = Var('amber-9'); + break; - case Status.Online: - statusColor = Var('jade-9'); - break; + case Status.Online: + statusColor = Var('jade-9'); + break; + } } return ( @@ -85,13 +97,25 @@ function Member({ id, avatar_url, username, status }: Member) { }} color="gray" > - + - {`${username} + {!skeleton && ( + {`${username} + )} + {skeleton && ( + + )} - {username} + {skeleton && } + {!skeleton && username} ); } -function Scroller({ index }: { index: number }) { +function Scroller({ + index, + skeleton, +}: { index: number } & MaybeSkeletonComponentProps) { return ( {columns.map((column) => ( {column.map((member) => ( - + ))} ))} @@ -123,7 +151,10 @@ function Scroller({ index }: { index: number }) { ); } -export function DiscordPlug({ locale }: LocaleAcceptorProps) { +export function DiscordPlug({ + locale, + skeleton, +}: LocaleAcceptorProps & MaybeSkeletonComponentProps) { const strings = getStrings(locale); return ( @@ -162,8 +193,8 @@ export function DiscordPlug({ locale }: LocaleAcceptorProps) { transform: 'rotateX(60deg) rotateZ(-20deg)', }} > - - + + diff --git a/packages/website/src/pages/[...locale]/index.astro b/packages/website/src/pages/[...locale]/index.astro index 39c804337..dde61641e 100644 --- a/packages/website/src/pages/[...locale]/index.astro +++ b/packages/website/src/pages/[...locale]/index.astro @@ -56,7 +56,9 @@ export const getStaticPaths = (() => { flexGrow="1" > - + + +