{calendarEvent.tournamentId ? (
-
) : null}
diff --git a/app/features/front-page/routes/index.tsx b/app/features/front-page/routes/index.tsx
index b5568ed2e..7c78677d9 100644
--- a/app/features/front-page/routes/index.tsx
+++ b/app/features/front-page/routes/index.tsx
@@ -10,6 +10,7 @@ import {
navIconUrl,
tournamentPage,
userPage,
+ userSubmittedImage,
} from "~/utils/urls";
import { useTranslation } from "react-i18next";
import { Link } from "@remix-run/react";
@@ -131,7 +132,8 @@ function TournamentCard({
const { t } = useTranslation(["common"]);
const isMounted = useIsMounted();
const { i18n } = useTranslation();
- const theme = HACKY_resolveThemeColors(tournament);
+ const theme =
+ tournament.avatarMetadata ?? HACKY_resolveThemeColors(tournament);
const happeningNow =
tournament.firstPlacers.length === 0 &&
@@ -166,14 +168,19 @@ function TournamentCard({
to={tournamentPage(tournament.id)}
className="front__tournament-card"
style={{
- "--card-bg": theme.bg,
- "--card-text": theme.text,
+ "--card-bg": theme.backgroundColor,
+ "--card-text": theme.textColor,
}}
>
-
diff --git a/app/features/img-upload/queries/countAllUnvalidatedImg.server.ts b/app/features/img-upload/queries/countAllUnvalidatedImg.server.ts
index f79ea6b09..b4af9a837 100644
--- a/app/features/img-upload/queries/countAllUnvalidatedImg.server.ts
+++ b/app/features/img-upload/queries/countAllUnvalidatedImg.server.ts
@@ -7,8 +7,10 @@ const stm = sql.prepare(/*sql*/ `
"UnvalidatedUserSubmittedImage"."id" = "Team"."bannerImgId"
left join "Art" on
"UnvalidatedUserSubmittedImage"."id" = "Art"."imgId"
+ left join "CalendarEvent" on
+ "UnvalidatedUserSubmittedImage"."id" = "CalendarEvent"."avatarImgId"
where "UnvalidatedUserSubmittedImage"."validatedAt" is null
- and ("Team"."id" is not null or "Art"."id" is not null)
+ and ("Team"."id" is not null or "Art"."id" is not null or "CalendarEvent"."id" is not null)
`);
export function countAllUnvalidatedImg() {
diff --git a/app/features/img-upload/queries/oneUnvalidatedImage.ts b/app/features/img-upload/queries/oneUnvalidatedImage.ts
index dc48bac62..05c2af308 100644
--- a/app/features/img-upload/queries/oneUnvalidatedImage.ts
+++ b/app/features/img-upload/queries/oneUnvalidatedImage.ts
@@ -12,8 +12,10 @@ const stm = sql.prepare(/* sql */ `
"UnvalidatedUserSubmittedImage"."id" = "Team"."bannerImgId"
left join "Art" on
"UnvalidatedUserSubmittedImage"."id" = "Art"."imgId"
+ left join "CalendarEvent" on
+ "UnvalidatedUserSubmittedImage"."id" = "CalendarEvent"."avatarImgId"
where "UnvalidatedUserSubmittedImage"."validatedAt" is null
- and ("Team"."id" is not null or "Art"."id" is not null)
+ and ("Team"."id" is not null or "Art"."id" is not null or "CalendarEvent"."id" is not null)
limit 1
`);
diff --git a/app/features/tournament-bracket/core/Tournament.ts b/app/features/tournament-bracket/core/Tournament.ts
index efd12eee6..be453daba 100644
--- a/app/features/tournament-bracket/core/Tournament.ts
+++ b/app/features/tournament-bracket/core/Tournament.ts
@@ -483,6 +483,10 @@ export class Tournament {
}
get logoSrc() {
+ if (this.ctx.logoUrl) {
+ return userSubmittedImage(this.ctx.logoUrl);
+ }
+
return HACKY_resolvePicture(this.ctx);
}
diff --git a/app/features/tournament-bracket/core/tests/mocks.ts b/app/features/tournament-bracket/core/tests/mocks.ts
index eacd6825f..d44472c01 100644
--- a/app/features/tournament-bracket/core/tests/mocks.ts
+++ b/app/features/tournament-bracket/core/tests/mocks.ts
@@ -2285,6 +2285,8 @@ export const PADDLING_POOL_257 = () =>
description:
"Hosted by Dapple Productions.\n\nThe longest tournament series in Splatoon!\nEvery week a tournament!\n\n✓ DE or Groups into SE\n✓ All Modes (Picnic system)\n✓ Badge prize\n✓ A well-ran tournament experience\n\nCome join!",
rules: null,
+ logoUrl: null,
+ avatarImgId: null,
startTime: 1709748000,
author: {
id: 860,
@@ -8129,6 +8131,8 @@ export const PADDLING_POOL_255 = () =>
name: "Paddling Pool 255",
description: null,
rules: null,
+ logoUrl: null,
+ avatarImgId: null,
startTime: 1708538400,
author: {
id: 860,
@@ -14290,6 +14294,8 @@ export const IN_THE_ZONE_32 = () =>
name: "In The Zone 32",
description: "Part of sendou.ink ranked season 2",
rules: null,
+ logoUrl: null,
+ avatarImgId: null,
startTime: 1707588000,
author: {
id: 274,
diff --git a/app/features/tournament-bracket/core/tests/test-utils.ts b/app/features/tournament-bracket/core/tests/test-utils.ts
index c0f2f298f..980b7a56b 100644
--- a/app/features/tournament-bracket/core/tests/test-utils.ts
+++ b/app/features/tournament-bracket/core/tests/test-utils.ts
@@ -43,6 +43,8 @@ export const testTournament = (
id: 1,
description: null,
rules: null,
+ logoUrl: null,
+ avatarImgId: null,
discordUrl: null,
startTime: 1705858842,
isFinalized: 0,
diff --git a/app/features/tournament/TournamentRepository.server.ts b/app/features/tournament/TournamentRepository.server.ts
index 457448adf..995010bf6 100644
--- a/app/features/tournament/TournamentRepository.server.ts
+++ b/app/features/tournament/TournamentRepository.server.ts
@@ -32,8 +32,14 @@ export async function findById(id: number) {
"Tournament.mapPickingStyle",
"Tournament.rules",
"CalendarEvent.name",
+ "CalendarEvent.avatarImgId",
"CalendarEvent.description",
"CalendarEventDate.startTime",
+ eb
+ .selectFrom("UserSubmittedImage")
+ .select(["UserSubmittedImage.url"])
+ .whereRef("CalendarEvent.avatarImgId", "=", "UserSubmittedImage.id")
+ .as("logoUrl"),
jsonObjectFrom(
eb
.selectFrom("User")
@@ -224,6 +230,12 @@ export async function forShowcase() {
"Tournament.id",
"CalendarEvent.name",
"CalendarEventDate.startTime",
+ eb
+ .selectFrom("UserSubmittedImage")
+ .select(["UserSubmittedImage.url"])
+ .whereRef("CalendarEvent.avatarImgId", "=", "UserSubmittedImage.id")
+ .as("logoUrl"),
+ "CalendarEvent.avatarMetadata",
jsonArrayFrom(
eb
.selectFrom("TournamentResult")
diff --git a/app/features/tournament/components/TournamentStream.tsx b/app/features/tournament/components/TournamentStream.tsx
index 63f4a6b4f..2ebcbf618 100644
--- a/app/features/tournament/components/TournamentStream.tsx
+++ b/app/features/tournament/components/TournamentStream.tsx
@@ -43,7 +43,7 @@ export function TournamentStream({
) : (
-
+
Cast
{stream.twitchUserName}
)}
diff --git a/app/features/tournament/routes/to.$id.register.tsx b/app/features/tournament/routes/to.$id.register.tsx
index 13df6f069..5cf5f8e81 100644
--- a/app/features/tournament/routes/to.$id.register.tsx
+++ b/app/features/tournament/routes/to.$id.register.tsx
@@ -281,20 +281,27 @@ export const loader = async ({ request, params }: LoaderFunctionArgs) => {
};
export default function TournamentRegisterPage() {
+ const user = useUser();
const isMounted = useIsMounted();
const { i18n } = useTranslation();
const tournament = useTournament();
const startsAtEvenHour = tournament.ctx.startTime.getMinutes() === 0;
+ const showAvatarPendingApprovalText =
+ !tournament.ctx.logoUrl &&
+ tournament.ctx.avatarImgId &&
+ tournament.isOrganizer(user);
+
return (
-
{tournament.ctx.name}
@@ -334,6 +341,12 @@ export default function TournamentRegisterPage() {
+ {showAvatarPendingApprovalText ? (
+
+ Tournament logo pending moderator review. Will be shown automatically
+ once approved.
+
+ ) : null}
);
diff --git a/app/features/tournament/routes/to.$id.tsx b/app/features/tournament/routes/to.$id.tsx
index d12ca848a..f5b53c69e 100644
--- a/app/features/tournament/routes/to.$id.tsx
+++ b/app/features/tournament/routes/to.$id.tsx
@@ -30,7 +30,7 @@ import * as UserRepository from "~/features/user-page/UserRepository.server";
import * as TournamentRepository from "~/features/tournament/TournamentRepository.server";
import { databaseTimestampToDate } from "~/utils/dates";
import { isAdmin } from "~/permissions";
-import { tournamentPage } from "~/utils/urls";
+import { tournamentPage, userSubmittedImage } from "~/utils/urls";
import "../tournament.css";
import "~/styles/maps.css";
@@ -56,7 +56,7 @@ export const meta: MetaFunction = (args) => {
},
{
property: "og:image",
- content: HACKY_resolvePicture(data.tournament.ctx) + ".png",
+ content: HACKY_resolvePicture(data.tournament.ctx),
},
];
};
@@ -70,7 +70,9 @@ export const handle: SendouRouteHandle = {
return [
{
- imgPath: HACKY_resolvePicture(data.tournament.ctx),
+ imgPath: data.tournament.ctx.logoUrl
+ ? userSubmittedImage(data.tournament.ctx.logoUrl)
+ : HACKY_resolvePicture(data.tournament.ctx),
href: tournamentPage(data.tournament.ctx.id),
type: "IMAGE",
text: data.tournament.ctx.name,
diff --git a/app/features/tournament/tournament-utils.ts b/app/features/tournament/tournament-utils.ts
index 832a1caac..3bb70059e 100644
--- a/app/features/tournament/tournament-utils.ts
+++ b/app/features/tournament/tournament-utils.ts
@@ -50,6 +50,17 @@ export function isOneModeTournamentOf(
: null;
}
+export function tournamentRoundI18nKey(round: PlayedSet["round"]) {
+ if (round.round === "grand_finals") return `bracket.grand_finals`;
+ if (round.round === "bracket_reset") {
+ return `bracket.grand_finals.bracket_reset`;
+ }
+ if (round.round === "finals") return `bracket.${round.type}.finals` as const;
+
+ return `bracket.${round.type}` as const;
+}
+
+// legacy approach, new tournament should use the avatarImgId column in CalendarEvent
export function HACKY_resolvePicture(event: { name: string }) {
const normalizedEventName = event.name.toLowerCase();
@@ -172,136 +183,127 @@ export function HACKY_resolvePicture(event: { name: string }) {
return tournamentLogoUrl("default");
}
+// legacy approach, new tournament should use the avatarMetadata column in CalendarEvent
const BLACK = "#1e1e1e";
const WHITE = "#fffcfc";
export function HACKY_resolveThemeColors(event: { name: string }) {
const normalizedEventName = event.name.toLowerCase();
if (normalizedEventName.includes("sendouq")) {
- return { bg: "#1e1e1e", text: WHITE };
+ return { backgroundColor: "#1e1e1e", textColor: WHITE };
}
if (normalizedEventName.includes("paddling pool")) {
- return { bg: "#fff", text: BLACK };
+ return { backgroundColor: "#fff", textColor: BLACK };
}
if (normalizedEventName.includes("in the zone")) {
- return { bg: "#8b0000", text: WHITE };
+ return { backgroundColor: "#8b0000", textColor: WHITE };
}
if (normalizedEventName.includes("picnic")) {
- return { bg: "#e3fefe", text: BLACK };
+ return { backgroundColor: "#e3fefe", textColor: BLACK };
}
if (normalizedEventName.includes("proving grounds")) {
- return { bg: "#ffe809", text: BLACK };
+ return { backgroundColor: "#ffe809", textColor: BLACK };
}
if (normalizedEventName.includes("triton")) {
- return { bg: "#aee8ff", text: BLACK };
+ return { backgroundColor: "#aee8ff", textColor: BLACK };
}
if (normalizedEventName.includes("swim or sink")) {
- return { bg: "#d7f8ea", text: BLACK };
+ return { backgroundColor: "#d7f8ea", textColor: BLACK };
}
if (normalizedEventName.includes("from the ink up")) {
- return { bg: "#ffdfc6", text: BLACK };
+ return { backgroundColor: "#ffdfc6", textColor: BLACK };
}
if (normalizedEventName.includes("coral clash")) {
- return { bg: "#f0f4ff", text: BLACK };
+ return { backgroundColor: "#f0f4ff", textColor: BLACK };
}
if (normalizedEventName.includes("level up")) {
- return { bg: "#383232", text: WHITE };
+ return { backgroundColor: "#383232", textColor: WHITE };
}
if (normalizedEventName.includes("all 4 one")) {
- return { bg: "#2b262a", text: WHITE };
+ return { backgroundColor: "#2b262a", textColor: WHITE };
}
if (normalizedEventName.includes("fry basket")) {
- return { bg: "#fff", text: BLACK };
+ return { backgroundColor: "#fff", textColor: BLACK };
}
if (normalizedEventName.includes("the depths")) {
- return { bg: "#183e42", text: WHITE };
+ return { backgroundColor: "#183e42", textColor: WHITE };
}
if (normalizedEventName.includes("eclipse")) {
- return { bg: "#191919", text: WHITE };
+ return { backgroundColor: "#191919", textColor: WHITE };
}
if (normalizedEventName.includes("homecoming")) {
- return { bg: "#1c1c1c", text: WHITE };
+ return { backgroundColor: "#1c1c1c", textColor: WHITE };
}
if (normalizedEventName.includes("bad ideas")) {
- return { bg: "#000000", text: WHITE };
+ return { backgroundColor: "#000000", textColor: WHITE };
}
if (normalizedEventName.includes("tenoch")) {
- return { bg: "#425969", text: WHITE };
+ return { backgroundColor: "#425969", textColor: WHITE };
}
if (normalizedEventName.includes("megalodon monday")) {
- return { bg: "#288eb5", text: WHITE };
+ return { backgroundColor: "#288eb5", textColor: WHITE };
}
if (normalizedEventName.includes("heaven 2 ocean")) {
- return { bg: "#8cf1ff", text: BLACK };
+ return { backgroundColor: "#8cf1ff", textColor: BLACK };
}
if (normalizedEventName.includes("kraken royale")) {
- return { bg: "#32333a", text: WHITE };
+ return { backgroundColor: "#32333a", textColor: WHITE };
}
if (normalizedEventName.includes("menu royale")) {
- return { bg: "#000", text: WHITE };
+ return { backgroundColor: "#000", textColor: WHITE };
}
if (normalizedEventName.includes("barracuda co")) {
- return { bg: "#47b6fe", text: BLACK };
+ return { backgroundColor: "#47b6fe", textColor: BLACK };
}
if (normalizedEventName.includes("crimson ink")) {
- return { bg: "#000000", text: WHITE };
+ return { backgroundColor: "#000000", textColor: WHITE };
}
if (normalizedEventName.includes("mesozoic mayhem")) {
- return { bg: "#ccd5da", text: BLACK };
+ return { backgroundColor: "#ccd5da", textColor: BLACK };
}
if (normalizedEventName.includes("rain or shine")) {
- return { bg: "#201c3b", text: WHITE };
+ return { backgroundColor: "#201c3b", textColor: WHITE };
}
if (normalizedEventName.includes("squid junction")) {
- return { bg: "#fed09f", text: BLACK };
+ return { backgroundColor: "#fed09f", textColor: BLACK };
}
if (normalizedEventName.includes("silly sausage")) {
- return { bg: "#ffd76f", text: BLACK };
+ return { backgroundColor: "#ffd76f", textColor: BLACK };
}
if (normalizedEventName.includes("united-lan")) {
- return { bg: "#fff", text: BLACK };
+ return { backgroundColor: "#fff", textColor: BLACK };
}
if (normalizedEventName.includes("soul cup")) {
- return { bg: "#101011", text: WHITE };
+ return { backgroundColor: "#101011", textColor: WHITE };
}
- return { bg: "#3430ad", text: WHITE };
-}
-
-export function tournamentRoundI18nKey(round: PlayedSet["round"]) {
- if (round.round === "grand_finals") return `bracket.grand_finals`;
- if (round.round === "bracket_reset") {
- return `bracket.grand_finals.bracket_reset`;
- }
- if (round.round === "finals") return `bracket.${round.type}.finals` as const;
-
- return `bracket.${round.type}` as const;
+ return { backgroundColor: "#3430ad", textColor: WHITE };
}
diff --git a/app/styles/calendar-new.css b/app/styles/calendar-new.css
index 204788f87..7f87c2f4e 100644
--- a/app/styles/calendar-new.css
+++ b/app/styles/calendar-new.css
@@ -22,3 +22,22 @@
.calendar-new__range-input {
width: 4.25rem;
}
+
+.calendar-new__avatar-preview {
+ width: 124px;
+ height: 124px;
+ border-radius: 100%;
+}
+
+.calendar-new__avatar-preview__small {
+ width: 32px;
+ height: 32px;
+ border-radius: 100%;
+}
+
+.calendar-new__showcase-preview {
+ border-radius: var(--rounded);
+ padding: var(--s-4);
+ font-size: var(--fonts-sm);
+ font-weight: var(--semi-bold);
+}
diff --git a/app/utils/remix.ts b/app/utils/remix.ts
index 067be1d36..efb91ec7c 100644
--- a/app/utils/remix.ts
+++ b/app/utils/remix.ts
@@ -90,16 +90,22 @@ export async function parseRequestFormData
({
}
/** Parse formData with the given schema. Throws HTTP 400 response if fails. */
-export function parseFormData({
+export async function parseFormData({
formData,
schema,
+ parseAsync,
}: {
formData: FormData;
schema: T;
-}): z.infer {
+ parseAsync?: boolean;
+}): Promise> {
const formDataObj = formDataToObject(formData);
try {
- return schema.parse(formDataObj);
+ const parsed = parseAsync
+ ? await schema.parseAsync(formDataObj)
+ : schema.parse(formDataObj);
+
+ return parsed;
} catch (e) {
if (e instanceof z.ZodError) {
noticeError(e, { formData: JSON.stringify(formDataObj) });
diff --git a/app/utils/urls.ts b/app/utils/urls.ts
index aca5a506f..7a8799509 100644
--- a/app/utils/urls.ts
+++ b/app/utils/urls.ts
@@ -391,7 +391,7 @@ export const preferenceEmojiUrl = (preference?: Preference) => {
return `/static-assets/img/emoji/${emoji}.svg`;
};
export const tournamentLogoUrl = (identifier: string) =>
- `/static-assets/img/tournament-logos/${identifier}`;
+ `/static-assets/img/tournament-logos/${identifier}.png`;
export const TIER_PLUS_URL = `/static-assets/img/tiers/plus`;
export const winnersImageUrl = ({
diff --git a/app/utils/zod.ts b/app/utils/zod.ts
index 0e290c047..0119101a5 100644
--- a/app/utils/zod.ts
+++ b/app/utils/zod.ts
@@ -10,6 +10,8 @@ export const optionalId = z.coerce.number().int().positive().optional();
export const dbBoolean = z.coerce.number().min(0).max(1).int();
+export const hexCode = z.string().regex(/^#[0-9a-fA-F]{6}$/);
+
const abilityNameToType = (val: string) =>
abilities.find((ability) => ability.name === val)?.type;
export const headMainSlotAbility = z
diff --git a/migrations/057-calendar-event-avatar.js b/migrations/057-calendar-event-avatar.js
new file mode 100644
index 000000000..0b71966ef
--- /dev/null
+++ b/migrations/057-calendar-event-avatar.js
@@ -0,0 +1,11 @@
+export function up(db) {
+ db.transaction(() => {
+ db.prepare(
+ /* sql */ `alter table "CalendarEvent" add "avatarImgId" integer`,
+ ).run();
+
+ db.prepare(
+ /* sql */ `alter table "CalendarEvent" add "avatarMetadata" text`,
+ ).run();
+ })();
+}
diff --git a/public/static-assets/img/tournament-logos/a41.avif b/public/static-assets/img/tournament-logos/a41.avif
deleted file mode 100644
index 9b3f29a60..000000000
Binary files a/public/static-assets/img/tournament-logos/a41.avif and /dev/null differ
diff --git a/public/static-assets/img/tournament-logos/ai.avif b/public/static-assets/img/tournament-logos/ai.avif
deleted file mode 100644
index bb9223a9b..000000000
Binary files a/public/static-assets/img/tournament-logos/ai.avif and /dev/null differ
diff --git a/public/static-assets/img/tournament-logos/bc.avif b/public/static-assets/img/tournament-logos/bc.avif
deleted file mode 100644
index 91f810f08..000000000
Binary files a/public/static-assets/img/tournament-logos/bc.avif and /dev/null differ
diff --git a/public/static-assets/img/tournament-logos/bio.avif b/public/static-assets/img/tournament-logos/bio.avif
deleted file mode 100644
index 2f7822854..000000000
Binary files a/public/static-assets/img/tournament-logos/bio.avif and /dev/null differ
diff --git a/public/static-assets/img/tournament-logos/cc.avif b/public/static-assets/img/tournament-logos/cc.avif
deleted file mode 100644
index cdbe26284..000000000
Binary files a/public/static-assets/img/tournament-logos/cc.avif and /dev/null differ
diff --git a/public/static-assets/img/tournament-logos/ci.avif b/public/static-assets/img/tournament-logos/ci.avif
deleted file mode 100644
index 64be281da..000000000
Binary files a/public/static-assets/img/tournament-logos/ci.avif and /dev/null differ
diff --git a/public/static-assets/img/tournament-logos/d.avif b/public/static-assets/img/tournament-logos/d.avif
deleted file mode 100644
index bb61d2d04..000000000
Binary files a/public/static-assets/img/tournament-logos/d.avif and /dev/null differ
diff --git a/public/static-assets/img/tournament-logos/default.avif b/public/static-assets/img/tournament-logos/default.avif
deleted file mode 100644
index 3364d2366..000000000
Binary files a/public/static-assets/img/tournament-logos/default.avif and /dev/null differ
diff --git a/public/static-assets/img/tournament-logos/e.avif b/public/static-assets/img/tournament-logos/e.avif
deleted file mode 100644
index 34c780027..000000000
Binary files a/public/static-assets/img/tournament-logos/e.avif and /dev/null differ
diff --git a/public/static-assets/img/tournament-logos/fb.avif b/public/static-assets/img/tournament-logos/fb.avif
deleted file mode 100644
index 8a504526c..000000000
Binary files a/public/static-assets/img/tournament-logos/fb.avif and /dev/null differ
diff --git a/public/static-assets/img/tournament-logos/ftiu.avif b/public/static-assets/img/tournament-logos/ftiu.avif
deleted file mode 100644
index c4177ebb7..000000000
Binary files a/public/static-assets/img/tournament-logos/ftiu.avif and /dev/null differ
diff --git a/public/static-assets/img/tournament-logos/hc.avif b/public/static-assets/img/tournament-logos/hc.avif
deleted file mode 100644
index b12f13a44..000000000
Binary files a/public/static-assets/img/tournament-logos/hc.avif and /dev/null differ
diff --git a/public/static-assets/img/tournament-logos/ho.avif b/public/static-assets/img/tournament-logos/ho.avif
deleted file mode 100644
index c0f9860ed..000000000
Binary files a/public/static-assets/img/tournament-logos/ho.avif and /dev/null differ
diff --git a/public/static-assets/img/tournament-logos/itz.avif b/public/static-assets/img/tournament-logos/itz.avif
deleted file mode 100644
index 77397dfe5..000000000
Binary files a/public/static-assets/img/tournament-logos/itz.avif and /dev/null differ
diff --git a/public/static-assets/img/tournament-logos/kr.avif b/public/static-assets/img/tournament-logos/kr.avif
deleted file mode 100644
index 77b374162..000000000
Binary files a/public/static-assets/img/tournament-logos/kr.avif and /dev/null differ
diff --git a/public/static-assets/img/tournament-logos/lu.avif b/public/static-assets/img/tournament-logos/lu.avif
deleted file mode 100644
index 16a595cff..000000000
Binary files a/public/static-assets/img/tournament-logos/lu.avif and /dev/null differ
diff --git a/public/static-assets/img/tournament-logos/me.avif b/public/static-assets/img/tournament-logos/me.avif
deleted file mode 100644
index df4f75be4..000000000
Binary files a/public/static-assets/img/tournament-logos/me.avif and /dev/null differ
diff --git a/public/static-assets/img/tournament-logos/mm.avif b/public/static-assets/img/tournament-logos/mm.avif
deleted file mode 100644
index 411ed9971..000000000
Binary files a/public/static-assets/img/tournament-logos/mm.avif and /dev/null differ
diff --git a/public/static-assets/img/tournament-logos/mr.avif b/public/static-assets/img/tournament-logos/mr.avif
deleted file mode 100644
index 01cbe1316..000000000
Binary files a/public/static-assets/img/tournament-logos/mr.avif and /dev/null differ
diff --git a/public/static-assets/img/tournament-logos/pg.avif b/public/static-assets/img/tournament-logos/pg.avif
deleted file mode 100644
index 32beaedb1..000000000
Binary files a/public/static-assets/img/tournament-logos/pg.avif and /dev/null differ
diff --git a/public/static-assets/img/tournament-logos/pn.avif b/public/static-assets/img/tournament-logos/pn.avif
deleted file mode 100644
index b26c80c68..000000000
Binary files a/public/static-assets/img/tournament-logos/pn.avif and /dev/null differ
diff --git a/public/static-assets/img/tournament-logos/pp.avif b/public/static-assets/img/tournament-logos/pp.avif
deleted file mode 100644
index dec998077..000000000
Binary files a/public/static-assets/img/tournament-logos/pp.avif and /dev/null differ
diff --git a/public/static-assets/img/tournament-logos/ros.avif b/public/static-assets/img/tournament-logos/ros.avif
deleted file mode 100644
index a46143a49..000000000
Binary files a/public/static-assets/img/tournament-logos/ros.avif and /dev/null differ
diff --git a/public/static-assets/img/tournament-logos/sc.avif b/public/static-assets/img/tournament-logos/sc.avif
deleted file mode 100644
index 890eaee8a..000000000
Binary files a/public/static-assets/img/tournament-logos/sc.avif and /dev/null differ
diff --git a/public/static-assets/img/tournament-logos/sf.avif b/public/static-assets/img/tournament-logos/sf.avif
deleted file mode 100644
index 653fbf2fa..000000000
Binary files a/public/static-assets/img/tournament-logos/sf.avif and /dev/null differ
diff --git a/public/static-assets/img/tournament-logos/sj.avif b/public/static-assets/img/tournament-logos/sj.avif
deleted file mode 100644
index 8a19390dd..000000000
Binary files a/public/static-assets/img/tournament-logos/sj.avif and /dev/null differ
diff --git a/public/static-assets/img/tournament-logos/sos.avif b/public/static-assets/img/tournament-logos/sos.avif
deleted file mode 100644
index 328c54d50..000000000
Binary files a/public/static-assets/img/tournament-logos/sos.avif and /dev/null differ
diff --git a/public/static-assets/img/tournament-logos/ss.avif b/public/static-assets/img/tournament-logos/ss.avif
deleted file mode 100644
index 2629e6f48..000000000
Binary files a/public/static-assets/img/tournament-logos/ss.avif and /dev/null differ
diff --git a/public/static-assets/img/tournament-logos/tc.avif b/public/static-assets/img/tournament-logos/tc.avif
deleted file mode 100644
index 5f0b73b4c..000000000
Binary files a/public/static-assets/img/tournament-logos/tc.avif and /dev/null differ
diff --git a/public/static-assets/img/tournament-logos/ul.avif b/public/static-assets/img/tournament-logos/ul.avif
deleted file mode 100644
index 41c9dc994..000000000
Binary files a/public/static-assets/img/tournament-logos/ul.avif and /dev/null differ