This commit is contained in:
Kalle 2026-03-21 15:11:41 +02:00
parent 3ad8118c91
commit ca20884fe1
80 changed files with 107 additions and 28 deletions

View File

@ -37,7 +37,8 @@ import {
import { action } from "../actions/admin.server";
import { DANGEROUS_CAN_ACCESS_DEV_CONTROLS } from "../core/dev-controls";
import { loader } from "../loaders/admin.server";
export { loader, action };
export { action, loader };
export const meta: MetaFunction = (args) => {
return metaTags({

View File

@ -13,7 +13,8 @@ import { metaTags } from "~/utils/remix";
import { API_DOC_LINK } from "~/utils/urls";
import { action } from "../actions/api.server";
import { loader } from "../loaders/api.server";
export { loader, action };
export { action, loader };
export const meta: MetaFunction = (args) => {
return metaTags({

View File

@ -23,7 +23,8 @@ import { ART } from "../art-constants";
import { previewUrl } from "../art-utils";
import { TagSelect } from "../components/TagSelect";
import { loader } from "../loaders/art.new.server";
export { loader, action };
export { action, loader };
export const handle: SendouRouteHandle = {
i18n: ["art"],

View File

@ -22,6 +22,7 @@ import { FILTERED_TAG_KEY_SEARCH_PARAM_KEY } from "../art-constants";
import { ArtGrid } from "../components/ArtGrid";
import { TagSelect } from "../components/TagSelect";
import { loader } from "../loaders/art.server";
export { loader };
const OPEN_COMMISIONS_KEY = "open";

View File

@ -14,6 +14,7 @@ import {
import { metaTags, type SerializeFrom } from "../../../utils/remix";
import { loader } from "../loaders/a.$slug.server";
export { loader };
export const handle: SendouRouteHandle = {

View File

@ -7,6 +7,7 @@ import { ARTICLES_MAIN_PAGE, articlePage, navIconUrl } from "~/utils/urls";
import { metaTags } from "../../../utils/remix";
import { loader } from "../loaders/a.server";
export { loader };
export const handle: SendouRouteHandle = {

View File

@ -6,6 +6,7 @@ import type { SendouRouteHandle } from "~/utils/remix.server";
import { associationsPage } from "~/utils/urls";
import { action } from "../actions/associations.new.server";
export { action };
export const handle: SendouRouteHandle = {

View File

@ -21,7 +21,8 @@ import { useUser } from "~/features/auth/core/user";
import { useHasPermission } from "~/modules/permissions/hooks";
import type { SendouRouteHandle } from "~/utils/remix.server";
import { associationsPage, newAssociationsPage, userPage } from "~/utils/urls";
export { loader, action };
export { action, loader };
export const handle: SendouRouteHandle = {
i18n: "scrims",

View File

@ -10,6 +10,7 @@ import { useHasPermission, useHasRole } from "~/modules/permissions/hooks";
import { action } from "../actions/badges.$id.edit.server";
import type { BadgeDetailsLoaderData } from "../loaders/badges.$id.server";
import type { BadgeDetailsContext } from "./badges.$id";
export { action };
export default function EditBadgePage() {

View File

@ -9,6 +9,7 @@ import { userPage } from "~/utils/urls";
import { badgeExplanationText } from "../badges-utils";
import { loader } from "../loaders/badges.$id.server";
export { loader };
export interface BadgeDetailsContext {

View File

@ -13,6 +13,7 @@ import { BADGES_DOC_LINK, BADGES_PAGE, navIconUrl } from "~/utils/urls";
import { metaTags } from "../../../utils/remix";
import { type BadgesLoaderData, loader } from "../loaders/badges.server";
export { loader };
import "~/styles/badges.css";

View File

@ -4,6 +4,7 @@ import { useTimeFormat } from "~/hooks/useTimeFormat";
import { databaseTimestampToDate } from "~/utils/dates";
import { loader } from "../loaders/suspended.server";
export { loader };
export default function SuspendedPage() {

View File

@ -14,6 +14,7 @@ import {
import { metaTags, type SerializeFrom } from "../../../utils/remix";
import { loader } from "../loaders/builds.$slug.popular.server";
export { loader };
export const meta: MetaFunction<typeof loader> = (args) => {

View File

@ -14,6 +14,7 @@ import {
import { metaTags, type SerializeFrom } from "../../../utils/remix";
import { loader } from "../loaders/builds.$slug.stats.server";
export { loader };
import "../build-stats.css";

View File

@ -42,6 +42,7 @@ import type { AbilityBuildFilter, BuildFilter } from "../builds-types";
import { FilterSection } from "../components/FilterSection";
import { loader } from "../loaders/builds.$slug.server";
export { loader };
import styles from "./builds.$slug.module.css";

View File

@ -14,7 +14,8 @@ import type { Unpacked } from "~/utils/types";
import { action } from "../actions/calendar.$id.report-winners.server";
import { CALENDAR_EVENT_RESULT } from "../calendar-constants";
import { loader } from "../loaders/calendar.$id.report-winners.server";
export { loader, action };
export { action, loader };
export const handle: SendouRouteHandle = {
i18n: "calendar",

View File

@ -37,7 +37,8 @@ import {
} from "../calendar-utils";
import { Tags } from "../components/Tags";
import { loader } from "../loaders/calendar.$id.server";
export { loader, action };
export { action, loader };
import "~/styles/calendar-event.css";

View File

@ -1,2 +1,3 @@
import { loader } from "../loaders/calendar[.]ics.server";
export { loader };

View File

@ -54,7 +54,8 @@ import { logger } from "~/utils/logger";
import { metaTags } from "~/utils/remix";
import { action } from "../actions/calendar.new.server";
import { loader } from "../loaders/calendar.new.server";
export { loader, action };
export { action, loader };
export const meta: MetaFunction<typeof loader> = (args) => {
if (!args.data) return [];

View File

@ -40,6 +40,7 @@ import { FiltersDialog } from "../components/FiltersDialog";
import { TournamentCard } from "../components/TournamentCard";
import * as CalendarEvent from "../core/CalendarEvent";
import { type CalendarLoaderData, loader } from "../loaders/calendar.server";
export { action, loader };
import styles from "./calendar.module.css";

View File

@ -44,6 +44,7 @@ import {
} from "~/utils/urls";
import { type LeaderboardEntry, loader } from "../loaders/index.server";
export { loader };
export const handle: SendouRouteHandle = {

View File

@ -8,6 +8,7 @@ import { SubmitButton } from "~/components/SubmitButton";
import { action } from "../actions/upload.admin.server";
import { loader } from "../loaders/upload.admin.server";
export { action, loader };
export default function ImageUploadAdminPage() {

View File

@ -10,6 +10,7 @@ import { action } from "../actions/upload.server";
import { loader } from "../loaders/upload.server";
import { imgTypeToDimensions, imgTypeToStyle } from "../upload-constants";
import type { ImageUploadType } from "../upload-types";
export { action, loader };
export default function FileUploadPage() {

View File

@ -30,6 +30,7 @@ import {
} from "../leaderboards-constants";
import { seasonHasTopTen } from "../leaderboards-utils";
import { loader } from "../loaders/leaderboards.server";
export { loader };
import "../../top-search/top-search.css";

View File

@ -18,7 +18,8 @@ import { LFG_PAGE, navIconUrl, userEditProfilePage } from "~/utils/urls";
import { action } from "../actions/lfg.new.server";
import { LFG, TEAM_POST_TYPES, TIMEZONES } from "../lfg-constants";
import { loader } from "../loaders/lfg.new.server";
export { loader, action };
export { action, loader };
export const handle: SendouRouteHandle = {
i18n: ["lfg"],

View File

@ -28,7 +28,8 @@ import {
} from "../lfg-types";
import { loader } from "../loaders/lfg.server";
import styles from "./lfg.module.css";
export { loader, action };
export { action, loader };
export const handle: SendouRouteHandle = {
i18n: ["lfg"],

View File

@ -12,6 +12,7 @@ import {
} from "../components/NotificationList";
import { loader } from "../loaders/notifications.server";
import { useMarkNotificationsAsSeen } from "../notifications-hooks";
export { loader };
import styles from "./notifications.module.css";

View File

@ -8,6 +8,7 @@ import { action } from "../actions/plus.suggestions.comment.$tier.$userId.server
import { followUpCommentFormSchema } from "../plus-suggestions-schemas";
import { canAddCommentToSuggestionFE } from "../plus-suggestions-utils";
import type { PlusSuggestionsLoaderData } from "./plus.suggestions";
export { action };
export default function PlusCommentModalPage() {

View File

@ -9,6 +9,7 @@ import { PLUS_TIERS } from "../plus-suggestions-constants";
import { newSuggestionFormSchema } from "../plus-suggestions-schemas";
import { canSuggestNewUser } from "../plus-suggestions-utils";
import type { PlusSuggestionsLoaderData } from "./plus.suggestions";
export { action };
export default function PlusNewSuggestionModalPage() {

View File

@ -32,6 +32,7 @@ import {
canEditSuggestion,
canSuggestNewUser,
} from "../plus-suggestions-utils";
export { action, loader };
export const meta: MetaFunction = (args) => {

View File

@ -5,6 +5,7 @@ import { metaTags, type SerializeFrom } from "~/utils/remix";
import { PLUS_SERVER_DISCORD_URL, userPage } from "~/utils/urls";
import { loader } from "../loaders/plus.voting.results.server";
export { loader };
import "~/styles/plus-history.css";

View File

@ -15,6 +15,7 @@ import {
loader,
type PlusVotingLoaderData,
} from "../loaders/plus.voting.server";
export { action, loader };
export const meta: MetaFunction = (args) => {

View File

@ -36,7 +36,8 @@ import * as Scrim from "../core/Scrim";
import { loader } from "../loaders/scrims.$id.server";
import type { ScrimPost, ScrimPost as ScrimPostType } from "../scrims-types";
import styles from "./scrims.$id.module.css";
export { loader, action };
export { action, loader };
export const handle: SendouRouteHandle = {
i18n: ["scrims", "q"],

View File

@ -21,7 +21,8 @@ import { loader, type ScrimsNewLoaderData } from "../loaders/scrims.new.server";
import { SCRIM } from "../scrims-constants";
import { scrimsNewFormSchema } from "../scrims-schemas";
import styles from "./scrims.new.module.css";
export { loader, action };
export { action, loader };
export const handle: SendouRouteHandle = {
i18n: "scrims",

View File

@ -37,6 +37,7 @@ import * as Scrim from "../core/Scrim";
import { loader } from "../loaders/scrims.server";
import type { newRequestSchema } from "../scrims-schemas";
import type { ScrimFilters, ScrimPost } from "../scrims-types";
export { action, loader };
import styles from "./scrims.module.css";

View File

@ -74,7 +74,8 @@ import { action } from "../actions/q.match.$id.server";
import { matchEndedAtIndex } from "../core/match";
import { loader } from "../loaders/q.match.$id.server";
import { resolveGroupMemberOf } from "../q-match-utils";
export { loader, action };
export { action, loader };
import styles from "./q.match.$id.module.css";

View File

@ -45,7 +45,8 @@ import {
updateVoiceChatSchema,
updateWeaponPoolSchema,
} from "../q-settings-schemas";
export { loader, action };
export { action, loader };
import "../q-settings.css";

View File

@ -14,6 +14,7 @@ import type { SendouRouteHandle } from "~/utils/remix.server";
import { FAQ_PAGE, sendouQMatchPage, twitchUrl, userPage } from "~/utils/urls";
import { loader } from "../loaders/q.streams.server";
export { loader };
import styles from "./q.streams.module.css";

View File

@ -39,6 +39,7 @@ import { MemberAdder } from "../components/MemberAdder";
import { groupExpiryStatus } from "../core/groups";
import { loader } from "../loaders/q.looking.server";
import { FULL_GROUP_SIZE } from "../q-constants";
export { action, loader };
import styles from "./q.looking.module.css";

View File

@ -13,7 +13,8 @@ import { GroupLeaver } from "../components/GroupLeaver";
import { MemberAdder } from "../components/MemberAdder";
import { loader } from "../loaders/q.preparing.server";
import { FULL_GROUP_SIZE } from "../q-constants";
export { loader, action };
export { action, loader };
import styles from "./q.preparing.module.css";

View File

@ -41,7 +41,8 @@ import { action } from "../actions/q.server";
import { loader } from "../loaders/q.server";
import { FULL_GROUP_SIZE } from "../q-constants";
import { userCanJoinQueueAt } from "../q-utils";
export { loader, action };
export { action, loader };
import styles from "./q.module.css";

View File

@ -13,6 +13,7 @@ import { metaTags } from "~/utils/remix";
import type { SendouRouteHandle } from "~/utils/remix.server";
import { loader } from "../loaders/tiers.server";
export { loader };
export const meta: MetaFunction = (args) => {

View File

@ -23,7 +23,8 @@ import {
disallowScrimPickupsFromUntrustedSchema,
updateNoScreenSchema,
} from "../settings-schemas";
export { loader, action };
export { action, loader };
export const handle: SendouRouteHandle = {
breadcrumb: () => ({

View File

@ -20,6 +20,7 @@ import { TeamGoBackButton } from "~/features/team/components/TeamGoBackButton";
import { metaTags } from "~/utils/remix";
import { action } from "../actions/t.$customUrl.edit.server";
import { loader } from "../loaders/t.$customUrl.edit.server";
export { action, loader };
export const meta: MetaFunction = (args) => {

View File

@ -24,6 +24,7 @@ import type { TeamLoaderData } from "~/features/team/loaders/t.$customUrl.server
import invariant from "~/utils/invariant";
import { action } from "../actions/t.$customUrl.index.server";
import type * as TeamRepository from "../TeamRepository.server";
export { action };
export default function TeamIndexPage() {

View File

@ -7,7 +7,8 @@ import "../team.css";
import { action } from "../actions/t.$customUrl.join.server";
import { loader } from "../loaders/t.$customUrl.join.server";
export { loader, action };
export { action, loader };
export const handle: SendouRouteHandle = {
i18n: ["team"],

View File

@ -3,6 +3,7 @@ import { Main } from "~/components/Main";
import { TeamGoBackButton } from "~/features/team/components/TeamGoBackButton";
import { TeamResultsTable } from "~/features/team/components/TeamResultsTable";
import { loader } from "../loaders/t.$customUrl.results.server";
export { loader };
export default function TeamResultsPage() {

View File

@ -23,7 +23,8 @@ import { metaTags } from "~/utils/remix";
import { action } from "../actions/t.$customUrl.roster.server";
import { loader } from "../loaders/t.$customUrl.roster.server";
export { loader, action };
export { action, loader };
export const meta: MetaFunction = (args) => {
return metaTags({

View File

@ -9,6 +9,7 @@ import { metaTags, type SerializeFrom } from "~/utils/remix";
import type { SendouRouteHandle } from "~/utils/remix.server";
import { bskyUrl, navIconUrl, TEAM_SEARCH_PAGE, teamPage } from "~/utils/urls";
import { loader } from "../loaders/t.$customUrl.server";
export { loader };
import "../team.css";

View File

@ -25,7 +25,8 @@ import { action } from "../actions/t.server";
import { loader } from "../loaders/t.server";
import { TEAM, TEAMS_PER_PAGE } from "../team-constants";
import { createTeamSchema } from "../team-schemas";
export { loader, action };
export { action, loader };
import "../team.css";

View File

@ -17,7 +17,8 @@ import {
import { action } from "../actions/xsearch.player.$id.server";
import { PlacementsTable } from "../components/Placements";
import { loader } from "../loaders/xsearch.player.$id.server";
export { loader, action };
export { action, loader };
import "../top-search.css";

View File

@ -13,6 +13,7 @@ import { navIconUrl, topSearchPage } from "~/utils/urls";
import { PlacementsTable } from "../components/Placements";
import { loader } from "../loaders/xsearch.server";
import type { MonthYear } from "../top-search-utils";
export { loader };
import "../top-search.css";

View File

@ -20,6 +20,7 @@ import {
type FinalizeTournamentLoaderData,
loader,
} from "../loaders/to.$id.brackets.finalize.server";
export { action, loader };
export default function TournamentFinalizePage() {

View File

@ -34,6 +34,7 @@ import { BracketMapListDialog } from "../components/BracketMapListDialog";
import { TournamentTeamActions } from "../components/TournamentTeamActions";
import type { Bracket as BracketType } from "../core/Bracket";
import * as PreparedMaps from "../core/PreparedMaps";
export { action };
import "../tournament-bracket.css";

View File

@ -6,6 +6,7 @@ import { UsersIcon } from "../../../components/icons/Users";
import { tournamentBracketsPage } from "../../../utils/urls";
import { loader } from "../loaders/to.$id.divisions.server";
export { loader };
export default function TournamentDivisionsPage() {

View File

@ -26,6 +26,7 @@ import {
groupNumberToLetters,
tournamentMatchWebsocketRoom,
} from "../tournament-bracket-utils";
export { action, loader };
import "../tournament-bracket.css";

View File

@ -7,6 +7,7 @@ import { action } from "../actions/org.$slug.edit.server";
import { loader } from "../loaders/org.$slug.edit.server";
import { handle, meta } from "../routes/org.$slug";
import { organizationEditFormSchema } from "../tournament-organization-schemas";
export { action, handle, loader, meta };
export default function TournamentOrganizationEditPage() {

View File

@ -46,6 +46,7 @@ import { SocialLinksList } from "../components/SocialLinksList";
import { loader } from "../loaders/org.$slug.server";
import { TOURNAMENT_SERIES_EVENTS_PER_PAGE } from "../tournament-organization-constants";
import { updateIsEstablishedSchema } from "../tournament-organization-schemas";
export { action, loader };
import "../tournament-organization.css";

View File

@ -5,6 +5,7 @@ import { SendouForm } from "~/form/SendouForm";
import { useHasRole } from "~/modules/permissions/hooks";
import { action } from "../actions/org.new.server";
import { newOrganizationSchema } from "../tournament-organization-schemas";
export { action };
export default function NewOrganizationPage() {

View File

@ -16,6 +16,7 @@ import { SENDOUQ_SETTINGS_PAGE } from "~/utils/urls";
import { action } from "../actions/to.$id.subs.new.server";
import { loader } from "../loaders/to.$id.subs.new.server";
import { TOURNAMENT_SUB } from "../tournament-subs-constants";
export { action, loader };
import clsx from "clsx";

View File

@ -17,6 +17,7 @@ import type { SerializeFrom } from "~/utils/remix";
import { tournamentRegisterPage, userPage } from "~/utils/urls";
import { action } from "../actions/to.$id.subs.server";
import { loader } from "../loaders/to.$id.subs.server";
export { action, loader };
import styles from "./to.$id.subs.module.css";

View File

@ -13,6 +13,7 @@ import { action } from "../actions/to.$id.join.server";
import { loader } from "../loaders/to.$id.join.server";
import { validateCanJoinTeam } from "../tournament-utils";
import { useTournament } from "./to.$id";
export { action, loader };
export default function JoinTeamPage() {

View File

@ -67,7 +67,8 @@ import {
validateCounterPickMapPool,
} from "../tournament-utils";
import { useTournament } from "./to.$id";
export { loader, action };
export { action, loader };
export default function TournamentRegisterPage() {
const isMounted = useIsMounted();

View File

@ -37,7 +37,8 @@ import { action } from "../actions/to.$id.seeds.server";
import { loader } from "../loaders/to.$id.seeds.server";
import { useTournament } from "./to.$id";
import styles from "./to.$id.seeds.module.css";
export { loader, action };
export { action, loader };
export default function TournamentSeedsPage() {
const tournament = useTournament();

View File

@ -24,6 +24,7 @@ import * as Standings from "../core/Standings";
import type { PlayedSet } from "../core/sets.server";
import { loader } from "../loaders/to.$id.teams.$tid.server";
import { useTournament } from "./to.$id";
export { loader };
export const meta: MetaFunction<typeof loader> = (args) => {

View File

@ -26,6 +26,7 @@ import {
import { metaTags } from "../../../utils/remix";
import { loader, type TournamentLoaderData } from "../loaders/to.$id.server";
export { loader };
import "~/styles/calendar-event.css";

View File

@ -16,7 +16,8 @@ import { SubPageHeader } from "../components/SubPageHeader";
import { loader } from "../loaders/u.$identifier.admin.server";
import type { UserPageLoaderData } from "../loaders/u.$identifier.server";
import styles from "./u.$identifier.admin.module.css";
export { loader, action };
export { action, loader };
export default function UserAdminPage() {
const [, parentRoute] = useMatches();

View File

@ -12,6 +12,7 @@ import { action } from "../actions/u.$identifier.art.server";
import { SubPageHeader } from "../components/SubPageHeader";
import { loader } from "../loaders/u.$identifier.art.server";
import type { UserPageLoaderData } from "../loaders/u.$identifier.server";
export { action, loader };
export const handle: SendouRouteHandle = {

View File

@ -28,7 +28,8 @@ import {
} from "../loaders/u.$identifier.builds.server";
import type { UserPageLoaderData } from "../loaders/u.$identifier.server";
import { DEFAULT_BUILD_SORT } from "../user-page-constants";
export { loader, action };
export { action, loader };
import styles from "./u.$identifier.builds.module.css";

View File

@ -36,7 +36,7 @@ import { WidgetSettingsForm } from "../components/WidgetSettingsForm";
import { loader } from "../loaders/u.$identifier.edit-widgets.server";
import styles from "./u.$identifier.edit-widgets.module.css";
export { loader, action };
export { action, loader };
export default function EditWidgetsPage() {
const { t } = useTranslation(["user", "common"]);

View File

@ -16,7 +16,8 @@ import { loader } from "../loaders/u.$identifier.edit.server";
import type { UserPageLoaderData } from "../loaders/u.$identifier.server";
import { COUNTRY_CODES } from "../user-page-constants";
import { userEditProfileBaseSchema } from "../user-page-schemas";
export { loader, action };
export { action, loader };
export const handle: SendouRouteHandle = {
i18n: ["user"],

View File

@ -40,6 +40,7 @@ import { Widget } from "../components/Widget";
import { loader } from "../loaders/u.$identifier.index.server";
import type { UserPageLoaderData } from "../loaders/u.$identifier.server";
import styles from "./u.$identifier.module.css";
export { loader };
export const handle: SendouRouteHandle = {

View File

@ -6,7 +6,8 @@ import { UserResultsTable } from "~/features/user-page/components/UserResultsTab
import { action } from "../actions/u.$identifier.results.highlights.server";
import { loader } from "../loaders/u.$identifier.results.server";
export { loader, action };
export { action, loader };
export default function ResultHighlightsEditPage() {
const { t } = useTranslation(["common", "user"]);

View File

@ -10,6 +10,7 @@ import { SendouButton } from "../../../components/elements/Button";
import { SubPageHeader } from "../components/SubPageHeader";
import { loader } from "../loaders/u.$identifier.results.server";
import type { UserPageLoaderData } from "../loaders/u.$identifier.server";
export { loader };
export default function UserResultsPage() {

View File

@ -63,6 +63,7 @@ import {
type UserSeasonsPageLoaderData,
} from "../loaders/u.$identifier.seasons.server";
import type { UserPageLoaderData } from "../loaders/u.$identifier.server";
export { loader };
export const handle: SendouRouteHandle = {

View File

@ -25,6 +25,7 @@ import {
loader,
type UserPageLoaderData,
} from "../loaders/u.$identifier.server";
export { loader };
import "~/styles/u.css";

View File

@ -8,6 +8,7 @@ import { newVodPage, userPage } from "~/utils/urls";
import { SubPageHeader } from "../components/SubPageHeader";
import type { UserPageLoaderData } from "../loaders/u.$identifier.server";
import { loader } from "../loaders/u.$identifier.vods.server";
export { loader };
export const handle: SendouRouteHandle = {

View File

@ -20,6 +20,7 @@ import {
} from "~/utils/urls";
import { loader } from "../loaders/u.server";
export { loader };
import "~/styles/u.css";

View File

@ -33,7 +33,8 @@ import { loader } from "../loaders/vods.$id.server";
import type { Vod } from "../vods-types";
import { canEditVideo, secondsToHoursMinutesSecondString } from "../vods-utils";
import styles from "./vods.$id.module.css";
export { loader, action };
export { action, loader };
export const handle: SendouRouteHandle = {
breadcrumb: ({ match }) => {

View File

@ -16,6 +16,7 @@ import { VodListing } from "../components/VodListing";
import { loader } from "../loaders/vods.server";
import { VODS_PAGE_BATCH_SIZE, videoMatchTypes } from "../vods-constants";
import styles from "./vods.module.css";
export { loader };
export const handle: SendouRouteHandle = {