Remove future tournament cards (redundant with sidebar/my events page) - to be replaced with something else

This commit is contained in:
Kalle 2026-03-08 18:29:22 +02:00
parent 86c9ca8887
commit 85dc36a62f
22 changed files with 5 additions and 203 deletions

View File

@ -12,7 +12,7 @@ export const loader = async () => {
const user = requireUser();
const [tournamentsData, scrimsData] = await Promise.all([
ShowcaseTournaments.frontPageTournamentsByUserId(user.id),
ShowcaseTournaments.categorizedTournamentsByUserId(user.id),
ScrimPostRepository.findUserScrims(user.id),
]);

View File

@ -31,7 +31,7 @@ export async function upcomingTournaments(): Promise<ShowcaseCalendarEvent[]> {
return tournaments.upcoming;
}
export async function frontPageTournamentsByUserId(
export async function categorizedTournamentsByUserId(
userId: number | null,
): Promise<ShowcaseTournamentCollection> {
const tournaments = await cachedTournaments();

View File

@ -1,6 +1,5 @@
import cachified from "@epic-web/cachified";
import type { Tables } from "~/db/tables";
import { getUser } from "~/features/auth/core/user.server";
import * as Changelog from "~/features/front-page/core/Changelog.server";
import { cachedFullUserLeaderboard } from "~/features/leaderboards/core/leaderboards.server";
import * as LeaderboardRepository from "~/features/leaderboards/LeaderboardRepository.server";
@ -10,10 +9,8 @@ import { discordAvatarUrl, teamPage, userPage } from "~/utils/urls";
import * as ShowcaseTournaments from "../core/ShowcaseTournaments.server";
export const loader = async () => {
const user = getUser();
const [tournaments, changelog, leaderboards] = await Promise.all([
ShowcaseTournaments.frontPageTournamentsByUserId(user?.id ?? null),
ShowcaseTournaments.categorizedTournamentsByUserId(null),
cachified({
key: "front-changelog",
cache,

View File

@ -4,23 +4,13 @@ import { useTranslation } from "react-i18next";
import { Link, useLoaderData } from "react-router";
import { Avatar } from "~/components/Avatar";
import { Divider } from "~/components/Divider";
import {
SendouTab,
SendouTabList,
SendouTabPanel,
SendouTabs,
} from "~/components/elements/Tabs";
import { Image } from "~/components/Image";
import { ArrowRightIcon } from "~/components/icons/ArrowRight";
import { BSKYLikeIcon } from "~/components/icons/BSKYLike";
import { BSKYReplyIcon } from "~/components/icons/BSKYReply";
import { BSKYRepostIcon } from "~/components/icons/BSKYRepost";
import { ExternalIcon } from "~/components/icons/External";
import { KeyIcon } from "~/components/icons/Key";
import { SearchIcon } from "~/components/icons/Search";
import { UsersIcon } from "~/components/icons/Users";
import { Main } from "~/components/Main";
import type { ShowcaseCalendarEvent } from "~/features/calendar/calendar-types";
import { TournamentCard } from "~/features/calendar/components/TournamentCard";
import type * as Changelog from "~/features/front-page/core/Changelog.server";
import * as Seasons from "~/features/mmr/core/Seasons";
@ -30,7 +20,6 @@ import styles from "~/styles/front.module.css";
import type { SendouRouteHandle } from "~/utils/remix.server";
import {
BLANK_IMAGE_URL,
CALENDAR_TOURNAMENTS_PAGE,
LUTI_PAGE,
leaderboardsPage,
navIconUrl,
@ -50,7 +39,6 @@ export default function FrontPage() {
<Main className={styles.frontPageContainer}>
<LeagueBanner />
<SeasonBanner />
<TournamentCards />
<ResultHighlights />
<ChangelogList />
</Main>
@ -120,96 +108,6 @@ function LeagueBanner() {
);
}
function TournamentCards() {
const { t } = useTranslation(["front"]);
const data = useLoaderData<typeof loader>();
if (
data.tournaments.participatingFor.length === 0 &&
data.tournaments.organizingFor.length === 0 &&
data.tournaments.showcase.length === 0
) {
return null;
}
const showSignedUpTab = data.tournaments.participatingFor.length > 0;
const showOrganizerTab = data.tournaments.organizingFor.length > 0;
const showDiscoverTab = data.tournaments.showcase.length > 0;
return (
<div>
<SendouTabs padded={false}>
<SendouTabList>
{showSignedUpTab ? (
<SendouTab id="signed-up" icon={<UsersIcon />}>
{t("front:showcase.tabs.signedUp")}
</SendouTab>
) : null}
{showOrganizerTab ? (
<SendouTab id="organizer" icon={<KeyIcon />}>
{t("front:showcase.tabs.organizer")}
</SendouTab>
) : null}
{showDiscoverTab ? (
<SendouTab id="discover" icon={<SearchIcon />}>
{t("front:showcase.tabs.discover")}
</SendouTab>
) : null}
</SendouTabList>
<SendouTabPanel id="signed-up">
<ShowcaseTournamentScroller
tournaments={data.tournaments.participatingFor}
/>
</SendouTabPanel>
<SendouTabPanel id="organizer">
<ShowcaseTournamentScroller
tournaments={data.tournaments.organizingFor}
/>
</SendouTabPanel>
<SendouTabPanel id="discover">
<ShowcaseTournamentScroller tournaments={data.tournaments.showcase} />
</SendouTabPanel>
</SendouTabs>
</div>
);
}
function ShowcaseTournamentScroller({
tournaments,
}: {
tournaments: ShowcaseCalendarEvent[];
}) {
return (
<div className={styles.tournamentCards}>
<div
className={clsx(
styles.tournamentCardsSpacer,
"overflow-x-scroll scrollbar",
)}
>
{tournaments.map((tournament) => (
<TournamentCard key={tournament.id} tournament={tournament} />
))}
</div>
<AllTournamentsLinkCard />
</div>
);
}
function AllTournamentsLinkCard() {
const { t } = useTranslation(["front"]);
return (
<Link
to={CALENDAR_TOURNAMENTS_PAGE}
className={styles.tournamentCardsViewAllCard}
>
<Image path={navIconUrl("medal")} size={36} alt="" />
{t("front:showcase.viewAll")}
</Link>
);
}
function ResultHighlights() {
const { t } = useTranslation(["front"]);
const data = useLoaderData<typeof loader>();

View File

@ -58,7 +58,7 @@ const TOURNAMENT_SUB_QUOTA = 2;
export async function resolveSidebarData(userId: number | null) {
if (!userId) {
const tournamentsData =
await ShowcaseTournaments.frontPageTournamentsByUserId(null);
await ShowcaseTournaments.categorizedTournamentsByUserId(null);
return {
events: showcaseEventsToSidebarEvents(tournamentsData.showcase),
friends: [] as SidebarFriend[],
@ -67,7 +67,7 @@ export async function resolveSidebarData(userId: number | null) {
}
const [tournamentsData, scrimsData, friendsWithActivity] = await Promise.all([
ShowcaseTournaments.frontPageTournamentsByUserId(userId),
ShowcaseTournaments.categorizedTournamentsByUserId(userId),
ScrimPostRepository.findUserScrims(userId),
FriendRepository.findByUserIdWithActivity(userId),
]);

View File

@ -100,13 +100,6 @@
translate: 2px;
}
.tournamentCards {
display: flex;
justify-content: space-between;
gap: var(--s-2);
margin-block-start: var(--s-2);
}
.tournamentCardsSpacer {
display: flex;
gap: var(--s-2);
@ -114,28 +107,6 @@
padding: var(--s-2);
}
.tournamentCardsViewAllCard {
background-color: var(--color-bg-high);
height: var(--card-height);
border-radius: var(--radius-box);
display: grid;
place-items: center;
padding: var(--s-2);
font-size: var(--font-2xs);
font-weight: var(--weight-bold);
text-align: center;
color: var(--color-text);
transition: 0.2s ease-out;
min-width: 90px;
max-width: 90px;
border: var(--border-style);
margin-top: var(--s-2);
}
.tournamentCardsViewAllCard:hover {
background-color: var(--color-bg-higher);
}
.resultHighlights {
display: flex;
gap: var(--s-2);

View File

@ -6,10 +6,6 @@
"sq.season": "",
"sq.prepare": "",
"sq.participate": "",
"showcase.tabs.signedUp": "",
"showcase.tabs.organizer": "",
"showcase.tabs.discover": "",
"showcase.viewAll": "",
"showcase.card.ranked": "",
"showcase.card.unranked": "",
"showcase.card.winner": "",

View File

@ -6,10 +6,6 @@
"sq.season": "",
"sq.prepare": "",
"sq.participate": "",
"showcase.tabs.signedUp": "",
"showcase.tabs.organizer": "",
"showcase.tabs.discover": "",
"showcase.viewAll": "",
"showcase.card.ranked": "",
"showcase.card.unranked": "",
"showcase.card.winner": "",

View File

@ -6,10 +6,6 @@
"sq.season": "Season {{nth}}",
"sq.prepare": "Prepare now!",
"sq.participate": "Participate now!",
"showcase.tabs.signedUp": "Signed up",
"showcase.tabs.organizer": "Organizing",
"showcase.tabs.discover": "Discover",
"showcase.viewAll": "View all tournaments",
"showcase.card.ranked": "Ranked",
"showcase.card.unranked": "Unranked",
"showcase.card.winner": "Winner",

View File

@ -6,10 +6,6 @@
"sq.season": "",
"sq.prepare": "",
"sq.participate": "",
"showcase.tabs.signedUp": "",
"showcase.tabs.organizer": "",
"showcase.tabs.discover": "",
"showcase.viewAll": "",
"showcase.card.ranked": "",
"showcase.card.unranked": "",
"showcase.card.winner": "",

View File

@ -6,10 +6,6 @@
"sq.season": "",
"sq.prepare": "",
"sq.participate": "",
"showcase.tabs.signedUp": "",
"showcase.tabs.organizer": "",
"showcase.tabs.discover": "",
"showcase.viewAll": "",
"showcase.card.ranked": "",
"showcase.card.unranked": "",
"showcase.card.winner": "",

View File

@ -6,10 +6,6 @@
"sq.season": "",
"sq.prepare": "",
"sq.participate": "",
"showcase.tabs.signedUp": "",
"showcase.tabs.organizer": "",
"showcase.tabs.discover": "",
"showcase.viewAll": "",
"showcase.card.ranked": "",
"showcase.card.unranked": "",
"showcase.card.winner": "",

View File

@ -6,10 +6,6 @@
"sq.season": "Saison {{nth}}",
"sq.prepare": "Preparez-vous maintenant!",
"sq.participate": "Participez maintenant!",
"showcase.tabs.signedUp": "Inscrit",
"showcase.tabs.organizer": "Organisater",
"showcase.tabs.discover": "Découvrir",
"showcase.viewAll": "Regarder tous les tournois",
"showcase.card.ranked": "Classé",
"showcase.card.unranked": "Non classé",
"showcase.card.winner": "Gagnant",

View File

@ -6,10 +6,6 @@
"sq.season": "",
"sq.prepare": "",
"sq.participate": "",
"showcase.tabs.signedUp": "",
"showcase.tabs.organizer": "",
"showcase.tabs.discover": "",
"showcase.viewAll": "",
"showcase.card.ranked": "",
"showcase.card.unranked": "",
"showcase.card.winner": "",

View File

@ -6,10 +6,6 @@
"sq.season": "Stagione {{nth}}",
"sq.prepare": "Preparati!",
"sq.participate": "Partecipa ora!",
"showcase.tabs.signedUp": "Iscritto",
"showcase.tabs.organizer": "Organizing",
"showcase.tabs.discover": "Scopri",
"showcase.viewAll": "Visualizza tutti i tornei",
"showcase.card.ranked": "Classificata",
"showcase.card.unranked": "Non classificata",
"showcase.card.winner": "Vincitore",

View File

@ -6,10 +6,6 @@
"sq.season": "",
"sq.prepare": "",
"sq.participate": "",
"showcase.tabs.signedUp": "",
"showcase.tabs.organizer": "",
"showcase.tabs.discover": "",
"showcase.viewAll": "",
"showcase.card.ranked": "",
"showcase.card.unranked": "",
"showcase.card.winner": "",

View File

@ -6,10 +6,6 @@
"sq.season": "",
"sq.prepare": "",
"sq.participate": "",
"showcase.tabs.signedUp": "",
"showcase.tabs.organizer": "",
"showcase.tabs.discover": "",
"showcase.viewAll": "",
"showcase.card.ranked": "",
"showcase.card.unranked": "",
"showcase.card.winner": "",

View File

@ -6,10 +6,6 @@
"sq.season": "",
"sq.prepare": "",
"sq.participate": "",
"showcase.tabs.signedUp": "",
"showcase.tabs.organizer": "",
"showcase.tabs.discover": "",
"showcase.viewAll": "",
"showcase.card.ranked": "",
"showcase.card.unranked": "",
"showcase.card.winner": "",

View File

@ -6,10 +6,6 @@
"sq.season": "",
"sq.prepare": "",
"sq.participate": "",
"showcase.tabs.signedUp": "",
"showcase.tabs.organizer": "",
"showcase.tabs.discover": "",
"showcase.viewAll": "",
"showcase.card.ranked": "",
"showcase.card.unranked": "",
"showcase.card.winner": "",

View File

@ -6,10 +6,6 @@
"sq.season": "",
"sq.prepare": "",
"sq.participate": "",
"showcase.tabs.signedUp": "",
"showcase.tabs.organizer": "",
"showcase.tabs.discover": "",
"showcase.viewAll": "",
"showcase.card.ranked": "",
"showcase.card.unranked": "",
"showcase.card.winner": "",

View File

@ -6,10 +6,6 @@
"sq.season": "Сезон {{nth}}",
"sq.prepare": "Будьте готовы!",
"sq.participate": "Участвуйте!",
"showcase.tabs.signedUp": "Записаны",
"showcase.tabs.organizer": "Организуете",
"showcase.tabs.discover": "Найти",
"showcase.viewAll": "Посмотреть все турниры",
"showcase.card.ranked": "Рейтинговый",
"showcase.card.unranked": "Без Рейтинга",
"showcase.card.winner": "Победитель",

View File

@ -6,10 +6,6 @@
"sq.season": "",
"sq.prepare": "",
"sq.participate": "",
"showcase.tabs.signedUp": "",
"showcase.tabs.organizer": "",
"showcase.tabs.discover": "",
"showcase.viewAll": "",
"showcase.card.ranked": "",
"showcase.card.unranked": "",
"showcase.card.winner": "",