From b96f925d9a87b41883833f628c297f9b548e9a2b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tr=C3=A8sAbhi?= <43380238+tresabhi@users.noreply.github.com> Date: Fri, 2 Jan 2026 14:20:29 -0600 Subject: [PATCH] feat: avatars --- .vscode/settings.json | 1 + packages/website-ue/src/core/api/abstract.ts | 3 ++ packages/website-ue/src/core/api/server.ts | 4 ++ .../website-ue/src/pages/avatars/index.astro | 38 +++++++++++++++++++ packages/website-ue/src/pages/index.astro | 2 + 5 files changed, 48 insertions(+) create mode 100644 packages/website-ue/src/pages/avatars/index.astro diff --git a/.vscode/settings.json b/.vscode/settings.json index 5b0cbc0bd..815f2b36c 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -194,6 +194,7 @@ "Smri", "Specularity", "SSAO", + "stackable", "startcase", "statkit", "statsfull", diff --git a/packages/website-ue/src/core/api/abstract.ts b/packages/website-ue/src/core/api/abstract.ts index 32eaf287e..de1a36f2b 100644 --- a/packages/website-ue/src/core/api/abstract.ts +++ b/packages/website-ue/src/core/api/abstract.ts @@ -1,3 +1,4 @@ +import type { CatalogItemAccessor } from "@blitzkit/closed"; import type { Tank } from "../../protos/tank"; import type { TankList } from "../../protos/tank_list"; import type { Tanks } from "../../protos/tanks"; @@ -13,4 +14,6 @@ export abstract class AbstractAPI { ): Promise>; abstract tank(id: string): Promise; + + abstract avatars(): Promise; } diff --git a/packages/website-ue/src/core/api/server.ts b/packages/website-ue/src/core/api/server.ts index 9f8c1d1ff..2c846a41b 100644 --- a/packages/website-ue/src/core/api/server.ts +++ b/packages/website-ue/src/core/api/server.ts @@ -145,4 +145,8 @@ export class ServerAPI extends AbstractAPI { const tankList = await this.tankList(); return this._tank(id, tankList); } + + async avatars() { + return this.metadata.group("ProfileAvatarEntity"); + } } diff --git a/packages/website-ue/src/pages/avatars/index.astro b/packages/website-ue/src/pages/avatars/index.astro new file mode 100644 index 000000000..87f608929 --- /dev/null +++ b/packages/website-ue/src/pages/avatars/index.astro @@ -0,0 +1,38 @@ +--- +import { ProfileAvatarComponent_Category } from "@protos/blitz_static_profile_avatar_component"; +import { Grade } from "@protos/blitz_static_standard_grades_enum"; +import { api } from "../../core/api/dynamic"; +import BaseLayout from "../../layouts/BaseLayout.astro"; + +const avatars = await api.avatars(); +--- + + + { + avatars.map((avatar) => { + const ui = avatar.StuffUI("UIComponent"); + const profileAvatar = avatar.ProfileAvatar(); + + return ( + <> +

+ {ui.display_name} {Grade[ui.grade]}{" "} + {ProfileAvatarComponent_Category[profileAvatar.category]} +

+ + {ui.description &&

{ui.description}

} + {ui.obtaining_methods &&

{ui.obtaining_methods}

} + {ui.features &&

{ui.features}

} + + + + {avatar.components.sellableComponent && ( +
{JSON.stringify(avatar.Sellable(), null, 2)}
+ )} + +
+ + ); + }) + } +
diff --git a/packages/website-ue/src/pages/index.astro b/packages/website-ue/src/pages/index.astro index 9292c7558..577a646c7 100644 --- a/packages/website-ue/src/pages/index.astro +++ b/packages/website-ue/src/pages/index.astro @@ -11,5 +11,7 @@ import BaseLayout from "../layouts/BaseLayout.astro";

/tanks

+

/avatars

+

/api