diff --git a/packages/i18n/strings/en.json b/packages/i18n/strings/en.json index 87854d306..6ff8d57be 100644 --- a/packages/i18n/strings/en.json +++ b/packages/i18n/strings/en.json @@ -16,7 +16,8 @@ "t": "{value}t", "bhp_t": "{value}bhp/t", "deg_s": "{value}°/s", - "%": "{value}%" + "%": "{value}%", + "x": "x{value}" }, "tools": { diff --git a/packages/website-ue/src/components/AvatarCard/index.css b/packages/website-ue/src/components/AvatarCard/index.css index 6ce90f706..8d531a608 100644 --- a/packages/website-ue/src/components/AvatarCard/index.css +++ b/packages/website-ue/src/components/AvatarCard/index.css @@ -18,6 +18,12 @@ background-size: cover; background-position: center; } + + .count { + position: absolute; + bottom: var(--space-3); + right: var(--space-3); + } } .avatar-label { diff --git a/packages/website-ue/src/components/AvatarCard/index.tsx b/packages/website-ue/src/components/AvatarCard/index.tsx index 78a8dc99c..50c9ec7bf 100644 --- a/packages/website-ue/src/components/AvatarCard/index.tsx +++ b/packages/website-ue/src/components/AvatarCard/index.tsx @@ -1,5 +1,8 @@ +import { literals } from "@blitzkit/i18n"; +import { useStrings } from "../../hooks/useStrings"; import type { Avatar } from "../../protos/avatar"; import type { SkeletonProps } from "../../types/SkeletonProps"; +import { Badge } from "../Badge"; import { Text } from "../Text"; import "./index.css"; @@ -29,6 +32,7 @@ interface SeriesProps { function Series({ avatars }: SeriesProps) { const count = Math.min(avatars.length, MAX_CARDS); + const strings = useStrings(); return (
@@ -45,6 +49,12 @@ function Series({ avatars }: SeriesProps) { }} /> ))} + + {avatars.length > 1 && ( + + {literals(strings.units.x, { value: avatars.length })} + + )}
); } diff --git a/packages/website-ue/src/components/Badge/index.css b/packages/website-ue/src/components/Badge/index.css new file mode 100644 index 000000000..dbecd8f99 --- /dev/null +++ b/packages/website-ue/src/components/Badge/index.css @@ -0,0 +1,9 @@ +.badge { + border-radius: var(--max-size); + box-shadow: var(--shadow-aggressive); + + padding: var(--space-2) var(--space-3); + + font-size: var(--font-size-minor); + font-weight: var(--weight-medium); +} diff --git a/packages/website-ue/src/components/Badge/index.tsx b/packages/website-ue/src/components/Badge/index.tsx new file mode 100644 index 000000000..bb98ffd6d --- /dev/null +++ b/packages/website-ue/src/components/Badge/index.tsx @@ -0,0 +1,30 @@ +import type { ComponentProps } from "react"; +import { classNames } from "../../core/ui/classNames"; +import type { Color } from "../../core/ui/color"; +import "./index.css"; + +export interface BadgeProps extends ComponentProps<"div"> { + color?: Color | "accent"; + highContrast?: boolean; +} + +export function Badge({ + className, + style, + color = "accent", + highContrast, + ...props +}: BadgeProps) { + return ( +
+ ); +} diff --git a/packages/website-ue/src/components/Text/index.tsx b/packages/website-ue/src/components/Text/index.tsx index ef76eefb5..5a8dab968 100644 --- a/packages/website-ue/src/components/Text/index.tsx +++ b/packages/website-ue/src/components/Text/index.tsx @@ -4,7 +4,7 @@ import type { Color } from "../../core/ui/color"; import "./index.css"; export interface TextProps extends ComponentProps<"span"> { - color?: Color; + color?: Color | "accent"; weight?: "light" | "regular" | "medium" | "bold" | "black"; lowContrast?: boolean; size?: "regular" | "minor" | "major";