Development #24

Merged
kyle merged 35 commits from development into main 2026-08-28 10:40:10 -05:00
22 changed files with 511 additions and 799 deletions
Showing only changes of commit 1cc75591fa - Show all commits
+6 -1
View File
@@ -3,7 +3,7 @@ import { msg } from "@lingui/core/macro";
import { AdminDashboard } from "@/features/admin"; import { AdminDashboard } from "@/features/admin";
import { tournamentQueries } from "@/features/tournaments/queries"; import { tournamentQueries } from "@/features/tournaments/queries";
import { telemetryQueries } from "@/features/telemetry/queries"; import { telemetryQueries } from "@/features/telemetry/queries";
import { lastNDays } from "@/features/telemetry/range"; import { isoDay, lastNDays } from "@/features/telemetry/range";
import { prefetchServerQuery } from "@/lib/tanstack-query/utils/prefetch"; import { prefetchServerQuery } from "@/lib/tanstack-query/utils/prefetch";
export const Route = createFileRoute("/_authed/admin/")({ export const Route = createFileRoute("/_authed/admin/")({
@@ -15,6 +15,11 @@ export const Route = createFileRoute("/_authed/admin/")({
context.queryClient, context.queryClient,
telemetryQueries.errorGroups({ from: month.from, to: month.to }) telemetryQueries.errorGroups({ from: month.from, to: month.to })
); );
const today = isoDay(new Date());
prefetchServerQuery(
context.queryClient,
telemetryQueries.rollups({ metrics: ["server_fn.count"], from: today, to: today })
);
}, },
loader: () => ({ loader: () => ({
header: { header: {
+28
View File
@@ -0,0 +1,28 @@
import { Text, UnstyledButton } from "@mantine/core";
import { Icon } from "@phosphor-icons/react";
import classes from "./nav-tile.module.css";
interface NavTileProps {
label: string;
Icon: Icon;
onClick?: () => void;
disabled?: boolean;
}
/** A single square-ish nav tile with icon-over-label and press feedback. */
export const NavTile = ({ label, Icon, onClick, disabled }: NavTileProps) => (
<UnstyledButton
className={`${classes.tile} flxn-tile`}
onClick={onClick}
disabled={disabled}
>
<span className={`${classes.icon} flxn-tile-icon`}>
<Icon size={22} weight="bold" />
</span>
<Text size="xs" fw={600} lineClamp={2} lh={1.2}>
{label}
</Text>
</UnstyledButton>
);
export default NavTile;
@@ -0,0 +1,43 @@
.tile {
-webkit-tap-highlight-color: transparent;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 8px;
padding: 14px 8px;
border-radius: var(--mantine-radius-md);
border: 1px solid var(--mantine-color-default-border);
background-color: var(--mantine-color-body);
text-align: center;
}
.icon {
color: var(--mantine-primary-color-filled);
display: flex;
}
@media (hover: hover) {
.tile:hover:not(:disabled) {
background-color: var(--mantine-color-default-hover);
}
}
.tile:active:not(:disabled) {
background-color: var(--mantine-color-default-hover);
}
.tile:disabled {
opacity: 0.5;
cursor: default;
}
@media (prefers-reduced-motion: no-preference) {
.tile {
transition: background-color 120ms ease-out, transform 120ms cubic-bezier(0.32, 0.72, 0, 1);
}
.tile:active:not(:disabled) {
transform: scale(0.97);
}
}
@@ -1,87 +0,0 @@
import { Card, Group, Stack, Text } from "@mantine/core";
import { Trans } from "@lingui/react/macro";
import { useNavigate } from "@tanstack/react-router";
import { CheckCircleIcon, XCircleIcon } from "@phosphor-icons/react";
import { useServerQuery } from "@/lib/tanstack-query/hooks";
import { searchActivities } from "@/features/activities/server";
import { activityKeys } from "@/features/activities/queries";
import { RelativeTime } from "@/features/telemetry/components/shared";
import type { PlayerInfo } from "@/features/players/types";
const FEED_PARAMS = { perPage: 10 } as const;
const playerName = (player?: string | PlayerInfo): string | null => {
if (!player || typeof player === "string") return null;
return [player.first_name, player.last_name].filter(Boolean).join(" ") || null;
};
export const ActivityFeed = () => {
const navigate = useNavigate();
const { data } = useServerQuery({
queryKey: activityKeys.search(FEED_PARAMS),
queryFn: () => searchActivities({ data: FEED_PARAMS }),
options: {
refetchInterval: 30_000,
},
});
return (
<Card withBorder radius="md" p="md">
<Stack gap="sm">
<Group justify="space-between">
<Text fw={600} size="sm">
<Trans>Recent activity</Trans>
</Text>
</Group>
<Stack gap="xs">
{data?.items.map((activity) => {
const name = playerName(activity.player);
return (
<Group
key={activity.id}
gap="xs"
wrap="nowrap"
onClick={() => navigate({ to: "/admin/telemetry/functions" })}
style={{ cursor: "pointer" }}
>
{activity.success ? (
<CheckCircleIcon
size={14}
color="var(--mantine-color-green-6)"
style={{ flexShrink: 0 }}
/>
) : (
<XCircleIcon
size={14}
color="var(--mantine-color-red-6)"
style={{ flexShrink: 0 }}
/>
)}
<Text size="xs" truncate style={{ flex: 1, minWidth: 0 }}>
{activity.name}
{name && (
<Text component="span" size="xs" c="dimmed">
{" "}
· {name}
</Text>
)}
</Text>
<Text size="xs" c="dimmed" style={{ flexShrink: 0 }}>
<RelativeTime date={activity.created} />
</Text>
</Group>
);
})}
{data && data.items.length === 0 && (
<Text size="sm" c="dimmed">
<Trans>No activity yet</Trans>
</Text>
)}
</Stack>
</Stack>
</Card>
);
};
export default ActivityFeed;
@@ -1,62 +0,0 @@
import { Badge, Card, Group, Stack, Text, UnstyledButton } from "@mantine/core";
import { Trans } from "@lingui/react/macro";
import { useNavigate } from "@tanstack/react-router";
import { CheckCircleIcon, WarningCircleIcon } from "@phosphor-icons/react";
import { useClientErrorGroups } from "@/features/telemetry/queries";
import { RelativeTime } from "@/features/telemetry/components/shared";
import { lastNDays } from "@/features/telemetry/range";
export const ErrorsCard = () => {
const navigate = useNavigate();
const range = lastNDays(30);
const { data: groups } = useClientErrorGroups({ from: range.from, to: range.to });
return (
<UnstyledButton w="100%" onClick={() => navigate({ to: "/admin/telemetry/errors" })}>
<Card withBorder radius="md" p="md">
<Stack gap="sm">
<Group justify="space-between" wrap="nowrap">
<Text fw={600} size="sm">
<Trans>Client errors</Trans>
</Text>
{groups && groups.length > 0 ? (
<Badge color="red" variant="light">
{groups.length}
</Badge>
) : (
<CheckCircleIcon size={18} color="var(--mantine-color-green-6)" weight="fill" />
)}
</Group>
{groups && groups.length > 0 ? (
<Stack gap="xs">
{groups.slice(0, 3).map((group) => (
<Group key={group.group_hash} gap="xs" wrap="nowrap" align="flex-start">
<WarningCircleIcon
size={14}
color="var(--mantine-color-red-6)"
style={{ flexShrink: 0, marginTop: 2 }}
/>
<Stack gap={0} style={{ minWidth: 0 }}>
<Text size="xs" lineClamp={1}>
{group.sample.message}
</Text>
<Text size="xs" c="dimmed">
<RelativeTime date={group.lastSeen} />
</Text>
</Stack>
</Group>
))}
</Stack>
) : (
<Text size="sm" c="dimmed">
<Trans>No unresolved errors</Trans>
</Text>
)}
</Stack>
</Card>
</UnstyledButton>
);
};
export default ErrorsCard;
@@ -1,57 +1,51 @@
import { Suspense } from "react"; import { Suspense } from "react";
import { Box, SimpleGrid, Stack } from "@mantine/core"; import { Group, SimpleGrid, Skeleton, Stack } from "@mantine/core";
import { CardSkeleton, StatTileSkeleton } from "@/components/skeletons";
import QuietBoundary from "./quiet-boundary"; import QuietBoundary from "./quiet-boundary";
import NowStrip from "./now-strip"; import SectionBox from "./section-box";
import TournamentCard from "./tournament-card"; import StatusStrip from "./status-strip";
import UsageCard from "./usage-card"; import TournamentSection from "./tournament-section";
import ErrorsCard from "./errors-card";
import ActivityFeed from "./activity-feed";
import ToolsList from "./tools-list"; import ToolsList from "./tools-list";
const NowStripSkeleton = () => ( const StripSkeleton = () => (
<SimpleGrid cols={3} spacing="xs"> <SectionBox>
<StatTileSkeleton /> <Group grow>
<StatTileSkeleton /> {[0, 1, 2].map((i) => (
<StatTileSkeleton /> <Stack key={i} gap={4} align="center">
</SimpleGrid> <Skeleton height={22} width={32} radius="sm" />
<Skeleton height={10} width={56} radius="sm" />
</Stack>
))}
</Group>
</SectionBox>
);
const TournamentSkeleton = () => (
<SectionBox>
<Skeleton height={24} width={180} radius="sm" />
<SimpleGrid cols={3} spacing="sm" mt="sm">
<Skeleton height={72} radius="md" />
<Skeleton height={72} radius="md" />
<Skeleton height={72} radius="md" />
</SimpleGrid>
</SectionBox>
); );
export const AdminDashboard = () => ( export const AdminDashboard = () => (
<Stack gap="md" pb="md"> <>
<Stack gap="md" px="md" pt="md"> <QuietBoundary>
<QuietBoundary> <Suspense fallback={<StripSkeleton />}>
<Suspense fallback={<NowStripSkeleton />}> <SectionBox>
<NowStrip /> <StatusStrip />
</Suspense> </SectionBox>
</QuietBoundary> </Suspense>
<SimpleGrid cols={{ base: 1, md: 2 }} spacing="md"> </QuietBoundary>
<QuietBoundary> <QuietBoundary>
<Suspense fallback={<CardSkeleton />}> <Suspense fallback={<TournamentSkeleton />}>
<TournamentCard /> <TournamentSection />
</Suspense> </Suspense>
</QuietBoundary> </QuietBoundary>
<QuietBoundary> <ToolsList />
<Suspense fallback={<CardSkeleton />}> </>
<ErrorsCard />
</Suspense>
</QuietBoundary>
</SimpleGrid>
<SimpleGrid cols={{ base: 1, md: 2 }} spacing="md">
<QuietBoundary>
<Suspense fallback={<CardSkeleton />}>
<UsageCard />
</Suspense>
</QuietBoundary>
<QuietBoundary>
<ActivityFeed />
</QuietBoundary>
</SimpleGrid>
</Stack>
<Box>
<ToolsList />
</Box>
</Stack>
); );
export default AdminDashboard; export default AdminDashboard;
@@ -1,61 +0,0 @@
import { useMemo } from "react";
import { SimpleGrid } from "@mantine/core";
import { useLingui } from "@lingui/react/macro";
import { useNavigate } from "@tanstack/react-router";
import {
useClientErrorGroups,
useRollupRange,
useTelemetryRuntimeStatus,
} from "@/features/telemetry/queries";
import { StatTile } from "@/features/telemetry/components/charts";
import { isoDay, lastNDays, listDays } from "@/features/telemetry/range";
export const NowStrip = () => {
const { t } = useLingui();
const navigate = useNavigate();
const range = useMemo(() => lastNDays(7), []);
const { data: status } = useTelemetryRuntimeStatus();
const { data: errorGroups } = useClientErrorGroups({
from: lastNDays(30).from,
to: range.to,
});
const { data: rollups } = useRollupRange({
metrics: ["server_fn.count"],
from: range.from,
to: range.to,
});
const { callsToday, callsSeries } = useMemo(() => {
const byDate = new Map<string, number>();
for (const row of rollups ?? []) {
byDate.set(row.date, (byDate.get(row.date) ?? 0) + row.value);
}
return {
callsToday: byDate.get(isoDay(new Date())) ?? 0,
callsSeries: listDays(range).map((day) => byDate.get(day) ?? 0),
};
}, [rollups, range]);
const unresolved = errorGroups?.length ?? 0;
return (
<SimpleGrid cols={3} spacing="xs">
<StatTile label={t`Online now`} value={status?.activeSseConnections ?? 0} />
<StatTile
label={t`Open errors`}
value={unresolved}
caption={undefined}
onClick={() => navigate({ to: "/admin/telemetry/errors" })}
/>
<StatTile
label={t`Calls today`}
value={callsToday.toLocaleString()}
spark={callsSeries}
onClick={() => navigate({ to: "/admin/telemetry/usage" })}
/>
</SimpleGrid>
);
};
export default NowStrip;
@@ -1,5 +1,5 @@
import { Component, ReactNode } from "react"; import { Component, ReactNode } from "react";
import { Card, Text } from "@mantine/core"; import { Text } from "@mantine/core";
import { Trans } from "@lingui/react/macro"; import { Trans } from "@lingui/react/macro";
interface QuietBoundaryProps { interface QuietBoundaryProps {
@@ -20,11 +20,9 @@ export class QuietBoundary extends Component<QuietBoundaryProps, QuietBoundarySt
render() { render() {
if (this.state.hasError) { if (this.state.hasError) {
return ( return (
<Card withBorder radius="md" p="md"> <Text size="sm" c="dimmed">
<Text size="sm" c="dimmed"> <Trans>Unavailable right now</Trans>
<Trans>Unavailable right now</Trans> </Text>
</Text>
</Card>
); );
} }
return this.props.children; return this.props.children;
@@ -0,0 +1,14 @@
import { ReactNode } from "react";
import { Box } from "@mantine/core";
export const SectionBox = ({ children }: { children: ReactNode }) => (
<Box
px="md"
py="sm"
style={{ borderBottom: "1px solid var(--mantine-color-default-border)" }}
>
{children}
</Box>
);
export default SectionBox;
@@ -0,0 +1,74 @@
import { useMemo } from "react";
import { Group, Stack, Text, UnstyledButton } from "@mantine/core";
import { useLingui } from "@lingui/react/macro";
import { useNavigate } from "@tanstack/react-router";
import {
useClientErrorGroups,
useRollupRange,
useTelemetryRuntimeStatus,
} from "@/features/telemetry/queries";
import { isoDay, lastNDays } from "@/features/telemetry/range";
interface StatProps {
value: string | number;
label: string;
alert?: boolean;
onClick: () => void;
}
const Stat = ({ value, label, alert, onClick }: StatProps) => (
<UnstyledButton className="flxn-press" onClick={onClick}>
<Stack gap={0} align="center">
<Text fz="lg" fw={700} lh={1.3} c={alert ? "red" : undefined}>
{value}
</Text>
<Text size="xs" c="dimmed">
{label}
</Text>
</Stack>
</UnstyledButton>
);
export const StatusStrip = () => {
const { t } = useLingui();
const navigate = useNavigate();
const today = useMemo(() => isoDay(new Date()), []);
const month = useMemo(() => lastNDays(30), []);
const { data: status } = useTelemetryRuntimeStatus();
const { data: errorGroups } = useClientErrorGroups({ from: month.from, to: month.to });
const { data: rollups } = useRollupRange({
metrics: ["server_fn.count"],
from: today,
to: today,
});
const callsToday = useMemo(
() => (rollups ?? []).reduce((sum, row) => sum + row.value, 0),
[rollups]
);
const openErrors = errorGroups?.length ?? 0;
return (
<Group grow>
<Stat
value={status?.activeSseConnections ?? 0}
label={t`Online`}
onClick={() => navigate({ to: "/admin/telemetry/players" })}
/>
<Stat
value={openErrors}
label={t`Open errors`}
alert={openErrors > 0}
onClick={() => navigate({ to: "/admin/telemetry/errors" })}
/>
<Stat
value={callsToday.toLocaleString()}
label={t`Calls today`}
onClick={() => navigate({ to: "/admin/telemetry/usage" })}
/>
</Group>
);
};
export default StatusStrip;
@@ -6,6 +6,7 @@ import {
TrophyIcon, TrophyIcon,
MedalIcon, MedalIcon,
CrownIcon, CrownIcon,
PulseIcon,
} from "@phosphor-icons/react"; } from "@phosphor-icons/react";
import ListLink from "@/components/list-link"; import ListLink from "@/components/list-link";
import ListButton from "@/components/list-button"; import ListButton from "@/components/list-button";
@@ -50,6 +51,11 @@ export const ToolsList = () => {
Icon={TrophyIcon} Icon={TrophyIcon}
to="/admin/tournaments" to="/admin/tournaments"
/> />
<ListLink
label={t`Telemetry`}
Icon={PulseIcon}
to="/admin/telemetry/functions"
/>
<ListLink <ListLink
label={t`Award Badges`} label={t`Award Badges`}
Icon={CrownIcon} Icon={CrownIcon}
@@ -1,76 +0,0 @@
import { Button, Card, Group, Stack, Text } from "@mantine/core";
import { Trans, useLingui } from "@lingui/react/macro";
import { useNavigate } from "@tanstack/react-router";
import { PlayIcon, TrophyIcon, UsersThreeIcon, GearIcon } from "@phosphor-icons/react";
import { useCurrentTournament } from "@/features/tournaments/queries";
import { Countdown } from "@/components/countdown";
export const TournamentCard = () => {
const { t } = useLingui();
const navigate = useNavigate();
const { data: tournament } = useCurrentTournament();
if (!tournament) {
return (
<Card withBorder radius="md" p="md">
<Stack gap="sm">
<Text size="sm" c="dimmed">
<Trans>No tournaments yet</Trans>
</Text>
<Button
variant="light"
leftSection={<TrophyIcon size={16} />}
onClick={() => navigate({ to: "/admin/tournaments" })}
>
<Trans>Manage Tournaments</Trans>
</Button>
</Stack>
</Card>
);
}
const upcoming = !!tournament.start_time && Date.parse(tournament.start_time) > Date.now();
return (
<Card withBorder radius="md" p="md">
<Stack gap="sm">
<Group justify="space-between" align="flex-start" wrap="nowrap">
<Stack gap={2}>
<Text fw={600} truncate>
{tournament.name}
</Text>
{upcoming && (
<Countdown date={new Date(tournament.start_time)} label={t`Starts in`} />
)}
</Stack>
<TrophyIcon size={20} />
</Group>
<Button
leftSection={<PlayIcon size={16} weight="fill" />}
fullWidth
onClick={() => navigate({ to: `/admin/tournaments/run/${tournament.id}` })}
>
<Trans>Run Tournament</Trans>
</Button>
<Group grow>
<Button
variant="light"
leftSection={<UsersThreeIcon size={16} />}
onClick={() => navigate({ to: `/admin/tournaments/${tournament.id}/enrollment` })}
>
<Trans>Enrollment</Trans>
</Button>
<Button
variant="light"
leftSection={<GearIcon size={16} />}
onClick={() => navigate({ to: `/admin/tournaments/${tournament.id}` })}
>
<Trans>Manage</Trans>
</Button>
</Group>
</Stack>
</Card>
);
};
export default TournamentCard;
@@ -0,0 +1,48 @@
import { SimpleGrid, Text, Title } from "@mantine/core";
import { useLingui } from "@lingui/react/macro";
import { useNavigate } from "@tanstack/react-router";
import { GearIcon, PlayIcon, UsersThreeIcon } from "@phosphor-icons/react";
import { useCurrentTournament } from "@/features/tournaments/queries";
import { NavTile } from "@/components/nav-tile";
import { Countdown } from "@/components/countdown";
import SectionBox from "./section-box";
export const TournamentSection = () => {
const { t } = useLingui();
const navigate = useNavigate();
const { data: tournament } = useCurrentTournament();
if (!tournament) return null;
const upcoming = !!tournament.start_time && Date.parse(tournament.start_time) > Date.now();
return (
<SectionBox>
<Title order={3}>{tournament.name}</Title>
{upcoming && (
<Text size="sm" c="dimmed" component="div">
<Countdown date={new Date(tournament.start_time)} label={t`Starts in`} />
</Text>
)}
<SimpleGrid cols={3} spacing="sm" mt="sm">
<NavTile
label={t`Run`}
Icon={PlayIcon}
onClick={() => navigate({ to: `/admin/tournaments/run/${tournament.id}` })}
/>
<NavTile
label={t`Enrollment`}
Icon={UsersThreeIcon}
onClick={() => navigate({ to: `/admin/tournaments/${tournament.id}/enrollment` })}
/>
<NavTile
label={t`Manage`}
Icon={GearIcon}
onClick={() => navigate({ to: `/admin/tournaments/${tournament.id}` })}
/>
</SimpleGrid>
</SectionBox>
);
};
export default TournamentSection;
@@ -1,55 +0,0 @@
import { useMemo } from "react";
import { Card, Group, Stack, Text, UnstyledButton } from "@mantine/core";
import { Trans, useLingui } from "@lingui/react/macro";
import { useNavigate } from "@tanstack/react-router";
import { useRollupRange } from "@/features/telemetry/queries";
import { Sparkline } from "@/features/telemetry/components/charts";
import { fillDailySeries, lastNDays, listDays } from "@/features/telemetry/range";
export const UsageCard = () => {
const { t } = useLingui();
const navigate = useNavigate();
const range = useMemo(() => lastNDays(7), []);
const { data: rollups } = useRollupRange({
metrics: ["dau", "page_view.count"],
from: range.from,
to: range.to,
});
const { dauSeries, pageViewSeries } = useMemo(() => {
const days = listDays(range);
return {
dauSeries: fillDailySeries(rollups ?? [], "dau", "", days),
pageViewSeries: fillDailySeries(rollups ?? [], "page_view.count", "", days),
};
}, [rollups, range]);
return (
<UnstyledButton w="100%" onClick={() => navigate({ to: "/admin/telemetry/usage" })}>
<Card withBorder radius="md" p="md">
<Stack gap="sm">
<Group justify="space-between">
<Text fw={600} size="sm">
<Trans>Usage, 7 days</Trans>
</Text>
</Group>
<Stack gap={4}>
<Text size="xs" c="dimmed">
<Trans>Active players</Trans>
</Text>
<Sparkline data={dauSeries} height={36} showArea label={t`Daily active players`} />
</Stack>
<Stack gap={4}>
<Text size="xs" c="dimmed">
<Trans>Page views</Trans>
</Text>
<Sparkline data={pageViewSeries} height={36} showArea label={t`Daily page views`} />
</Stack>
</Stack>
</Card>
</UnstyledButton>
);
};
export default UsageCard;
@@ -1,5 +1,5 @@
import { ReactNode } from "react"; import { ReactNode } from "react";
import { Box, Card, Group, Stack, Text, UnstyledButton } from "@mantine/core"; import { Box, Group, Stack, Text, UnstyledButton } from "@mantine/core";
import Sparkline from "./sparkline"; import Sparkline from "./sparkline";
interface StatTileProps { interface StatTileProps {
@@ -13,12 +13,9 @@ interface StatTileProps {
export const StatTile = ({ label, value, delta, spark, caption, onClick }: StatTileProps) => { export const StatTile = ({ label, value, delta, spark, caption, onClick }: StatTileProps) => {
const content = ( const content = (
<Stack gap={4}> <Stack gap={2}>
<Text size="xs" c="dimmed">
{label}
</Text>
<Group gap="xs" align="baseline" wrap="nowrap"> <Group gap="xs" align="baseline" wrap="nowrap">
<Text fz={24} fw={600} lh={1.2}> <Text fz="xl" fw={700} lh={1.2}>
{value} {value}
</Text> </Text>
{delta !== undefined && delta !== 0 && ( {delta !== undefined && delta !== 0 && (
@@ -28,6 +25,9 @@ export const StatTile = ({ label, value, delta, spark, caption, onClick }: StatT
</Text> </Text>
)} )}
</Group> </Group>
<Text size="xs" c="dimmed">
{label}
</Text>
{caption && <Box>{caption}</Box>} {caption && <Box>{caption}</Box>}
{spark && spark.length > 0 && <Sparkline data={spark} height={28} />} {spark && spark.length > 0 && <Sparkline data={spark} height={28} />}
</Stack> </Stack>
@@ -35,19 +35,13 @@ export const StatTile = ({ label, value, delta, spark, caption, onClick }: StatT
if (onClick) { if (onClick) {
return ( return (
<UnstyledButton onClick={onClick} w="100%"> <UnstyledButton className="flxn-press" onClick={onClick} w="100%">
<Card withBorder radius="md" p="md"> {content}
{content}
</Card>
</UnstyledButton> </UnstyledButton>
); );
} }
return ( return content;
<Card withBorder radius="md" p="md">
{content}
</Card>
);
}; };
export default StatTile; export default StatTile;
@@ -2,7 +2,7 @@ import { Suspense, useMemo, useState } from "react";
import { Trans, useLingui } from "@lingui/react/macro"; import { Trans, useLingui } from "@lingui/react/macro";
import { import {
Badge, Badge,
Card, Divider,
Group, Group,
SegmentedControl, SegmentedControl,
SimpleGrid, SimpleGrid,
@@ -10,7 +10,7 @@ import {
Text, Text,
Title, Title,
} from "@mantine/core"; } from "@mantine/core";
import { CardSkeleton, StatTileSkeleton } from "@/components/skeletons"; import { ListSkeleton, StatTileSkeleton } from "@/components/skeletons";
import { useRollupRange } from "../queries"; import { useRollupRange } from "../queries";
import { fillDailySeries, lastNDays, latestValue, listDays, sumByDim } from "../range"; import { fillDailySeries, lastNDays, latestValue, listDays, sumByDim } from "../range";
import { BarList, Sparkline, StatTile } from "./charts"; import { BarList, Sparkline, StatTile } from "./charts";
@@ -171,30 +171,30 @@ const UsageSections = ({ from, to }: { from: string; to: string }) => {
/> />
<StatTile label={<Trans>Sessions</Trans>} value={sessions.toLocaleString()} /> <StatTile label={<Trans>Sessions</Trans>} value={sessions.toLocaleString()} />
</SimpleGrid> </SimpleGrid>
<Card withBorder radius="md" p="md"> <Stack gap="xs">
<Stack gap="xs"> <Text size="xs" c="dimmed">
<Text size="xs" c="dimmed"> <Trans>Page views by route</Trans>
<Trans>Page views by route</Trans> </Text>
</Text> <BarList items={pageViewItems} />
<BarList items={pageViewItems} /> </Stack>
</Stack>
</Card>
</Stack> </Stack>
<Divider />
<Stack gap="sm"> <Stack gap="sm">
<Title order={4}> <Title order={4}>
<Trans>Server functions</Trans> <Trans>Server functions</Trans>
</Title> </Title>
<Card withBorder radius="md" p="md"> <Stack gap="xs">
<Stack gap="xs"> <Text size="xs" c="dimmed">
<Text size="xs" c="dimmed"> <Trans>Top functions by call count</Trans>
<Trans>Top functions by call count</Trans> </Text>
</Text> <BarList items={serverFnItems} />
<BarList items={serverFnItems} /> </Stack>
</Stack>
</Card>
</Stack> </Stack>
<Divider />
<Stack gap="sm"> <Stack gap="sm">
<Title order={4}> <Title order={4}>
<Trans>Errors</Trans> <Trans>Errors</Trans>
@@ -206,6 +206,8 @@ const UsageSections = ({ from, to }: { from: string; to: string }) => {
/> />
</Stack> </Stack>
<Divider />
<Stack gap="sm"> <Stack gap="sm">
<Title order={4}> <Title order={4}>
<Trans>Vitals</Trans> <Trans>Vitals</Trans>
@@ -261,14 +263,13 @@ export const UsageScreen = () => {
<Suspense <Suspense
fallback={ fallback={
<Stack gap="lg"> <Stack gap="lg">
<StatTileSkeleton withCard align="row" /> <StatTileSkeleton align="row" />
<SimpleGrid cols={3} spacing="sm"> <SimpleGrid cols={3} spacing="sm">
<StatTileSkeleton withCard /> <StatTileSkeleton />
<StatTileSkeleton withCard /> <StatTileSkeleton />
<StatTileSkeleton withCard /> <StatTileSkeleton />
</SimpleGrid> </SimpleGrid>
<CardSkeleton withAvatar={false} withBadge={false} /> <ListSkeleton rows={6} withTrailing="text" />
<CardSkeleton withAvatar={false} withBadge={false} />
</Stack> </Stack>
} }
> >
@@ -1,5 +1,5 @@
import { useTournament } from "../queries"; import { useTournament } from "../queries";
import { Box, List } from "@mantine/core"; import { List } from "@mantine/core";
import ListButton from "@/components/list-button"; import ListButton from "@/components/list-button";
import Sheet from "@/components/sheet/sheet"; import Sheet from "@/components/sheet/sheet";
import TournamentForm from "./tournament-form"; import TournamentForm from "./tournament-form";
@@ -12,9 +12,7 @@ import {
import { useSheet } from "@/hooks/use-sheet"; import { useSheet } from "@/hooks/use-sheet";
import ListLink from "@/components/list-link"; import ListLink from "@/components/list-link";
import EditRules from "./edit-rules"; import EditRules from "./edit-rules";
import Button from "@/components/button"; import { useLingui } from "@lingui/react/macro";
import { Trans, useLingui } from "@lingui/react/macro";
import { useNavigate } from "@tanstack/react-router";
interface ManageTournamentProps { interface ManageTournamentProps {
tournamentId: string; tournamentId: string;
@@ -22,7 +20,6 @@ interface ManageTournamentProps {
const ManageTournament = ({ tournamentId }: ManageTournamentProps) => { const ManageTournament = ({ tournamentId }: ManageTournamentProps) => {
const { t } = useLingui(); const { t } = useLingui();
const navigate = useNavigate();
const { data: tournament } = useTournament(tournamentId); const { data: tournament } = useTournament(tournamentId);
if (!tournament) throw new Error("Tournament not found."); if (!tournament) throw new Error("Tournament not found.");
@@ -39,18 +36,12 @@ const ManageTournament = ({ tournamentId }: ManageTournamentProps) => {
return ( return (
<> <>
<Box px="md" py="md">
<Button
leftSection={<TreeStructureIcon weight="bold" size={20} />}
onClick={() =>
navigate({ to: `/admin/tournaments/run/${tournamentId}` })
}
>
<Trans>Run Tournament</Trans>
</Button>
</Box>
<List p="0"> <List p="0">
<ListLink
label={t`Run Tournament`}
Icon={TreeStructureIcon}
to={`/admin/tournaments/run/${tournamentId}`}
/>
<ListLink <ListLink
label={t`Enrollment & Teams`} label={t`Enrollment & Teams`}
Icon={UsersThreeIcon} Icon={UsersThreeIcon}
@@ -30,28 +30,9 @@ const RulesContent = lazy(
() => import("../../upcoming-tournament/rules-content") () => import("../../upcoming-tournament/rules-content")
); );
interface NavTileProps { import { NavTile } from "@/components/nav-tile";
label: string;
Icon: Icon;
onClick?: () => void;
disabled?: boolean;
}
/** A single square-ish nav tile with icon-over-label and press feedback. */ export { NavTile };
export const NavTile = ({ label, Icon, onClick, disabled }: NavTileProps) => (
<UnstyledButton
className={`${classes.tile} flxn-tile`}
onClick={onClick}
disabled={disabled}
>
<span className={`${classes.icon} flxn-tile-icon`}>
<Icon size={22} weight="bold" />
</span>
<Text size="xs" fw={600} lineClamp={2} lh={1.2}>
{label}
</Text>
</UnstyledButton>
);
interface NavGridProps { interface NavGridProps {
tournament: Tournament; tournament: Tournament;
+51 -82
View File
@@ -153,7 +153,7 @@ msgstr "{0}ms"
msgid "{count, plural, one {Players (#)} other {Players (#)}}" msgid "{count, plural, one {Players (#)} other {Players (#)}}"
msgstr "{count, plural, one {Spieler (#)} other {Spieler (#)}}" msgstr "{count, plural, one {Spieler (#)} other {Spieler (#)}}"
#: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:134 #: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:115
#: src/features/tournaments/components/upcoming-tournament/team-list-button.tsx:24 #: src/features/tournaments/components/upcoming-tournament/team-list-button.tsx:24
msgid "{count, plural, one {Teams (#)} other {Teams (#)}}" msgid "{count, plural, one {Teams (#)} other {Teams (#)}}"
msgstr "{count, plural, one {Teams (#)} other {Teams (#)}}" msgstr "{count, plural, one {Teams (#)} other {Teams (#)}}"
@@ -355,7 +355,7 @@ msgstr "2. Frühere Abgabe"
msgid "2nd place" msgid "2nd place"
msgstr "2. Platz" msgstr "2. Platz"
#: src/features/telemetry/components/usage-screen.tsx:256 #: src/features/telemetry/components/usage-screen.tsx:258
msgid "30d" msgid "30d"
msgstr "30 T" msgstr "30 T"
@@ -371,7 +371,7 @@ msgstr "3. Platz"
msgid "5s" msgid "5s"
msgstr "5 s" msgstr "5 s"
#: src/features/telemetry/components/usage-screen.tsx:255 #: src/features/telemetry/components/usage-screen.tsx:257
msgid "7d" msgid "7d"
msgstr "7 T" msgstr "7 T"
@@ -420,10 +420,6 @@ msgstr "Konto erfolgreich erstellt!"
msgid "Active device: {0}" msgid "Active device: {0}"
msgstr "Aktives Gerät: {0}" msgstr "Aktives Gerät: {0}"
#: src/features/admin/components/dashboard/usage-card.tsx:39
msgid "Active players"
msgstr "Aktive Spieler"
#: src/features/activities/components/activities-table.tsx:159 #: src/features/activities/components/activities-table.tsx:159
msgid "Activity Details" msgid "Activity Details"
msgstr "Aktivitätsdetails" msgstr "Aktivitätsdetails"
@@ -441,7 +437,7 @@ msgid "Add Team"
msgstr "Team hinzufügen" msgstr "Team hinzufügen"
#: src/app/routes/_authed/admin.tsx:15 #: src/app/routes/_authed/admin.tsx:15
#: src/app/routes/_authed/admin/index.tsx:22 #: src/app/routes/_authed/admin/index.tsx:27
#: src/features/core/hooks/use-links.ts:37 #: src/features/core/hooks/use-links.ts:37
msgid "Admin" msgid "Admin"
msgstr "Admin" msgstr "Admin"
@@ -564,7 +560,7 @@ msgstr "Ø Sieg-Marge"
msgid "Award Badge" msgid "Award Badge"
msgstr "Abzeichen verleihen" msgstr "Abzeichen verleihen"
#: src/features/admin/components/dashboard/tools-list.tsx:54 #: src/features/admin/components/dashboard/tools-list.tsx:60
msgid "Award Badges" msgid "Award Badges"
msgstr "Abzeichen verleihen" msgstr "Abzeichen verleihen"
@@ -598,15 +594,15 @@ msgstr "Zurück"
msgid "Badge awarded to {playerName}" msgid "Badge awarded to {playerName}"
msgstr "Abzeichen an {playerName} verliehen" msgstr "Abzeichen an {playerName} verliehen"
#: src/features/admin/components/dashboard/tools-list.tsx:85 #: src/features/admin/components/dashboard/tools-list.tsx:91
msgid "Badge recalculation failed. Check the server logs." msgid "Badge recalculation failed. Check the server logs."
msgstr "Abzeichen-Neuberechnung fehlgeschlagen. Prüfe die Server-Logs." msgstr "Abzeichen-Neuberechnung fehlgeschlagen. Prüfe die Server-Logs."
#: src/features/admin/components/dashboard/tools-list.tsx:38 #: src/features/admin/components/dashboard/tools-list.tsx:39
msgid "Badge recalculation is already running" msgid "Badge recalculation is already running"
msgstr "Abzeichen-Neuberechnung läuft bereits" msgstr "Abzeichen-Neuberechnung läuft bereits"
#: src/features/admin/components/dashboard/tools-list.tsx:37 #: src/features/admin/components/dashboard/tools-list.tsx:38
msgid "Badge recalculation started in the background" msgid "Badge recalculation started in the background"
msgstr "Abzeichen-Neuberechnung im Hintergrund gestartet" msgstr "Abzeichen-Neuberechnung im Hintergrund gestartet"
@@ -631,13 +627,13 @@ msgstr "Zirkus"
msgid "Both teams cannot have 10 cups" msgid "Both teams cannot have 10 cups"
msgstr "Beide Teams können nicht 10 Becher haben" msgstr "Beide Teams können nicht 10 Becher haben"
#: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:106 #: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:87
#: src/features/tournaments/components/upcoming-tournament/index.tsx:151 #: src/features/tournaments/components/upcoming-tournament/index.tsx:151
msgid "Bracket" msgid "Bracket"
msgstr "Turnierbaum" msgstr "Turnierbaum"
#: src/app/routes/_authed/admin/preview.tsx:13 #: src/app/routes/_authed/admin/preview.tsx:13
#: src/features/admin/components/dashboard/tools-list.tsx:96 #: src/features/admin/components/dashboard/tools-list.tsx:102
msgid "Bracket Preview" msgid "Bracket Preview"
msgstr "Turnierbaum-Vorschau" msgstr "Turnierbaum-Vorschau"
@@ -654,7 +650,7 @@ msgstr "Brutal"
msgid "CA" msgid "CA"
msgstr "CA" msgstr "CA"
#: src/features/admin/components/dashboard/now-strip.tsx:52 #: src/features/admin/components/dashboard/status-strip.tsx:67
msgid "Calls today" msgid "Calls today"
msgstr "Aufrufe heute" msgstr "Aufrufe heute"
@@ -720,16 +716,12 @@ msgstr "Ausgewählten Spieler entfernen"
msgid "Client error spike" msgid "Client error spike"
msgstr "Anstieg von Client-Fehlern" msgstr "Anstieg von Client-Fehlern"
#: src/features/admin/components/dashboard/errors-card.tsx:21
msgid "Client errors"
msgstr "Client-Fehler"
#: src/features/telemetry/components/usage-screen.tsx:203 #: src/features/telemetry/components/usage-screen.tsx:203
msgid "Client errors per day" msgid "Client errors per day"
msgstr "Client-Fehler pro Tag" msgstr "Client-Fehler pro Tag"
#: src/components/sheet/modal.tsx:35 #: src/components/sheet/modal.tsx:35
#: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:169 #: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:150
#: src/features/tournaments/components/upcoming-tournament/rules-list-button.tsx:36 #: src/features/tournaments/components/upcoming-tournament/rules-list-button.tsx:36
msgid "Close" msgid "Close"
msgstr "Schließen" msgstr "Schließen"
@@ -883,15 +875,10 @@ msgstr "Becher erzielt"
msgid "Custom Hex Code" msgid "Custom Hex Code"
msgstr "Benutzerdefinierter Hex-Code" msgstr "Benutzerdefinierter Hex-Code"
#: src/features/admin/components/dashboard/usage-card.tsx:41
#: src/features/telemetry/components/usage-screen.tsx:159 #: src/features/telemetry/components/usage-screen.tsx:159
msgid "Daily active players" msgid "Daily active players"
msgstr "Täglich aktive Spieler" msgstr "Täglich aktive Spieler"
#: src/features/admin/components/dashboard/usage-card.tsx:47
msgid "Daily page views"
msgstr "Tägliche Seitenaufrufe"
#: src/features/settings/components/color-scheme-picker.tsx:39 #: src/features/settings/components/color-scheme-picker.tsx:39
msgid "Dark" msgid "Dark"
msgstr "Dunkel" msgstr "Dunkel"
@@ -947,7 +934,7 @@ msgstr "Nachfolgende Matches wurden zurückgesetzt, da sich durch die Korrektur
msgid "Duration" msgid "Duration"
msgstr "Dauer" msgstr "Dauer"
#: src/features/telemetry/components/usage-screen.tsx:233 #: src/features/telemetry/components/usage-screen.tsx:235
msgid "Duration p50 / p95" msgid "Duration p50 / p95"
msgstr "Dauer p50 / p95" msgstr "Dauer p50 / p95"
@@ -970,12 +957,12 @@ msgstr "Match bearbeiten"
msgid "Edit match score" msgid "Edit match score"
msgstr "Spielstand bearbeiten" msgstr "Spielstand bearbeiten"
#: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:114 #: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:95
msgid "Edit Prediction" msgid "Edit Prediction"
msgstr "Tipp bearbeiten" msgstr "Tipp bearbeiten"
#: src/features/tournaments/components/manage-tournament.tsx:65 #: src/features/tournaments/components/manage-tournament.tsx:56
#: src/features/tournaments/components/manage-tournament.tsx:92 #: src/features/tournaments/components/manage-tournament.tsx:83
msgid "Edit Rules" msgid "Edit Rules"
msgstr "Regeln bearbeiten" msgstr "Regeln bearbeiten"
@@ -984,8 +971,8 @@ msgstr "Regeln bearbeiten"
msgid "Edit Team" msgid "Edit Team"
msgstr "Team bearbeiten" msgstr "Team bearbeiten"
#: src/features/tournaments/components/manage-tournament.tsx:60 #: src/features/tournaments/components/manage-tournament.tsx:51
#: src/features/tournaments/components/manage-tournament.tsx:72 #: src/features/tournaments/components/manage-tournament.tsx:63
msgid "Edit Tournament" msgid "Edit Tournament"
msgstr "Turnier bearbeiten" msgstr "Turnier bearbeiten"
@@ -1048,7 +1035,7 @@ msgstr "Angemeldete Spieler"
#: src/features/tournaments/components/enrollment/enrollment-stats.tsx:28 #: src/features/tournaments/components/enrollment/enrollment-stats.tsx:28
#: src/features/tournaments/components/enrollment/team-section.tsx:240 #: src/features/tournaments/components/enrollment/team-section.tsx:240
#: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:145 #: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:126
#: src/features/tournaments/components/upcoming-tournament/team-list-button.tsx:31 #: src/features/tournaments/components/upcoming-tournament/team-list-button.tsx:31
msgid "Enrolled Teams" msgid "Enrolled Teams"
msgstr "Angemeldete Teams" msgstr "Angemeldete Teams"
@@ -1058,13 +1045,13 @@ msgid "Enrolling as a free agent adds you to a pool of players looking for teamm
msgstr "Als Free Agent kommst du in einen Pool von Spielern, die noch einen Teampartner suchen." msgstr "Als Free Agent kommst du in einen Pool von Spielern, die noch einen Teampartner suchen."
#: src/app/routes/_authed/admin/tournaments/$id/enrollment.tsx:33 #: src/app/routes/_authed/admin/tournaments/$id/enrollment.tsx:33
#: src/features/admin/components/dashboard/tournament-card.tsx:61 #: src/features/admin/components/dashboard/tournament-section.tsx:34
#: src/features/tournaments/components/upcoming-tournament/enroll-free-agent.tsx:29 #: src/features/tournaments/components/upcoming-tournament/enroll-free-agent.tsx:29
#: src/features/tournaments/components/upcoming-tournament/index.tsx:69 #: src/features/tournaments/components/upcoming-tournament/index.tsx:69
msgid "Enrollment" msgid "Enrollment"
msgstr "Anmeldung" msgstr "Anmeldung"
#: src/features/tournaments/components/manage-tournament.tsx:55 #: src/features/tournaments/components/manage-tournament.tsx:46
msgid "Enrollment & Teams" msgid "Enrollment & Teams"
msgstr "Anmeldungen & Teams" msgstr "Anmeldungen & Teams"
@@ -1181,7 +1168,7 @@ msgstr "Aktives Gerät konnte nicht festgelegt werden"
msgid "Failed to set volume" msgid "Failed to set volume"
msgstr "Lautstärke konnte nicht festgelegt werden" msgstr "Lautstärke konnte nicht festgelegt werden"
#: src/features/admin/components/dashboard/tools-list.tsx:41 #: src/features/admin/components/dashboard/tools-list.tsx:42
msgid "Failed to start badge recalculation" msgid "Failed to start badge recalculation"
msgstr "Abzeichen-Neuberechnung konnte nicht gestartet werden" msgstr "Abzeichen-Neuberechnung konnte nicht gestartet werden"
@@ -1251,7 +1238,7 @@ msgstr "Free-Agent-Anmeldung"
msgid "Free Agents" msgid "Free Agents"
msgstr "Free Agents" msgstr "Free Agents"
#: src/features/telemetry/components/usage-screen.tsx:226 #: src/features/telemetry/components/usage-screen.tsx:228
msgid "Function" msgid "Function"
msgstr "Funktion" msgstr "Funktion"
@@ -1319,7 +1306,7 @@ msgstr "Gruppenphase erfolgreich erstellt!"
msgid "Group Stage Setup" msgid "Group Stage Setup"
msgstr "Gruppenphase einrichten" msgstr "Gruppenphase einrichten"
#: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:98 #: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:79
msgid "Groups" msgid "Groups"
msgstr "Gruppen" msgstr "Gruppen"
@@ -1465,7 +1452,7 @@ msgid "Last name must be 3-20 characters long and contain only letters"
msgstr "Der Nachname muss 3-20 Zeichen lang sein und darf nur Buchstaben enthalten" msgstr "Der Nachname muss 3-20 Zeichen lang sein und darf nur Buchstaben enthalten"
#. placeholder {0}: migrationStatus.result.totalBadgesEarned #. placeholder {0}: migrationStatus.result.totalBadgesEarned
#: src/features/admin/components/dashboard/tools-list.tsx:73 #: src/features/admin/components/dashboard/tools-list.tsx:79
msgid "Last recalculation: {0, plural, one {# badge earned} other {# badges earned}}" msgid "Last recalculation: {0, plural, one {# badge earned} other {# badges earned}}"
msgstr "Letzte Neuberechnung: {0, plural, one {# Abzeichen verdient} other {# Abzeichen verdient}}" msgstr "Letzte Neuberechnung: {0, plural, one {# Abzeichen verdient} other {# Abzeichen verdient}}"
@@ -1530,7 +1517,7 @@ msgstr "S"
msgid "Mainline" msgid "Mainline"
msgstr "Mainline" msgstr "Mainline"
#: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:114 #: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:95
msgid "Make Prediction" msgid "Make Prediction"
msgstr "Tipp abgeben" msgstr "Tipp abgeben"
@@ -1538,8 +1525,8 @@ msgstr "Tipp abgeben"
msgid "Make Your Prediction" msgid "Make Your Prediction"
msgstr "Gib deinen Tipp ab" msgstr "Gib deinen Tipp ab"
#: src/features/admin/components/dashboard/tournament-card.tsx:68 #: src/features/admin/components/dashboard/tournament-section.tsx:39
#: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:89 #: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:70
#: src/features/tournaments/components/upcoming-tournament/index.tsx:144 #: src/features/tournaments/components/upcoming-tournament/index.tsx:144
msgid "Manage" msgid "Manage"
msgstr "Verwalten" msgstr "Verwalten"
@@ -1554,8 +1541,7 @@ msgid "Manage Team Songs/Logos"
msgstr "Team-Songs/Logos verwalten" msgstr "Team-Songs/Logos verwalten"
#: src/app/routes/_authed/admin/tournaments/index.tsx:17 #: src/app/routes/_authed/admin/tournaments/index.tsx:17
#: src/features/admin/components/dashboard/tools-list.tsx:49 #: src/features/admin/components/dashboard/tools-list.tsx:50
#: src/features/admin/components/dashboard/tournament-card.tsx:25
msgid "Manage Tournaments" msgid "Manage Tournaments"
msgstr "Turniere verwalten" msgstr "Turniere verwalten"
@@ -1642,7 +1628,7 @@ msgstr "MAU"
msgid "Me" msgid "Me"
msgstr "Ich" msgstr "Ich"
#: src/features/admin/components/dashboard/tools-list.tsx:59 #: src/features/admin/components/dashboard/tools-list.tsx:65
msgid "Migrate Badge Progress" msgid "Migrate Badge Progress"
msgstr "Abzeichen-Fortschritt migrieren" msgstr "Abzeichen-Fortschritt migrieren"
@@ -1748,10 +1734,6 @@ msgstr "Keine aktive Wiedergabe zum Erfassen"
msgid "No Activities Found" msgid "No Activities Found"
msgstr "Keine Aktivitäten gefunden" msgstr "Keine Aktivitäten gefunden"
#: src/features/admin/components/dashboard/activity-feed.tsx:78
msgid "No activity yet"
msgstr "Noch keine Aktivität"
#: src/features/badges/components/badge-stats-table.tsx:45 #: src/features/badges/components/badge-stats-table.tsx:45
msgid "No Badges Available" msgid "No Badges Available"
msgstr "Keine Abzeichen verfügbar" msgstr "Keine Abzeichen verfügbar"
@@ -1844,15 +1826,10 @@ msgstr "Keine Teams gefunden, die zu \"{search}\" passen"
msgid "No tournaments found" msgid "No tournaments found"
msgstr "Keine Turniere gefunden" msgstr "Keine Turniere gefunden"
#: src/features/admin/components/dashboard/tournament-card.tsx:18
msgid "No tournaments yet"
msgstr "Noch keine Turniere"
#: src/features/tournaments/components/tournament-card-list.tsx:40 #: src/features/tournaments/components/tournament-card-list.tsx:40
msgid "No Tournaments Yet" msgid "No Tournaments Yet"
msgstr "Noch keine Turniere" msgstr "Noch keine Turniere"
#: src/features/admin/components/dashboard/errors-card.tsx:53
#: src/features/telemetry/components/error-browser/error-browser.tsx:27 #: src/features/telemetry/components/error-browser/error-browser.tsx:27
msgid "No unresolved errors" msgid "No unresolved errors"
msgstr "Keine offenen Fehler" msgstr "Keine offenen Fehler"
@@ -1914,15 +1891,15 @@ msgstr "Sobald du angemeldet bist, kannst du andere Free Agents und ihre Telefon
msgid "One time code" msgid "One time code"
msgstr "Einmalcode" msgstr "Einmalcode"
#: src/features/admin/components/dashboard/now-strip.tsx:44 #: src/features/admin/components/dashboard/status-strip.tsx:56
msgid "Online now" msgid "Online"
msgstr "Gerade online" msgstr "Online"
#: src/features/admin/components/dashboard/now-strip.tsx:46 #: src/features/admin/components/dashboard/status-strip.tsx:61
msgid "Open errors" msgid "Open errors"
msgstr "Offene Fehler" msgstr "Offene Fehler"
#: src/features/admin/components/dashboard/tools-list.tsx:89 #: src/features/admin/components/dashboard/tools-list.tsx:95
msgid "Open Pocketbase" msgid "Open Pocketbase"
msgstr "Pocketbase öffnen" msgstr "Pocketbase öffnen"
@@ -1972,11 +1949,7 @@ msgstr "p50"
msgid "p95" msgid "p95"
msgstr "p95" msgstr "p95"
#: src/features/admin/components/dashboard/usage-card.tsx:45 #: src/features/telemetry/components/usage-screen.tsx:176
msgid "Page views"
msgstr "Seitenaufrufe"
#: src/features/telemetry/components/usage-screen.tsx:177
msgid "Page views by route" msgid "Page views by route"
msgstr "Seitenaufrufe nach Route" msgstr "Seitenaufrufe nach Route"
@@ -2095,7 +2068,7 @@ msgstr "Punktevergabe für Tipps:"
#: src/app/routes/_authed/tournaments/$id.predictions.tsx:23 #: src/app/routes/_authed/tournaments/$id.predictions.tsx:23
#: src/features/predictions/components/prediction-leaderboard.tsx:147 #: src/features/predictions/components/prediction-leaderboard.tsx:147
#: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:123 #: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:104
msgid "Predictions" msgid "Predictions"
msgstr "Tipps" msgstr "Tipps"
@@ -2146,14 +2119,10 @@ msgstr "Reaktionen"
#. placeholder {0}: migrationStatus.playersProcessed #. placeholder {0}: migrationStatus.playersProcessed
#. placeholder {1}: migrationStatus.totalPlayers #. placeholder {1}: migrationStatus.totalPlayers
#: src/features/admin/components/dashboard/tools-list.tsx:66 #: src/features/admin/components/dashboard/tools-list.tsx:72
msgid "Recalculating badges in the background ({0}/{1})" msgid "Recalculating badges in the background ({0}/{1})"
msgstr "Abzeichen werden im Hintergrund neu berechnet ({0}/{1})" msgstr "Abzeichen werden im Hintergrund neu berechnet ({0}/{1})"
#: src/features/admin/components/dashboard/activity-feed.tsx:34
msgid "Recent activity"
msgstr "Letzte Aktivität"
#: src/features/tournaments/components/started-tournament/sections/recent-results.tsx:34 #: src/features/tournaments/components/started-tournament/sections/recent-results.tsx:34
msgid "Recently finished" msgid "Recently finished"
msgstr "Kürzlich beendet" msgstr "Kürzlich beendet"
@@ -2218,17 +2187,20 @@ msgstr "Runde {0}"
msgid "Route" msgid "Route"
msgstr "Route" msgstr "Route"
#: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:142 #: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:123
#: src/features/tournaments/components/upcoming-tournament/rules-list-button.tsx:23 #: src/features/tournaments/components/upcoming-tournament/rules-list-button.tsx:23
msgid "Rules" msgid "Rules"
msgstr "Regeln" msgstr "Regeln"
#: src/features/admin/components/dashboard/tournament-section.tsx:29
msgid "Run"
msgstr "Starten"
#: src/app/routes/_authed/admin/tournaments/run.$id.tsx:36 #: src/app/routes/_authed/admin/tournaments/run.$id.tsx:36
msgid "Run {name}" msgid "Run {name}"
msgstr "{name} ausführen" msgstr "{name} ausführen"
#: src/features/admin/components/dashboard/tournament-card.tsx:53 #: src/features/tournaments/components/manage-tournament.tsx:41
#: src/features/tournaments/components/manage-tournament.tsx:49
msgid "Run Tournament" msgid "Run Tournament"
msgstr "Turnier starten" msgstr "Turnier starten"
@@ -2517,7 +2489,7 @@ msgstr "Startzeit ist erforderlich"
msgid "Start typing to search..." msgid "Start typing to search..."
msgstr "Tippen, um zu suchen …" msgstr "Tippen, um zu suchen …"
#: src/features/admin/components/dashboard/tournament-card.tsx:43 #: src/features/admin/components/dashboard/tournament-section.tsx:24
msgid "Starts in" msgid "Starts in"
msgstr "Beginnt in" msgstr "Beginnt in"
@@ -2639,7 +2611,7 @@ msgstr "Team erfolgreich aktualisiert!"
#: src/features/players/components/profile/skeleton.tsx:75 #: src/features/players/components/profile/skeleton.tsx:75
#: src/features/tournaments/components/profile/index.tsx:32 #: src/features/tournaments/components/profile/index.tsx:32
#: src/features/tournaments/components/profile/skeleton.tsx:89 #: src/features/tournaments/components/profile/skeleton.tsx:89
#: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:137 #: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:118
msgid "Teams" msgid "Teams"
msgstr "Teams" msgstr "Teams"
@@ -2648,6 +2620,7 @@ msgid "Teams created successfully!"
msgstr "Teams erfolgreich erstellt!" msgstr "Teams erfolgreich erstellt!"
#: src/app/routes/_authed/admin/telemetry.tsx:20 #: src/app/routes/_authed/admin/telemetry.tsx:20
#: src/features/admin/components/dashboard/tools-list.tsx:55
msgid "Telemetry" msgid "Telemetry"
msgstr "Telemetrie" msgstr "Telemetrie"
@@ -2730,7 +2703,7 @@ msgstr "Die besten {0, plural, one {# Team} other {# Teams}} aus jeder Gruppe ko
msgid "Top {n} advance" msgid "Top {n} advance"
msgstr "Top {n} kommen weiter" msgstr "Top {n} kommen weiter"
#: src/features/telemetry/components/usage-screen.tsx:191 #: src/features/telemetry/components/usage-screen.tsx:190
msgid "Top functions by call count" msgid "Top functions by call count"
msgstr "Top-Funktionen nach Aufrufanzahl" msgstr "Top-Funktionen nach Aufrufanzahl"
@@ -2757,7 +2730,7 @@ msgstr "Turnier erfolgreich erstellt!"
msgid "Tournament not found" msgid "Tournament not found"
msgstr "Turnier nicht gefunden" msgstr "Turnier nicht gefunden"
#: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:152 #: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:133
#: src/features/tournaments/components/upcoming-tournament/rules-list-button.tsx:25 #: src/features/tournaments/components/upcoming-tournament/rules-list-button.tsx:25
msgid "Tournament Rules" msgid "Tournament Rules"
msgstr "Turnierregeln" msgstr "Turnierregeln"
@@ -2786,7 +2759,7 @@ msgstr "trackId ist für die playTrack-Aktion erforderlich"
msgid "Try the new themes" msgid "Try the new themes"
msgstr "Probier die neuen Designs aus" msgstr "Probier die neuen Designs aus"
#: src/features/admin/components/dashboard/quiet-boundary.tsx:26 #: src/features/admin/components/dashboard/quiet-boundary.tsx:24
msgid "Unavailable right now" msgid "Unavailable right now"
msgstr "Gerade nicht verfügbar" msgstr "Gerade nicht verfügbar"
@@ -2851,10 +2824,6 @@ msgstr "Turnier aktualisieren"
msgid "Usage" msgid "Usage"
msgstr "Nutzung" msgstr "Nutzung"
#: src/features/admin/components/dashboard/usage-card.tsx:34
msgid "Usage, 7 days"
msgstr "Nutzung, 7 Tage"
#: src/features/activities/components/activities-table.tsx:202 #: src/features/activities/components/activities-table.tsx:202
#: src/features/telemetry/components/client-events-table.tsx:146 #: src/features/telemetry/components/client-events-table.tsx:146
msgid "User Agent" msgid "User Agent"
@@ -2898,7 +2867,7 @@ msgstr "Tipps ansehen"
msgid "Viewport" msgid "Viewport"
msgstr "Viewport" msgstr "Viewport"
#: src/features/telemetry/components/usage-screen.tsx:211 #: src/features/telemetry/components/usage-screen.tsx:213
msgid "Vitals" msgid "Vitals"
msgstr "Vitals" msgstr "Vitals"
+51 -82
View File
@@ -153,7 +153,7 @@ msgstr "{0}ms"
msgid "{count, plural, one {Players (#)} other {Players (#)}}" msgid "{count, plural, one {Players (#)} other {Players (#)}}"
msgstr "{count, plural, one {Players (#)} other {Players (#)}}" msgstr "{count, plural, one {Players (#)} other {Players (#)}}"
#: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:134 #: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:115
#: src/features/tournaments/components/upcoming-tournament/team-list-button.tsx:24 #: src/features/tournaments/components/upcoming-tournament/team-list-button.tsx:24
msgid "{count, plural, one {Teams (#)} other {Teams (#)}}" msgid "{count, plural, one {Teams (#)} other {Teams (#)}}"
msgstr "{count, plural, one {Teams (#)} other {Teams (#)}}" msgstr "{count, plural, one {Teams (#)} other {Teams (#)}}"
@@ -355,7 +355,7 @@ msgstr "2. Earlier submission"
msgid "2nd place" msgid "2nd place"
msgstr "2nd place" msgstr "2nd place"
#: src/features/telemetry/components/usage-screen.tsx:256 #: src/features/telemetry/components/usage-screen.tsx:258
msgid "30d" msgid "30d"
msgstr "30d" msgstr "30d"
@@ -371,7 +371,7 @@ msgstr "3rd place"
msgid "5s" msgid "5s"
msgstr "5s" msgstr "5s"
#: src/features/telemetry/components/usage-screen.tsx:255 #: src/features/telemetry/components/usage-screen.tsx:257
msgid "7d" msgid "7d"
msgstr "7d" msgstr "7d"
@@ -420,10 +420,6 @@ msgstr "Account created successfully!"
msgid "Active device: {0}" msgid "Active device: {0}"
msgstr "Active device: {0}" msgstr "Active device: {0}"
#: src/features/admin/components/dashboard/usage-card.tsx:39
msgid "Active players"
msgstr "Active players"
#: src/features/activities/components/activities-table.tsx:159 #: src/features/activities/components/activities-table.tsx:159
msgid "Activity Details" msgid "Activity Details"
msgstr "Activity Details" msgstr "Activity Details"
@@ -441,7 +437,7 @@ msgid "Add Team"
msgstr "Add Team" msgstr "Add Team"
#: src/app/routes/_authed/admin.tsx:15 #: src/app/routes/_authed/admin.tsx:15
#: src/app/routes/_authed/admin/index.tsx:22 #: src/app/routes/_authed/admin/index.tsx:27
#: src/features/core/hooks/use-links.ts:37 #: src/features/core/hooks/use-links.ts:37
msgid "Admin" msgid "Admin"
msgstr "Admin" msgstr "Admin"
@@ -564,7 +560,7 @@ msgstr "Avg Win Margin"
msgid "Award Badge" msgid "Award Badge"
msgstr "Award Badge" msgstr "Award Badge"
#: src/features/admin/components/dashboard/tools-list.tsx:54 #: src/features/admin/components/dashboard/tools-list.tsx:60
msgid "Award Badges" msgid "Award Badges"
msgstr "Award Badges" msgstr "Award Badges"
@@ -598,15 +594,15 @@ msgstr "Back"
msgid "Badge awarded to {playerName}" msgid "Badge awarded to {playerName}"
msgstr "Badge awarded to {playerName}" msgstr "Badge awarded to {playerName}"
#: src/features/admin/components/dashboard/tools-list.tsx:85 #: src/features/admin/components/dashboard/tools-list.tsx:91
msgid "Badge recalculation failed. Check the server logs." msgid "Badge recalculation failed. Check the server logs."
msgstr "Badge recalculation failed. Check the server logs." msgstr "Badge recalculation failed. Check the server logs."
#: src/features/admin/components/dashboard/tools-list.tsx:38 #: src/features/admin/components/dashboard/tools-list.tsx:39
msgid "Badge recalculation is already running" msgid "Badge recalculation is already running"
msgstr "Badge recalculation is already running" msgstr "Badge recalculation is already running"
#: src/features/admin/components/dashboard/tools-list.tsx:37 #: src/features/admin/components/dashboard/tools-list.tsx:38
msgid "Badge recalculation started in the background" msgid "Badge recalculation started in the background"
msgstr "Badge recalculation started in the background" msgstr "Badge recalculation started in the background"
@@ -631,13 +627,13 @@ msgstr "Big Top"
msgid "Both teams cannot have 10 cups" msgid "Both teams cannot have 10 cups"
msgstr "Both teams cannot have 10 cups" msgstr "Both teams cannot have 10 cups"
#: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:106 #: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:87
#: src/features/tournaments/components/upcoming-tournament/index.tsx:151 #: src/features/tournaments/components/upcoming-tournament/index.tsx:151
msgid "Bracket" msgid "Bracket"
msgstr "Bracket" msgstr "Bracket"
#: src/app/routes/_authed/admin/preview.tsx:13 #: src/app/routes/_authed/admin/preview.tsx:13
#: src/features/admin/components/dashboard/tools-list.tsx:96 #: src/features/admin/components/dashboard/tools-list.tsx:102
msgid "Bracket Preview" msgid "Bracket Preview"
msgstr "Bracket Preview" msgstr "Bracket Preview"
@@ -654,7 +650,7 @@ msgstr "Brutal"
msgid "CA" msgid "CA"
msgstr "CA" msgstr "CA"
#: src/features/admin/components/dashboard/now-strip.tsx:52 #: src/features/admin/components/dashboard/status-strip.tsx:67
msgid "Calls today" msgid "Calls today"
msgstr "Calls today" msgstr "Calls today"
@@ -720,16 +716,12 @@ msgstr "Clear selected player"
msgid "Client error spike" msgid "Client error spike"
msgstr "Client error spike" msgstr "Client error spike"
#: src/features/admin/components/dashboard/errors-card.tsx:21
msgid "Client errors"
msgstr "Client errors"
#: src/features/telemetry/components/usage-screen.tsx:203 #: src/features/telemetry/components/usage-screen.tsx:203
msgid "Client errors per day" msgid "Client errors per day"
msgstr "Client errors per day" msgstr "Client errors per day"
#: src/components/sheet/modal.tsx:35 #: src/components/sheet/modal.tsx:35
#: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:169 #: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:150
#: src/features/tournaments/components/upcoming-tournament/rules-list-button.tsx:36 #: src/features/tournaments/components/upcoming-tournament/rules-list-button.tsx:36
msgid "Close" msgid "Close"
msgstr "Close" msgstr "Close"
@@ -883,15 +875,10 @@ msgstr "Cups Made"
msgid "Custom Hex Code" msgid "Custom Hex Code"
msgstr "Custom Hex Code" msgstr "Custom Hex Code"
#: src/features/admin/components/dashboard/usage-card.tsx:41
#: src/features/telemetry/components/usage-screen.tsx:159 #: src/features/telemetry/components/usage-screen.tsx:159
msgid "Daily active players" msgid "Daily active players"
msgstr "Daily active players" msgstr "Daily active players"
#: src/features/admin/components/dashboard/usage-card.tsx:47
msgid "Daily page views"
msgstr "Daily page views"
#: src/features/settings/components/color-scheme-picker.tsx:39 #: src/features/settings/components/color-scheme-picker.tsx:39
msgid "Dark" msgid "Dark"
msgstr "Dark" msgstr "Dark"
@@ -947,7 +934,7 @@ msgstr "Downstream matches were reset because the correction changed who advance
msgid "Duration" msgid "Duration"
msgstr "Duration" msgstr "Duration"
#: src/features/telemetry/components/usage-screen.tsx:233 #: src/features/telemetry/components/usage-screen.tsx:235
msgid "Duration p50 / p95" msgid "Duration p50 / p95"
msgstr "Duration p50 / p95" msgstr "Duration p50 / p95"
@@ -970,12 +957,12 @@ msgstr "Edit Match"
msgid "Edit match score" msgid "Edit match score"
msgstr "Edit match score" msgstr "Edit match score"
#: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:114 #: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:95
msgid "Edit Prediction" msgid "Edit Prediction"
msgstr "Edit Prediction" msgstr "Edit Prediction"
#: src/features/tournaments/components/manage-tournament.tsx:65 #: src/features/tournaments/components/manage-tournament.tsx:56
#: src/features/tournaments/components/manage-tournament.tsx:92 #: src/features/tournaments/components/manage-tournament.tsx:83
msgid "Edit Rules" msgid "Edit Rules"
msgstr "Edit Rules" msgstr "Edit Rules"
@@ -984,8 +971,8 @@ msgstr "Edit Rules"
msgid "Edit Team" msgid "Edit Team"
msgstr "Edit Team" msgstr "Edit Team"
#: src/features/tournaments/components/manage-tournament.tsx:60 #: src/features/tournaments/components/manage-tournament.tsx:51
#: src/features/tournaments/components/manage-tournament.tsx:72 #: src/features/tournaments/components/manage-tournament.tsx:63
msgid "Edit Tournament" msgid "Edit Tournament"
msgstr "Edit Tournament" msgstr "Edit Tournament"
@@ -1048,7 +1035,7 @@ msgstr "Enrolled Players"
#: src/features/tournaments/components/enrollment/enrollment-stats.tsx:28 #: src/features/tournaments/components/enrollment/enrollment-stats.tsx:28
#: src/features/tournaments/components/enrollment/team-section.tsx:240 #: src/features/tournaments/components/enrollment/team-section.tsx:240
#: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:145 #: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:126
#: src/features/tournaments/components/upcoming-tournament/team-list-button.tsx:31 #: src/features/tournaments/components/upcoming-tournament/team-list-button.tsx:31
msgid "Enrolled Teams" msgid "Enrolled Teams"
msgstr "Enrolled Teams" msgstr "Enrolled Teams"
@@ -1058,13 +1045,13 @@ msgid "Enrolling as a free agent adds you to a pool of players looking for teamm
msgstr "Enrolling as a free agent adds you to a pool of players looking for teammates." msgstr "Enrolling as a free agent adds you to a pool of players looking for teammates."
#: src/app/routes/_authed/admin/tournaments/$id/enrollment.tsx:33 #: src/app/routes/_authed/admin/tournaments/$id/enrollment.tsx:33
#: src/features/admin/components/dashboard/tournament-card.tsx:61 #: src/features/admin/components/dashboard/tournament-section.tsx:34
#: src/features/tournaments/components/upcoming-tournament/enroll-free-agent.tsx:29 #: src/features/tournaments/components/upcoming-tournament/enroll-free-agent.tsx:29
#: src/features/tournaments/components/upcoming-tournament/index.tsx:69 #: src/features/tournaments/components/upcoming-tournament/index.tsx:69
msgid "Enrollment" msgid "Enrollment"
msgstr "Enrollment" msgstr "Enrollment"
#: src/features/tournaments/components/manage-tournament.tsx:55 #: src/features/tournaments/components/manage-tournament.tsx:46
msgid "Enrollment & Teams" msgid "Enrollment & Teams"
msgstr "Enrollment & Teams" msgstr "Enrollment & Teams"
@@ -1181,7 +1168,7 @@ msgstr "Failed to set active device"
msgid "Failed to set volume" msgid "Failed to set volume"
msgstr "Failed to set volume" msgstr "Failed to set volume"
#: src/features/admin/components/dashboard/tools-list.tsx:41 #: src/features/admin/components/dashboard/tools-list.tsx:42
msgid "Failed to start badge recalculation" msgid "Failed to start badge recalculation"
msgstr "Failed to start badge recalculation" msgstr "Failed to start badge recalculation"
@@ -1251,7 +1238,7 @@ msgstr "Free Agent Enrollment"
msgid "Free Agents" msgid "Free Agents"
msgstr "Free Agents" msgstr "Free Agents"
#: src/features/telemetry/components/usage-screen.tsx:226 #: src/features/telemetry/components/usage-screen.tsx:228
msgid "Function" msgid "Function"
msgstr "Function" msgstr "Function"
@@ -1319,7 +1306,7 @@ msgstr "Group stage generated successfully!"
msgid "Group Stage Setup" msgid "Group Stage Setup"
msgstr "Group Stage Setup" msgstr "Group Stage Setup"
#: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:98 #: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:79
msgid "Groups" msgid "Groups"
msgstr "Groups" msgstr "Groups"
@@ -1465,7 +1452,7 @@ msgid "Last name must be 3-20 characters long and contain only letters"
msgstr "Last name must be 3-20 characters long and contain only letters" msgstr "Last name must be 3-20 characters long and contain only letters"
#. placeholder {0}: migrationStatus.result.totalBadgesEarned #. placeholder {0}: migrationStatus.result.totalBadgesEarned
#: src/features/admin/components/dashboard/tools-list.tsx:73 #: src/features/admin/components/dashboard/tools-list.tsx:79
msgid "Last recalculation: {0, plural, one {# badge earned} other {# badges earned}}" msgid "Last recalculation: {0, plural, one {# badge earned} other {# badges earned}}"
msgstr "Last recalculation: {0, plural, one {# badge earned} other {# badges earned}}" msgstr "Last recalculation: {0, plural, one {# badge earned} other {# badges earned}}"
@@ -1530,7 +1517,7 @@ msgstr "M"
msgid "Mainline" msgid "Mainline"
msgstr "Mainline" msgstr "Mainline"
#: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:114 #: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:95
msgid "Make Prediction" msgid "Make Prediction"
msgstr "Make Prediction" msgstr "Make Prediction"
@@ -1538,8 +1525,8 @@ msgstr "Make Prediction"
msgid "Make Your Prediction" msgid "Make Your Prediction"
msgstr "Make Your Prediction" msgstr "Make Your Prediction"
#: src/features/admin/components/dashboard/tournament-card.tsx:68 #: src/features/admin/components/dashboard/tournament-section.tsx:39
#: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:89 #: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:70
#: src/features/tournaments/components/upcoming-tournament/index.tsx:144 #: src/features/tournaments/components/upcoming-tournament/index.tsx:144
msgid "Manage" msgid "Manage"
msgstr "Manage" msgstr "Manage"
@@ -1554,8 +1541,7 @@ msgid "Manage Team Songs/Logos"
msgstr "Manage Team Songs/Logos" msgstr "Manage Team Songs/Logos"
#: src/app/routes/_authed/admin/tournaments/index.tsx:17 #: src/app/routes/_authed/admin/tournaments/index.tsx:17
#: src/features/admin/components/dashboard/tools-list.tsx:49 #: src/features/admin/components/dashboard/tools-list.tsx:50
#: src/features/admin/components/dashboard/tournament-card.tsx:25
msgid "Manage Tournaments" msgid "Manage Tournaments"
msgstr "Manage Tournaments" msgstr "Manage Tournaments"
@@ -1642,7 +1628,7 @@ msgstr "MAU"
msgid "Me" msgid "Me"
msgstr "Me" msgstr "Me"
#: src/features/admin/components/dashboard/tools-list.tsx:59 #: src/features/admin/components/dashboard/tools-list.tsx:65
msgid "Migrate Badge Progress" msgid "Migrate Badge Progress"
msgstr "Migrate Badge Progress" msgstr "Migrate Badge Progress"
@@ -1748,10 +1734,6 @@ msgstr "No active playback to capture"
msgid "No Activities Found" msgid "No Activities Found"
msgstr "No Activities Found" msgstr "No Activities Found"
#: src/features/admin/components/dashboard/activity-feed.tsx:78
msgid "No activity yet"
msgstr "No activity yet"
#: src/features/badges/components/badge-stats-table.tsx:45 #: src/features/badges/components/badge-stats-table.tsx:45
msgid "No Badges Available" msgid "No Badges Available"
msgstr "No Badges Available" msgstr "No Badges Available"
@@ -1844,15 +1826,10 @@ msgstr "No teams found matching \"{search}\""
msgid "No tournaments found" msgid "No tournaments found"
msgstr "No tournaments found" msgstr "No tournaments found"
#: src/features/admin/components/dashboard/tournament-card.tsx:18
msgid "No tournaments yet"
msgstr "No tournaments yet"
#: src/features/tournaments/components/tournament-card-list.tsx:40 #: src/features/tournaments/components/tournament-card-list.tsx:40
msgid "No Tournaments Yet" msgid "No Tournaments Yet"
msgstr "No Tournaments Yet" msgstr "No Tournaments Yet"
#: src/features/admin/components/dashboard/errors-card.tsx:53
#: src/features/telemetry/components/error-browser/error-browser.tsx:27 #: src/features/telemetry/components/error-browser/error-browser.tsx:27
msgid "No unresolved errors" msgid "No unresolved errors"
msgstr "No unresolved errors" msgstr "No unresolved errors"
@@ -1914,15 +1891,15 @@ msgstr "Once enrolled, you can view other free agents and their phone number in
msgid "One time code" msgid "One time code"
msgstr "One time code" msgstr "One time code"
#: src/features/admin/components/dashboard/now-strip.tsx:44 #: src/features/admin/components/dashboard/status-strip.tsx:56
msgid "Online now" msgid "Online"
msgstr "Online now" msgstr "Online"
#: src/features/admin/components/dashboard/now-strip.tsx:46 #: src/features/admin/components/dashboard/status-strip.tsx:61
msgid "Open errors" msgid "Open errors"
msgstr "Open errors" msgstr "Open errors"
#: src/features/admin/components/dashboard/tools-list.tsx:89 #: src/features/admin/components/dashboard/tools-list.tsx:95
msgid "Open Pocketbase" msgid "Open Pocketbase"
msgstr "Open Pocketbase" msgstr "Open Pocketbase"
@@ -1972,11 +1949,7 @@ msgstr "p50"
msgid "p95" msgid "p95"
msgstr "p95" msgstr "p95"
#: src/features/admin/components/dashboard/usage-card.tsx:45 #: src/features/telemetry/components/usage-screen.tsx:176
msgid "Page views"
msgstr "Page views"
#: src/features/telemetry/components/usage-screen.tsx:177
msgid "Page views by route" msgid "Page views by route"
msgstr "Page views by route" msgstr "Page views by route"
@@ -2095,7 +2068,7 @@ msgstr "Prediction Scoring:"
#: src/app/routes/_authed/tournaments/$id.predictions.tsx:23 #: src/app/routes/_authed/tournaments/$id.predictions.tsx:23
#: src/features/predictions/components/prediction-leaderboard.tsx:147 #: src/features/predictions/components/prediction-leaderboard.tsx:147
#: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:123 #: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:104
msgid "Predictions" msgid "Predictions"
msgstr "Predictions" msgstr "Predictions"
@@ -2146,14 +2119,10 @@ msgstr "Reactions"
#. placeholder {0}: migrationStatus.playersProcessed #. placeholder {0}: migrationStatus.playersProcessed
#. placeholder {1}: migrationStatus.totalPlayers #. placeholder {1}: migrationStatus.totalPlayers
#: src/features/admin/components/dashboard/tools-list.tsx:66 #: src/features/admin/components/dashboard/tools-list.tsx:72
msgid "Recalculating badges in the background ({0}/{1})" msgid "Recalculating badges in the background ({0}/{1})"
msgstr "Recalculating badges in the background ({0}/{1})" msgstr "Recalculating badges in the background ({0}/{1})"
#: src/features/admin/components/dashboard/activity-feed.tsx:34
msgid "Recent activity"
msgstr "Recent activity"
#: src/features/tournaments/components/started-tournament/sections/recent-results.tsx:34 #: src/features/tournaments/components/started-tournament/sections/recent-results.tsx:34
msgid "Recently finished" msgid "Recently finished"
msgstr "Recently finished" msgstr "Recently finished"
@@ -2218,17 +2187,20 @@ msgstr "Round {0}"
msgid "Route" msgid "Route"
msgstr "Route" msgstr "Route"
#: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:142 #: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:123
#: src/features/tournaments/components/upcoming-tournament/rules-list-button.tsx:23 #: src/features/tournaments/components/upcoming-tournament/rules-list-button.tsx:23
msgid "Rules" msgid "Rules"
msgstr "Rules" msgstr "Rules"
#: src/features/admin/components/dashboard/tournament-section.tsx:29
msgid "Run"
msgstr "Run"
#: src/app/routes/_authed/admin/tournaments/run.$id.tsx:36 #: src/app/routes/_authed/admin/tournaments/run.$id.tsx:36
msgid "Run {name}" msgid "Run {name}"
msgstr "Run {name}" msgstr "Run {name}"
#: src/features/admin/components/dashboard/tournament-card.tsx:53 #: src/features/tournaments/components/manage-tournament.tsx:41
#: src/features/tournaments/components/manage-tournament.tsx:49
msgid "Run Tournament" msgid "Run Tournament"
msgstr "Run Tournament" msgstr "Run Tournament"
@@ -2517,7 +2489,7 @@ msgstr "Start time is required"
msgid "Start typing to search..." msgid "Start typing to search..."
msgstr "Start typing to search..." msgstr "Start typing to search..."
#: src/features/admin/components/dashboard/tournament-card.tsx:43 #: src/features/admin/components/dashboard/tournament-section.tsx:24
msgid "Starts in" msgid "Starts in"
msgstr "Starts in" msgstr "Starts in"
@@ -2639,7 +2611,7 @@ msgstr "Team updated successfully!"
#: src/features/players/components/profile/skeleton.tsx:75 #: src/features/players/components/profile/skeleton.tsx:75
#: src/features/tournaments/components/profile/index.tsx:32 #: src/features/tournaments/components/profile/index.tsx:32
#: src/features/tournaments/components/profile/skeleton.tsx:89 #: src/features/tournaments/components/profile/skeleton.tsx:89
#: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:137 #: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:118
msgid "Teams" msgid "Teams"
msgstr "Teams" msgstr "Teams"
@@ -2648,6 +2620,7 @@ msgid "Teams created successfully!"
msgstr "Teams created successfully!" msgstr "Teams created successfully!"
#: src/app/routes/_authed/admin/telemetry.tsx:20 #: src/app/routes/_authed/admin/telemetry.tsx:20
#: src/features/admin/components/dashboard/tools-list.tsx:55
msgid "Telemetry" msgid "Telemetry"
msgstr "Telemetry" msgstr "Telemetry"
@@ -2730,7 +2703,7 @@ msgstr "Top {0, plural, one {# team} other {# teams}} from each group will advan
msgid "Top {n} advance" msgid "Top {n} advance"
msgstr "Top {n} advance" msgstr "Top {n} advance"
#: src/features/telemetry/components/usage-screen.tsx:191 #: src/features/telemetry/components/usage-screen.tsx:190
msgid "Top functions by call count" msgid "Top functions by call count"
msgstr "Top functions by call count" msgstr "Top functions by call count"
@@ -2757,7 +2730,7 @@ msgstr "Tournament created successfully!"
msgid "Tournament not found" msgid "Tournament not found"
msgstr "Tournament not found" msgstr "Tournament not found"
#: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:152 #: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:133
#: src/features/tournaments/components/upcoming-tournament/rules-list-button.tsx:25 #: src/features/tournaments/components/upcoming-tournament/rules-list-button.tsx:25
msgid "Tournament Rules" msgid "Tournament Rules"
msgstr "Tournament Rules" msgstr "Tournament Rules"
@@ -2786,7 +2759,7 @@ msgstr "trackId is required for playTrack action"
msgid "Try the new themes" msgid "Try the new themes"
msgstr "Try the new themes" msgstr "Try the new themes"
#: src/features/admin/components/dashboard/quiet-boundary.tsx:26 #: src/features/admin/components/dashboard/quiet-boundary.tsx:24
msgid "Unavailable right now" msgid "Unavailable right now"
msgstr "Unavailable right now" msgstr "Unavailable right now"
@@ -2851,10 +2824,6 @@ msgstr "Update Tournament"
msgid "Usage" msgid "Usage"
msgstr "Usage" msgstr "Usage"
#: src/features/admin/components/dashboard/usage-card.tsx:34
msgid "Usage, 7 days"
msgstr "Usage, 7 days"
#: src/features/activities/components/activities-table.tsx:202 #: src/features/activities/components/activities-table.tsx:202
#: src/features/telemetry/components/client-events-table.tsx:146 #: src/features/telemetry/components/client-events-table.tsx:146
msgid "User Agent" msgid "User Agent"
@@ -2898,7 +2867,7 @@ msgstr "View Predictions"
msgid "Viewport" msgid "Viewport"
msgstr "Viewport" msgstr "Viewport"
#: src/features/telemetry/components/usage-screen.tsx:211 #: src/features/telemetry/components/usage-screen.tsx:213
msgid "Vitals" msgid "Vitals"
msgstr "Vitals" msgstr "Vitals"
+51 -82
View File
@@ -153,7 +153,7 @@ msgstr "{0}ms"
msgid "{count, plural, one {Players (#)} other {Players (#)}}" msgid "{count, plural, one {Players (#)} other {Players (#)}}"
msgstr "{count, plural, one {Jugadores (#)} other {Jugadores (#)}}" msgstr "{count, plural, one {Jugadores (#)} other {Jugadores (#)}}"
#: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:134 #: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:115
#: src/features/tournaments/components/upcoming-tournament/team-list-button.tsx:24 #: src/features/tournaments/components/upcoming-tournament/team-list-button.tsx:24
msgid "{count, plural, one {Teams (#)} other {Teams (#)}}" msgid "{count, plural, one {Teams (#)} other {Teams (#)}}"
msgstr "{count, plural, one {Equipos (#)} other {Equipos (#)}}" msgstr "{count, plural, one {Equipos (#)} other {Equipos (#)}}"
@@ -355,7 +355,7 @@ msgstr "2. Envío más temprano"
msgid "2nd place" msgid "2nd place"
msgstr "2do lugar" msgstr "2do lugar"
#: src/features/telemetry/components/usage-screen.tsx:256 #: src/features/telemetry/components/usage-screen.tsx:258
msgid "30d" msgid "30d"
msgstr "30d" msgstr "30d"
@@ -371,7 +371,7 @@ msgstr "3er lugar"
msgid "5s" msgid "5s"
msgstr "5s" msgstr "5s"
#: src/features/telemetry/components/usage-screen.tsx:255 #: src/features/telemetry/components/usage-screen.tsx:257
msgid "7d" msgid "7d"
msgstr "7d" msgstr "7d"
@@ -420,10 +420,6 @@ msgstr "¡Cuenta creada exitosamente!"
msgid "Active device: {0}" msgid "Active device: {0}"
msgstr "Dispositivo activo: {0}" msgstr "Dispositivo activo: {0}"
#: src/features/admin/components/dashboard/usage-card.tsx:39
msgid "Active players"
msgstr "Jugadores activos"
#: src/features/activities/components/activities-table.tsx:159 #: src/features/activities/components/activities-table.tsx:159
msgid "Activity Details" msgid "Activity Details"
msgstr "Detalles de la actividad" msgstr "Detalles de la actividad"
@@ -441,7 +437,7 @@ msgid "Add Team"
msgstr "Agregar Equipo" msgstr "Agregar Equipo"
#: src/app/routes/_authed/admin.tsx:15 #: src/app/routes/_authed/admin.tsx:15
#: src/app/routes/_authed/admin/index.tsx:22 #: src/app/routes/_authed/admin/index.tsx:27
#: src/features/core/hooks/use-links.ts:37 #: src/features/core/hooks/use-links.ts:37
msgid "Admin" msgid "Admin"
msgstr "Admin" msgstr "Admin"
@@ -564,7 +560,7 @@ msgstr "Prom. Margen de Victoria"
msgid "Award Badge" msgid "Award Badge"
msgstr "Otorgar insignia" msgstr "Otorgar insignia"
#: src/features/admin/components/dashboard/tools-list.tsx:54 #: src/features/admin/components/dashboard/tools-list.tsx:60
msgid "Award Badges" msgid "Award Badges"
msgstr "Otorgar insignias" msgstr "Otorgar insignias"
@@ -598,15 +594,15 @@ msgstr "Atrás"
msgid "Badge awarded to {playerName}" msgid "Badge awarded to {playerName}"
msgstr "Insignia otorgada a {playerName}" msgstr "Insignia otorgada a {playerName}"
#: src/features/admin/components/dashboard/tools-list.tsx:85 #: src/features/admin/components/dashboard/tools-list.tsx:91
msgid "Badge recalculation failed. Check the server logs." msgid "Badge recalculation failed. Check the server logs."
msgstr "Falló el recálculo de insignias. Revisa los registros del servidor." msgstr "Falló el recálculo de insignias. Revisa los registros del servidor."
#: src/features/admin/components/dashboard/tools-list.tsx:38 #: src/features/admin/components/dashboard/tools-list.tsx:39
msgid "Badge recalculation is already running" msgid "Badge recalculation is already running"
msgstr "El recálculo de insignias ya está en curso" msgstr "El recálculo de insignias ya está en curso"
#: src/features/admin/components/dashboard/tools-list.tsx:37 #: src/features/admin/components/dashboard/tools-list.tsx:38
msgid "Badge recalculation started in the background" msgid "Badge recalculation started in the background"
msgstr "Recálculo de insignias iniciado en segundo plano" msgstr "Recálculo de insignias iniciado en segundo plano"
@@ -631,13 +627,13 @@ msgstr "Circo"
msgid "Both teams cannot have 10 cups" msgid "Both teams cannot have 10 cups"
msgstr "Los dos equipos no pueden tener 10 vasos" msgstr "Los dos equipos no pueden tener 10 vasos"
#: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:106 #: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:87
#: src/features/tournaments/components/upcoming-tournament/index.tsx:151 #: src/features/tournaments/components/upcoming-tournament/index.tsx:151
msgid "Bracket" msgid "Bracket"
msgstr "Bracket" msgstr "Bracket"
#: src/app/routes/_authed/admin/preview.tsx:13 #: src/app/routes/_authed/admin/preview.tsx:13
#: src/features/admin/components/dashboard/tools-list.tsx:96 #: src/features/admin/components/dashboard/tools-list.tsx:102
msgid "Bracket Preview" msgid "Bracket Preview"
msgstr "Vista previa del bracket" msgstr "Vista previa del bracket"
@@ -654,7 +650,7 @@ msgstr "Brutal"
msgid "CA" msgid "CA"
msgstr "VC" msgstr "VC"
#: src/features/admin/components/dashboard/now-strip.tsx:52 #: src/features/admin/components/dashboard/status-strip.tsx:67
msgid "Calls today" msgid "Calls today"
msgstr "Llamadas hoy" msgstr "Llamadas hoy"
@@ -720,16 +716,12 @@ msgstr "Quitar jugador seleccionado"
msgid "Client error spike" msgid "Client error spike"
msgstr "Aumento de errores de cliente" msgstr "Aumento de errores de cliente"
#: src/features/admin/components/dashboard/errors-card.tsx:21
msgid "Client errors"
msgstr "Errores de cliente"
#: src/features/telemetry/components/usage-screen.tsx:203 #: src/features/telemetry/components/usage-screen.tsx:203
msgid "Client errors per day" msgid "Client errors per day"
msgstr "Errores de cliente por día" msgstr "Errores de cliente por día"
#: src/components/sheet/modal.tsx:35 #: src/components/sheet/modal.tsx:35
#: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:169 #: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:150
#: src/features/tournaments/components/upcoming-tournament/rules-list-button.tsx:36 #: src/features/tournaments/components/upcoming-tournament/rules-list-button.tsx:36
msgid "Close" msgid "Close"
msgstr "Cerrar" msgstr "Cerrar"
@@ -883,15 +875,10 @@ msgstr "Vasos anotados"
msgid "Custom Hex Code" msgid "Custom Hex Code"
msgstr "Código hex personalizado" msgstr "Código hex personalizado"
#: src/features/admin/components/dashboard/usage-card.tsx:41
#: src/features/telemetry/components/usage-screen.tsx:159 #: src/features/telemetry/components/usage-screen.tsx:159
msgid "Daily active players" msgid "Daily active players"
msgstr "Jugadores activos diarios" msgstr "Jugadores activos diarios"
#: src/features/admin/components/dashboard/usage-card.tsx:47
msgid "Daily page views"
msgstr "Vistas de página diarias"
#: src/features/settings/components/color-scheme-picker.tsx:39 #: src/features/settings/components/color-scheme-picker.tsx:39
msgid "Dark" msgid "Dark"
msgstr "Oscuro" msgstr "Oscuro"
@@ -947,7 +934,7 @@ msgstr "Los partidos posteriores se reiniciaron porque la corrección cambió qu
msgid "Duration" msgid "Duration"
msgstr "Duración" msgstr "Duración"
#: src/features/telemetry/components/usage-screen.tsx:233 #: src/features/telemetry/components/usage-screen.tsx:235
msgid "Duration p50 / p95" msgid "Duration p50 / p95"
msgstr "Duración p50 / p95" msgstr "Duración p50 / p95"
@@ -970,12 +957,12 @@ msgstr "Editar partido"
msgid "Edit match score" msgid "Edit match score"
msgstr "Editar marcador del partido" msgstr "Editar marcador del partido"
#: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:114 #: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:95
msgid "Edit Prediction" msgid "Edit Prediction"
msgstr "Editar predicción" msgstr "Editar predicción"
#: src/features/tournaments/components/manage-tournament.tsx:65 #: src/features/tournaments/components/manage-tournament.tsx:56
#: src/features/tournaments/components/manage-tournament.tsx:92 #: src/features/tournaments/components/manage-tournament.tsx:83
msgid "Edit Rules" msgid "Edit Rules"
msgstr "Editar reglas" msgstr "Editar reglas"
@@ -984,8 +971,8 @@ msgstr "Editar reglas"
msgid "Edit Team" msgid "Edit Team"
msgstr "Editar equipo" msgstr "Editar equipo"
#: src/features/tournaments/components/manage-tournament.tsx:60 #: src/features/tournaments/components/manage-tournament.tsx:51
#: src/features/tournaments/components/manage-tournament.tsx:72 #: src/features/tournaments/components/manage-tournament.tsx:63
msgid "Edit Tournament" msgid "Edit Tournament"
msgstr "Editar torneo" msgstr "Editar torneo"
@@ -1048,7 +1035,7 @@ msgstr "Jugadores inscritos"
#: src/features/tournaments/components/enrollment/enrollment-stats.tsx:28 #: src/features/tournaments/components/enrollment/enrollment-stats.tsx:28
#: src/features/tournaments/components/enrollment/team-section.tsx:240 #: src/features/tournaments/components/enrollment/team-section.tsx:240
#: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:145 #: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:126
#: src/features/tournaments/components/upcoming-tournament/team-list-button.tsx:31 #: src/features/tournaments/components/upcoming-tournament/team-list-button.tsx:31
msgid "Enrolled Teams" msgid "Enrolled Teams"
msgstr "Equipos inscritos" msgstr "Equipos inscritos"
@@ -1058,13 +1045,13 @@ msgid "Enrolling as a free agent adds you to a pool of players looking for teamm
msgstr "Inscribirte como agente libre te agrega a un grupo de jugadores buscando compañeros de equipo." msgstr "Inscribirte como agente libre te agrega a un grupo de jugadores buscando compañeros de equipo."
#: src/app/routes/_authed/admin/tournaments/$id/enrollment.tsx:33 #: src/app/routes/_authed/admin/tournaments/$id/enrollment.tsx:33
#: src/features/admin/components/dashboard/tournament-card.tsx:61 #: src/features/admin/components/dashboard/tournament-section.tsx:34
#: src/features/tournaments/components/upcoming-tournament/enroll-free-agent.tsx:29 #: src/features/tournaments/components/upcoming-tournament/enroll-free-agent.tsx:29
#: src/features/tournaments/components/upcoming-tournament/index.tsx:69 #: src/features/tournaments/components/upcoming-tournament/index.tsx:69
msgid "Enrollment" msgid "Enrollment"
msgstr "Inscripción" msgstr "Inscripción"
#: src/features/tournaments/components/manage-tournament.tsx:55 #: src/features/tournaments/components/manage-tournament.tsx:46
msgid "Enrollment & Teams" msgid "Enrollment & Teams"
msgstr "Inscripción y equipos" msgstr "Inscripción y equipos"
@@ -1181,7 +1168,7 @@ msgstr "No se pudo establecer el dispositivo activo"
msgid "Failed to set volume" msgid "Failed to set volume"
msgstr "No se pudo ajustar el volumen" msgstr "No se pudo ajustar el volumen"
#: src/features/admin/components/dashboard/tools-list.tsx:41 #: src/features/admin/components/dashboard/tools-list.tsx:42
msgid "Failed to start badge recalculation" msgid "Failed to start badge recalculation"
msgstr "No se pudo iniciar el recálculo de insignias" msgstr "No se pudo iniciar el recálculo de insignias"
@@ -1251,7 +1238,7 @@ msgstr "Inscripción de agente libre"
msgid "Free Agents" msgid "Free Agents"
msgstr "Agentes libres" msgstr "Agentes libres"
#: src/features/telemetry/components/usage-screen.tsx:226 #: src/features/telemetry/components/usage-screen.tsx:228
msgid "Function" msgid "Function"
msgstr "Función" msgstr "Función"
@@ -1319,7 +1306,7 @@ msgstr "¡Fase de grupos generada con éxito!"
msgid "Group Stage Setup" msgid "Group Stage Setup"
msgstr "Configuración de la fase de grupos" msgstr "Configuración de la fase de grupos"
#: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:98 #: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:79
msgid "Groups" msgid "Groups"
msgstr "Grupos" msgstr "Grupos"
@@ -1465,7 +1452,7 @@ msgid "Last name must be 3-20 characters long and contain only letters"
msgstr "El apellido debe tener entre 3 y 20 caracteres y contener solo letras" msgstr "El apellido debe tener entre 3 y 20 caracteres y contener solo letras"
#. placeholder {0}: migrationStatus.result.totalBadgesEarned #. placeholder {0}: migrationStatus.result.totalBadgesEarned
#: src/features/admin/components/dashboard/tools-list.tsx:73 #: src/features/admin/components/dashboard/tools-list.tsx:79
msgid "Last recalculation: {0, plural, one {# badge earned} other {# badges earned}}" msgid "Last recalculation: {0, plural, one {# badge earned} other {# badges earned}}"
msgstr "Último recálculo: {0, plural, one {# insignia obtenida} other {# insignias obtenidas}}" msgstr "Último recálculo: {0, plural, one {# insignia obtenida} other {# insignias obtenidas}}"
@@ -1530,7 +1517,7 @@ msgstr "J"
msgid "Mainline" msgid "Mainline"
msgstr "Mainline" msgstr "Mainline"
#: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:114 #: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:95
msgid "Make Prediction" msgid "Make Prediction"
msgstr "Hacer predicción" msgstr "Hacer predicción"
@@ -1538,8 +1525,8 @@ msgstr "Hacer predicción"
msgid "Make Your Prediction" msgid "Make Your Prediction"
msgstr "Haz tu predicción" msgstr "Haz tu predicción"
#: src/features/admin/components/dashboard/tournament-card.tsx:68 #: src/features/admin/components/dashboard/tournament-section.tsx:39
#: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:89 #: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:70
#: src/features/tournaments/components/upcoming-tournament/index.tsx:144 #: src/features/tournaments/components/upcoming-tournament/index.tsx:144
msgid "Manage" msgid "Manage"
msgstr "Administrar" msgstr "Administrar"
@@ -1554,8 +1541,7 @@ msgid "Manage Team Songs/Logos"
msgstr "Administrar canciones/logos del equipo" msgstr "Administrar canciones/logos del equipo"
#: src/app/routes/_authed/admin/tournaments/index.tsx:17 #: src/app/routes/_authed/admin/tournaments/index.tsx:17
#: src/features/admin/components/dashboard/tools-list.tsx:49 #: src/features/admin/components/dashboard/tools-list.tsx:50
#: src/features/admin/components/dashboard/tournament-card.tsx:25
msgid "Manage Tournaments" msgid "Manage Tournaments"
msgstr "Administrar torneos" msgstr "Administrar torneos"
@@ -1642,7 +1628,7 @@ msgstr "MAU"
msgid "Me" msgid "Me"
msgstr "Yo" msgstr "Yo"
#: src/features/admin/components/dashboard/tools-list.tsx:59 #: src/features/admin/components/dashboard/tools-list.tsx:65
msgid "Migrate Badge Progress" msgid "Migrate Badge Progress"
msgstr "Migrar progreso de insignias" msgstr "Migrar progreso de insignias"
@@ -1748,10 +1734,6 @@ msgstr "No hay reproducción activa para capturar"
msgid "No Activities Found" msgid "No Activities Found"
msgstr "No se encontraron actividades" msgstr "No se encontraron actividades"
#: src/features/admin/components/dashboard/activity-feed.tsx:78
msgid "No activity yet"
msgstr "Aún no hay actividad"
#: src/features/badges/components/badge-stats-table.tsx:45 #: src/features/badges/components/badge-stats-table.tsx:45
msgid "No Badges Available" msgid "No Badges Available"
msgstr "No hay insignias disponibles" msgstr "No hay insignias disponibles"
@@ -1844,15 +1826,10 @@ msgstr "No se encontraron equipos que coincidan con \"{search}\""
msgid "No tournaments found" msgid "No tournaments found"
msgstr "No se encontraron torneos" msgstr "No se encontraron torneos"
#: src/features/admin/components/dashboard/tournament-card.tsx:18
msgid "No tournaments yet"
msgstr "Aún no hay torneos"
#: src/features/tournaments/components/tournament-card-list.tsx:40 #: src/features/tournaments/components/tournament-card-list.tsx:40
msgid "No Tournaments Yet" msgid "No Tournaments Yet"
msgstr "Aún no hay torneos" msgstr "Aún no hay torneos"
#: src/features/admin/components/dashboard/errors-card.tsx:53
#: src/features/telemetry/components/error-browser/error-browser.tsx:27 #: src/features/telemetry/components/error-browser/error-browser.tsx:27
msgid "No unresolved errors" msgid "No unresolved errors"
msgstr "No hay errores sin resolver" msgstr "No hay errores sin resolver"
@@ -1914,15 +1891,15 @@ msgstr "Una vez inscrito, puedes ver a otros agentes libres y su número de tel
msgid "One time code" msgid "One time code"
msgstr "Código de un solo uso" msgstr "Código de un solo uso"
#: src/features/admin/components/dashboard/now-strip.tsx:44 #: src/features/admin/components/dashboard/status-strip.tsx:56
msgid "Online now" msgid "Online"
msgstr "En línea ahora" msgstr "En línea"
#: src/features/admin/components/dashboard/now-strip.tsx:46 #: src/features/admin/components/dashboard/status-strip.tsx:61
msgid "Open errors" msgid "Open errors"
msgstr "Errores abiertos" msgstr "Errores abiertos"
#: src/features/admin/components/dashboard/tools-list.tsx:89 #: src/features/admin/components/dashboard/tools-list.tsx:95
msgid "Open Pocketbase" msgid "Open Pocketbase"
msgstr "Abrir Pocketbase" msgstr "Abrir Pocketbase"
@@ -1972,11 +1949,7 @@ msgstr "p50"
msgid "p95" msgid "p95"
msgstr "p95" msgstr "p95"
#: src/features/admin/components/dashboard/usage-card.tsx:45 #: src/features/telemetry/components/usage-screen.tsx:176
msgid "Page views"
msgstr "Vistas de página"
#: src/features/telemetry/components/usage-screen.tsx:177
msgid "Page views by route" msgid "Page views by route"
msgstr "Vistas de página por ruta" msgstr "Vistas de página por ruta"
@@ -2095,7 +2068,7 @@ msgstr "Puntuación de predicciones:"
#: src/app/routes/_authed/tournaments/$id.predictions.tsx:23 #: src/app/routes/_authed/tournaments/$id.predictions.tsx:23
#: src/features/predictions/components/prediction-leaderboard.tsx:147 #: src/features/predictions/components/prediction-leaderboard.tsx:147
#: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:123 #: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:104
msgid "Predictions" msgid "Predictions"
msgstr "Predicciones" msgstr "Predicciones"
@@ -2146,14 +2119,10 @@ msgstr "Reacciones"
#. placeholder {0}: migrationStatus.playersProcessed #. placeholder {0}: migrationStatus.playersProcessed
#. placeholder {1}: migrationStatus.totalPlayers #. placeholder {1}: migrationStatus.totalPlayers
#: src/features/admin/components/dashboard/tools-list.tsx:66 #: src/features/admin/components/dashboard/tools-list.tsx:72
msgid "Recalculating badges in the background ({0}/{1})" msgid "Recalculating badges in the background ({0}/{1})"
msgstr "Recalculando insignias en segundo plano ({0}/{1})" msgstr "Recalculando insignias en segundo plano ({0}/{1})"
#: src/features/admin/components/dashboard/activity-feed.tsx:34
msgid "Recent activity"
msgstr "Actividad reciente"
#: src/features/tournaments/components/started-tournament/sections/recent-results.tsx:34 #: src/features/tournaments/components/started-tournament/sections/recent-results.tsx:34
msgid "Recently finished" msgid "Recently finished"
msgstr "Recién terminados" msgstr "Recién terminados"
@@ -2218,17 +2187,20 @@ msgstr "Ronda {0}"
msgid "Route" msgid "Route"
msgstr "Ruta" msgstr "Ruta"
#: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:142 #: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:123
#: src/features/tournaments/components/upcoming-tournament/rules-list-button.tsx:23 #: src/features/tournaments/components/upcoming-tournament/rules-list-button.tsx:23
msgid "Rules" msgid "Rules"
msgstr "Reglas" msgstr "Reglas"
#: src/features/admin/components/dashboard/tournament-section.tsx:29
msgid "Run"
msgstr "Iniciar"
#: src/app/routes/_authed/admin/tournaments/run.$id.tsx:36 #: src/app/routes/_authed/admin/tournaments/run.$id.tsx:36
msgid "Run {name}" msgid "Run {name}"
msgstr "Ejecutar {name}" msgstr "Ejecutar {name}"
#: src/features/admin/components/dashboard/tournament-card.tsx:53 #: src/features/tournaments/components/manage-tournament.tsx:41
#: src/features/tournaments/components/manage-tournament.tsx:49
msgid "Run Tournament" msgid "Run Tournament"
msgstr "Iniciar torneo" msgstr "Iniciar torneo"
@@ -2517,7 +2489,7 @@ msgstr "Se requiere la hora de inicio"
msgid "Start typing to search..." msgid "Start typing to search..."
msgstr "Empieza a escribir para buscar..." msgstr "Empieza a escribir para buscar..."
#: src/features/admin/components/dashboard/tournament-card.tsx:43 #: src/features/admin/components/dashboard/tournament-section.tsx:24
msgid "Starts in" msgid "Starts in"
msgstr "Comienza en" msgstr "Comienza en"
@@ -2639,7 +2611,7 @@ msgstr "¡Equipo actualizado exitosamente!"
#: src/features/players/components/profile/skeleton.tsx:75 #: src/features/players/components/profile/skeleton.tsx:75
#: src/features/tournaments/components/profile/index.tsx:32 #: src/features/tournaments/components/profile/index.tsx:32
#: src/features/tournaments/components/profile/skeleton.tsx:89 #: src/features/tournaments/components/profile/skeleton.tsx:89
#: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:137 #: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:118
msgid "Teams" msgid "Teams"
msgstr "Equipos" msgstr "Equipos"
@@ -2648,6 +2620,7 @@ msgid "Teams created successfully!"
msgstr "¡Equipos creados exitosamente!" msgstr "¡Equipos creados exitosamente!"
#: src/app/routes/_authed/admin/telemetry.tsx:20 #: src/app/routes/_authed/admin/telemetry.tsx:20
#: src/features/admin/components/dashboard/tools-list.tsx:55
msgid "Telemetry" msgid "Telemetry"
msgstr "Telemetría" msgstr "Telemetría"
@@ -2730,7 +2703,7 @@ msgstr "{0, plural, one {El mejor equipo de cada grupo avanzará} other {Los mej
msgid "Top {n} advance" msgid "Top {n} advance"
msgstr "Los mejores {n} avanzan" msgstr "Los mejores {n} avanzan"
#: src/features/telemetry/components/usage-screen.tsx:191 #: src/features/telemetry/components/usage-screen.tsx:190
msgid "Top functions by call count" msgid "Top functions by call count"
msgstr "Funciones principales por cantidad de llamadas" msgstr "Funciones principales por cantidad de llamadas"
@@ -2757,7 +2730,7 @@ msgstr "¡Torneo creado exitosamente!"
msgid "Tournament not found" msgid "Tournament not found"
msgstr "Torneo no encontrado" msgstr "Torneo no encontrado"
#: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:152 #: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:133
#: src/features/tournaments/components/upcoming-tournament/rules-list-button.tsx:25 #: src/features/tournaments/components/upcoming-tournament/rules-list-button.tsx:25
msgid "Tournament Rules" msgid "Tournament Rules"
msgstr "Reglas del torneo" msgstr "Reglas del torneo"
@@ -2786,7 +2759,7 @@ msgstr "Se requiere trackId para la acción playTrack"
msgid "Try the new themes" msgid "Try the new themes"
msgstr "Prueba los nuevos temas" msgstr "Prueba los nuevos temas"
#: src/features/admin/components/dashboard/quiet-boundary.tsx:26 #: src/features/admin/components/dashboard/quiet-boundary.tsx:24
msgid "Unavailable right now" msgid "Unavailable right now"
msgstr "No disponible por ahora" msgstr "No disponible por ahora"
@@ -2851,10 +2824,6 @@ msgstr "Actualizar torneo"
msgid "Usage" msgid "Usage"
msgstr "Uso" msgstr "Uso"
#: src/features/admin/components/dashboard/usage-card.tsx:34
msgid "Usage, 7 days"
msgstr "Uso, 7 días"
#: src/features/activities/components/activities-table.tsx:202 #: src/features/activities/components/activities-table.tsx:202
#: src/features/telemetry/components/client-events-table.tsx:146 #: src/features/telemetry/components/client-events-table.tsx:146
msgid "User Agent" msgid "User Agent"
@@ -2898,7 +2867,7 @@ msgstr "Ver predicciones"
msgid "Viewport" msgid "Viewport"
msgstr "Viewport" msgstr "Viewport"
#: src/features/telemetry/components/usage-screen.tsx:211 #: src/features/telemetry/components/usage-screen.tsx:213
msgid "Vitals" msgid "Vitals"
msgstr "Vitales" msgstr "Vitales"
+51 -82
View File
@@ -153,7 +153,7 @@ msgstr "{0}ms"
msgid "{count, plural, one {Players (#)} other {Players (#)}}" msgid "{count, plural, one {Players (#)} other {Players (#)}}"
msgstr "{count, plural, one {プレイヤー(#)} other {プレイヤー(#)}}" msgstr "{count, plural, one {プレイヤー(#)} other {プレイヤー(#)}}"
#: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:134 #: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:115
#: src/features/tournaments/components/upcoming-tournament/team-list-button.tsx:24 #: src/features/tournaments/components/upcoming-tournament/team-list-button.tsx:24
msgid "{count, plural, one {Teams (#)} other {Teams (#)}}" msgid "{count, plural, one {Teams (#)} other {Teams (#)}}"
msgstr "{count, plural, one {チーム(#)} other {チーム(#)}}" msgstr "{count, plural, one {チーム(#)} other {チーム(#)}}"
@@ -355,7 +355,7 @@ msgstr "2. 早い提出"
msgid "2nd place" msgid "2nd place"
msgstr "2位" msgstr "2位"
#: src/features/telemetry/components/usage-screen.tsx:256 #: src/features/telemetry/components/usage-screen.tsx:258
msgid "30d" msgid "30d"
msgstr "30日" msgstr "30日"
@@ -371,7 +371,7 @@ msgstr "3位"
msgid "5s" msgid "5s"
msgstr "5秒" msgstr "5秒"
#: src/features/telemetry/components/usage-screen.tsx:255 #: src/features/telemetry/components/usage-screen.tsx:257
msgid "7d" msgid "7d"
msgstr "7日" msgstr "7日"
@@ -420,10 +420,6 @@ msgstr "アカウントが作成されました!"
msgid "Active device: {0}" msgid "Active device: {0}"
msgstr "アクティブなデバイス: {0}" msgstr "アクティブなデバイス: {0}"
#: src/features/admin/components/dashboard/usage-card.tsx:39
msgid "Active players"
msgstr "アクティブなプレイヤー"
#: src/features/activities/components/activities-table.tsx:159 #: src/features/activities/components/activities-table.tsx:159
msgid "Activity Details" msgid "Activity Details"
msgstr "アクティビティの詳細" msgstr "アクティビティの詳細"
@@ -441,7 +437,7 @@ msgid "Add Team"
msgstr "チームを追加" msgstr "チームを追加"
#: src/app/routes/_authed/admin.tsx:15 #: src/app/routes/_authed/admin.tsx:15
#: src/app/routes/_authed/admin/index.tsx:22 #: src/app/routes/_authed/admin/index.tsx:27
#: src/features/core/hooks/use-links.ts:37 #: src/features/core/hooks/use-links.ts:37
msgid "Admin" msgid "Admin"
msgstr "管理者" msgstr "管理者"
@@ -564,7 +560,7 @@ msgstr "平均勝差"
msgid "Award Badge" msgid "Award Badge"
msgstr "バッジを付与" msgstr "バッジを付与"
#: src/features/admin/components/dashboard/tools-list.tsx:54 #: src/features/admin/components/dashboard/tools-list.tsx:60
msgid "Award Badges" msgid "Award Badges"
msgstr "バッジを付与" msgstr "バッジを付与"
@@ -598,15 +594,15 @@ msgstr "戻る"
msgid "Badge awarded to {playerName}" msgid "Badge awarded to {playerName}"
msgstr "{playerName}にバッジを付与しました" msgstr "{playerName}にバッジを付与しました"
#: src/features/admin/components/dashboard/tools-list.tsx:85 #: src/features/admin/components/dashboard/tools-list.tsx:91
msgid "Badge recalculation failed. Check the server logs." msgid "Badge recalculation failed. Check the server logs."
msgstr "バッジの再計算に失敗しました。サーバーログを確認してください。" msgstr "バッジの再計算に失敗しました。サーバーログを確認してください。"
#: src/features/admin/components/dashboard/tools-list.tsx:38 #: src/features/admin/components/dashboard/tools-list.tsx:39
msgid "Badge recalculation is already running" msgid "Badge recalculation is already running"
msgstr "バッジの再計算はすでに実行中です" msgstr "バッジの再計算はすでに実行中です"
#: src/features/admin/components/dashboard/tools-list.tsx:37 #: src/features/admin/components/dashboard/tools-list.tsx:38
msgid "Badge recalculation started in the background" msgid "Badge recalculation started in the background"
msgstr "バックグラウンドでバッジの再計算を開始しました" msgstr "バックグラウンドでバッジの再計算を開始しました"
@@ -631,13 +627,13 @@ msgstr "サーカス"
msgid "Both teams cannot have 10 cups" msgid "Both teams cannot have 10 cups"
msgstr "両チーム同時に10カップにはなりません" msgstr "両チーム同時に10カップにはなりません"
#: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:106 #: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:87
#: src/features/tournaments/components/upcoming-tournament/index.tsx:151 #: src/features/tournaments/components/upcoming-tournament/index.tsx:151
msgid "Bracket" msgid "Bracket"
msgstr "ブラケット" msgstr "ブラケット"
#: src/app/routes/_authed/admin/preview.tsx:13 #: src/app/routes/_authed/admin/preview.tsx:13
#: src/features/admin/components/dashboard/tools-list.tsx:96 #: src/features/admin/components/dashboard/tools-list.tsx:102
msgid "Bracket Preview" msgid "Bracket Preview"
msgstr "ブラケットプレビュー" msgstr "ブラケットプレビュー"
@@ -654,7 +650,7 @@ msgstr "ブルータル"
msgid "CA" msgid "CA"
msgstr "CA" msgstr "CA"
#: src/features/admin/components/dashboard/now-strip.tsx:52 #: src/features/admin/components/dashboard/status-strip.tsx:67
msgid "Calls today" msgid "Calls today"
msgstr "本日の呼び出し数" msgstr "本日の呼び出し数"
@@ -720,16 +716,12 @@ msgstr "選択したプレイヤーを解除"
msgid "Client error spike" msgid "Client error spike"
msgstr "クライアントエラー急増" msgstr "クライアントエラー急増"
#: src/features/admin/components/dashboard/errors-card.tsx:21
msgid "Client errors"
msgstr "クライアントエラー"
#: src/features/telemetry/components/usage-screen.tsx:203 #: src/features/telemetry/components/usage-screen.tsx:203
msgid "Client errors per day" msgid "Client errors per day"
msgstr "1日あたりのクライアントエラー数" msgstr "1日あたりのクライアントエラー数"
#: src/components/sheet/modal.tsx:35 #: src/components/sheet/modal.tsx:35
#: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:169 #: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:150
#: src/features/tournaments/components/upcoming-tournament/rules-list-button.tsx:36 #: src/features/tournaments/components/upcoming-tournament/rules-list-button.tsx:36
msgid "Close" msgid "Close"
msgstr "閉じる" msgstr "閉じる"
@@ -883,15 +875,10 @@ msgstr "決めたカップ"
msgid "Custom Hex Code" msgid "Custom Hex Code"
msgstr "カスタムHEXコード" msgstr "カスタムHEXコード"
#: src/features/admin/components/dashboard/usage-card.tsx:41
#: src/features/telemetry/components/usage-screen.tsx:159 #: src/features/telemetry/components/usage-screen.tsx:159
msgid "Daily active players" msgid "Daily active players"
msgstr "デイリーアクティブプレイヤー数" msgstr "デイリーアクティブプレイヤー数"
#: src/features/admin/components/dashboard/usage-card.tsx:47
msgid "Daily page views"
msgstr "1日あたりのページビュー数"
#: src/features/settings/components/color-scheme-picker.tsx:39 #: src/features/settings/components/color-scheme-picker.tsx:39
msgid "Dark" msgid "Dark"
msgstr "ダーク" msgstr "ダーク"
@@ -947,7 +934,7 @@ msgstr "修正により勝ち上がりの相手が変わったため、以降の
msgid "Duration" msgid "Duration"
msgstr "所要時間" msgstr "所要時間"
#: src/features/telemetry/components/usage-screen.tsx:233 #: src/features/telemetry/components/usage-screen.tsx:235
msgid "Duration p50 / p95" msgid "Duration p50 / p95"
msgstr "所要時間 p50 / p95" msgstr "所要時間 p50 / p95"
@@ -970,12 +957,12 @@ msgstr "試合を編集"
msgid "Edit match score" msgid "Edit match score"
msgstr "試合スコアを編集" msgstr "試合スコアを編集"
#: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:114 #: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:95
msgid "Edit Prediction" msgid "Edit Prediction"
msgstr "予想を編集" msgstr "予想を編集"
#: src/features/tournaments/components/manage-tournament.tsx:65 #: src/features/tournaments/components/manage-tournament.tsx:56
#: src/features/tournaments/components/manage-tournament.tsx:92 #: src/features/tournaments/components/manage-tournament.tsx:83
msgid "Edit Rules" msgid "Edit Rules"
msgstr "ルールを編集" msgstr "ルールを編集"
@@ -984,8 +971,8 @@ msgstr "ルールを編集"
msgid "Edit Team" msgid "Edit Team"
msgstr "チームを編集" msgstr "チームを編集"
#: src/features/tournaments/components/manage-tournament.tsx:60 #: src/features/tournaments/components/manage-tournament.tsx:51
#: src/features/tournaments/components/manage-tournament.tsx:72 #: src/features/tournaments/components/manage-tournament.tsx:63
msgid "Edit Tournament" msgid "Edit Tournament"
msgstr "トーナメントを編集" msgstr "トーナメントを編集"
@@ -1048,7 +1035,7 @@ msgstr "登録済みプレイヤー"
#: src/features/tournaments/components/enrollment/enrollment-stats.tsx:28 #: src/features/tournaments/components/enrollment/enrollment-stats.tsx:28
#: src/features/tournaments/components/enrollment/team-section.tsx:240 #: src/features/tournaments/components/enrollment/team-section.tsx:240
#: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:145 #: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:126
#: src/features/tournaments/components/upcoming-tournament/team-list-button.tsx:31 #: src/features/tournaments/components/upcoming-tournament/team-list-button.tsx:31
msgid "Enrolled Teams" msgid "Enrolled Teams"
msgstr "登録済みチーム" msgstr "登録済みチーム"
@@ -1058,13 +1045,13 @@ msgid "Enrolling as a free agent adds you to a pool of players looking for teamm
msgstr "フリーエージェントとして登録すると、チームメイトを探しているプレイヤーのプールに追加されます。" msgstr "フリーエージェントとして登録すると、チームメイトを探しているプレイヤーのプールに追加されます。"
#: src/app/routes/_authed/admin/tournaments/$id/enrollment.tsx:33 #: src/app/routes/_authed/admin/tournaments/$id/enrollment.tsx:33
#: src/features/admin/components/dashboard/tournament-card.tsx:61 #: src/features/admin/components/dashboard/tournament-section.tsx:34
#: src/features/tournaments/components/upcoming-tournament/enroll-free-agent.tsx:29 #: src/features/tournaments/components/upcoming-tournament/enroll-free-agent.tsx:29
#: src/features/tournaments/components/upcoming-tournament/index.tsx:69 #: src/features/tournaments/components/upcoming-tournament/index.tsx:69
msgid "Enrollment" msgid "Enrollment"
msgstr "参加登録" msgstr "参加登録"
#: src/features/tournaments/components/manage-tournament.tsx:55 #: src/features/tournaments/components/manage-tournament.tsx:46
msgid "Enrollment & Teams" msgid "Enrollment & Teams"
msgstr "参加登録とチーム" msgstr "参加登録とチーム"
@@ -1181,7 +1168,7 @@ msgstr "アクティブなデバイスの設定に失敗しました"
msgid "Failed to set volume" msgid "Failed to set volume"
msgstr "音量の設定に失敗しました" msgstr "音量の設定に失敗しました"
#: src/features/admin/components/dashboard/tools-list.tsx:41 #: src/features/admin/components/dashboard/tools-list.tsx:42
msgid "Failed to start badge recalculation" msgid "Failed to start badge recalculation"
msgstr "バッジの再計算を開始できませんでした" msgstr "バッジの再計算を開始できませんでした"
@@ -1251,7 +1238,7 @@ msgstr "フリーエージェント登録"
msgid "Free Agents" msgid "Free Agents"
msgstr "フリーエージェント" msgstr "フリーエージェント"
#: src/features/telemetry/components/usage-screen.tsx:226 #: src/features/telemetry/components/usage-screen.tsx:228
msgid "Function" msgid "Function"
msgstr "関数" msgstr "関数"
@@ -1319,7 +1306,7 @@ msgstr "グループステージを生成しました!"
msgid "Group Stage Setup" msgid "Group Stage Setup"
msgstr "グループステージ設定" msgstr "グループステージ設定"
#: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:98 #: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:79
msgid "Groups" msgid "Groups"
msgstr "グループ" msgstr "グループ"
@@ -1465,7 +1452,7 @@ msgid "Last name must be 3-20 characters long and contain only letters"
msgstr "姓は3〜20文字の英字のみで入力してください" msgstr "姓は3〜20文字の英字のみで入力してください"
#. placeholder {0}: migrationStatus.result.totalBadgesEarned #. placeholder {0}: migrationStatus.result.totalBadgesEarned
#: src/features/admin/components/dashboard/tools-list.tsx:73 #: src/features/admin/components/dashboard/tools-list.tsx:79
msgid "Last recalculation: {0, plural, one {# badge earned} other {# badges earned}}" msgid "Last recalculation: {0, plural, one {# badge earned} other {# badges earned}}"
msgstr "前回の再計算:{0, plural, one {# 個のバッジを獲得} other {# 個のバッジを獲得}}" msgstr "前回の再計算:{0, plural, one {# 個のバッジを獲得} other {# 個のバッジを獲得}}"
@@ -1530,7 +1517,7 @@ msgstr "M"
msgid "Mainline" msgid "Mainline"
msgstr "メインライン" msgstr "メインライン"
#: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:114 #: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:95
msgid "Make Prediction" msgid "Make Prediction"
msgstr "予想する" msgstr "予想する"
@@ -1538,8 +1525,8 @@ msgstr "予想する"
msgid "Make Your Prediction" msgid "Make Your Prediction"
msgstr "予想を入力" msgstr "予想を入力"
#: src/features/admin/components/dashboard/tournament-card.tsx:68 #: src/features/admin/components/dashboard/tournament-section.tsx:39
#: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:89 #: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:70
#: src/features/tournaments/components/upcoming-tournament/index.tsx:144 #: src/features/tournaments/components/upcoming-tournament/index.tsx:144
msgid "Manage" msgid "Manage"
msgstr "管理" msgstr "管理"
@@ -1554,8 +1541,7 @@ msgid "Manage Team Songs/Logos"
msgstr "チームの曲・ロゴを管理" msgstr "チームの曲・ロゴを管理"
#: src/app/routes/_authed/admin/tournaments/index.tsx:17 #: src/app/routes/_authed/admin/tournaments/index.tsx:17
#: src/features/admin/components/dashboard/tools-list.tsx:49 #: src/features/admin/components/dashboard/tools-list.tsx:50
#: src/features/admin/components/dashboard/tournament-card.tsx:25
msgid "Manage Tournaments" msgid "Manage Tournaments"
msgstr "トーナメント管理" msgstr "トーナメント管理"
@@ -1642,7 +1628,7 @@ msgstr "MAU"
msgid "Me" msgid "Me"
msgstr "自分" msgstr "自分"
#: src/features/admin/components/dashboard/tools-list.tsx:59 #: src/features/admin/components/dashboard/tools-list.tsx:65
msgid "Migrate Badge Progress" msgid "Migrate Badge Progress"
msgstr "バッジ進捗を移行" msgstr "バッジ進捗を移行"
@@ -1748,10 +1734,6 @@ msgstr "キャプチャする再生中のプレイバックがありません"
msgid "No Activities Found" msgid "No Activities Found"
msgstr "アクティビティが見つかりません" msgstr "アクティビティが見つかりません"
#: src/features/admin/components/dashboard/activity-feed.tsx:78
msgid "No activity yet"
msgstr "まだアクティビティがありません"
#: src/features/badges/components/badge-stats-table.tsx:45 #: src/features/badges/components/badge-stats-table.tsx:45
msgid "No Badges Available" msgid "No Badges Available"
msgstr "利用可能なバッジがありません" msgstr "利用可能なバッジがありません"
@@ -1844,15 +1826,10 @@ msgstr "「{search}」に一致するチームが見つかりません"
msgid "No tournaments found" msgid "No tournaments found"
msgstr "トーナメントが見つかりません" msgstr "トーナメントが見つかりません"
#: src/features/admin/components/dashboard/tournament-card.tsx:18
msgid "No tournaments yet"
msgstr "トーナメントはまだありません"
#: src/features/tournaments/components/tournament-card-list.tsx:40 #: src/features/tournaments/components/tournament-card-list.tsx:40
msgid "No Tournaments Yet" msgid "No Tournaments Yet"
msgstr "トーナメントはまだありません" msgstr "トーナメントはまだありません"
#: src/features/admin/components/dashboard/errors-card.tsx:53
#: src/features/telemetry/components/error-browser/error-browser.tsx:27 #: src/features/telemetry/components/error-browser/error-browser.tsx:27
msgid "No unresolved errors" msgid "No unresolved errors"
msgstr "未解決のエラーはありません" msgstr "未解決のエラーはありません"
@@ -1914,15 +1891,15 @@ msgstr "登録が完了すると、他のフリーエージェントとその電
msgid "One time code" msgid "One time code"
msgstr "ワンタイムコード" msgstr "ワンタイムコード"
#: src/features/admin/components/dashboard/now-strip.tsx:44 #: src/features/admin/components/dashboard/status-strip.tsx:56
msgid "Online now" msgid "Online"
msgstr "現在オンライン" msgstr "オンライン"
#: src/features/admin/components/dashboard/now-strip.tsx:46 #: src/features/admin/components/dashboard/status-strip.tsx:61
msgid "Open errors" msgid "Open errors"
msgstr "未解決のエラー" msgstr "未解決のエラー"
#: src/features/admin/components/dashboard/tools-list.tsx:89 #: src/features/admin/components/dashboard/tools-list.tsx:95
msgid "Open Pocketbase" msgid "Open Pocketbase"
msgstr "Pocketbaseを開く" msgstr "Pocketbaseを開く"
@@ -1972,11 +1949,7 @@ msgstr "p50"
msgid "p95" msgid "p95"
msgstr "p95" msgstr "p95"
#: src/features/admin/components/dashboard/usage-card.tsx:45 #: src/features/telemetry/components/usage-screen.tsx:176
msgid "Page views"
msgstr "ページビュー数"
#: src/features/telemetry/components/usage-screen.tsx:177
msgid "Page views by route" msgid "Page views by route"
msgstr "ルート別ページビュー数" msgstr "ルート別ページビュー数"
@@ -2095,7 +2068,7 @@ msgstr "予想の得点方式:"
#: src/app/routes/_authed/tournaments/$id.predictions.tsx:23 #: src/app/routes/_authed/tournaments/$id.predictions.tsx:23
#: src/features/predictions/components/prediction-leaderboard.tsx:147 #: src/features/predictions/components/prediction-leaderboard.tsx:147
#: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:123 #: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:104
msgid "Predictions" msgid "Predictions"
msgstr "予想" msgstr "予想"
@@ -2146,14 +2119,10 @@ msgstr "リアクション"
#. placeholder {0}: migrationStatus.playersProcessed #. placeholder {0}: migrationStatus.playersProcessed
#. placeholder {1}: migrationStatus.totalPlayers #. placeholder {1}: migrationStatus.totalPlayers
#: src/features/admin/components/dashboard/tools-list.tsx:66 #: src/features/admin/components/dashboard/tools-list.tsx:72
msgid "Recalculating badges in the background ({0}/{1})" msgid "Recalculating badges in the background ({0}/{1})"
msgstr "バックグラウンドでバッジを再計算中({0}/{1})" msgstr "バックグラウンドでバッジを再計算中({0}/{1})"
#: src/features/admin/components/dashboard/activity-feed.tsx:34
msgid "Recent activity"
msgstr "最近のアクティビティ"
#: src/features/tournaments/components/started-tournament/sections/recent-results.tsx:34 #: src/features/tournaments/components/started-tournament/sections/recent-results.tsx:34
msgid "Recently finished" msgid "Recently finished"
msgstr "最近終了した試合" msgstr "最近終了した試合"
@@ -2218,17 +2187,20 @@ msgstr "ラウンド{0}"
msgid "Route" msgid "Route"
msgstr "ルート" msgstr "ルート"
#: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:142 #: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:123
#: src/features/tournaments/components/upcoming-tournament/rules-list-button.tsx:23 #: src/features/tournaments/components/upcoming-tournament/rules-list-button.tsx:23
msgid "Rules" msgid "Rules"
msgstr "ルール" msgstr "ルール"
#: src/features/admin/components/dashboard/tournament-section.tsx:29
msgid "Run"
msgstr "実行"
#: src/app/routes/_authed/admin/tournaments/run.$id.tsx:36 #: src/app/routes/_authed/admin/tournaments/run.$id.tsx:36
msgid "Run {name}" msgid "Run {name}"
msgstr "{name}を実行" msgstr "{name}を実行"
#: src/features/admin/components/dashboard/tournament-card.tsx:53 #: src/features/tournaments/components/manage-tournament.tsx:41
#: src/features/tournaments/components/manage-tournament.tsx:49
msgid "Run Tournament" msgid "Run Tournament"
msgstr "トーナメントを実行" msgstr "トーナメントを実行"
@@ -2517,7 +2489,7 @@ msgstr "開始時間を入力してください"
msgid "Start typing to search..." msgid "Start typing to search..."
msgstr "入力して検索..." msgstr "入力して検索..."
#: src/features/admin/components/dashboard/tournament-card.tsx:43 #: src/features/admin/components/dashboard/tournament-section.tsx:24
msgid "Starts in" msgid "Starts in"
msgstr "開始まで" msgstr "開始まで"
@@ -2639,7 +2611,7 @@ msgstr "チームを更新しました!"
#: src/features/players/components/profile/skeleton.tsx:75 #: src/features/players/components/profile/skeleton.tsx:75
#: src/features/tournaments/components/profile/index.tsx:32 #: src/features/tournaments/components/profile/index.tsx:32
#: src/features/tournaments/components/profile/skeleton.tsx:89 #: src/features/tournaments/components/profile/skeleton.tsx:89
#: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:137 #: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:118
msgid "Teams" msgid "Teams"
msgstr "チーム" msgstr "チーム"
@@ -2648,6 +2620,7 @@ msgid "Teams created successfully!"
msgstr "チームを作成しました!" msgstr "チームを作成しました!"
#: src/app/routes/_authed/admin/telemetry.tsx:20 #: src/app/routes/_authed/admin/telemetry.tsx:20
#: src/features/admin/components/dashboard/tools-list.tsx:55
msgid "Telemetry" msgid "Telemetry"
msgstr "テレメトリー" msgstr "テレメトリー"
@@ -2730,7 +2703,7 @@ msgstr "各グループの上位{0, plural, one {#チーム} other {#チーム}}
msgid "Top {n} advance" msgid "Top {n} advance"
msgstr "上位{n}チームが勝ち上がり" msgstr "上位{n}チームが勝ち上がり"
#: src/features/telemetry/components/usage-screen.tsx:191 #: src/features/telemetry/components/usage-screen.tsx:190
msgid "Top functions by call count" msgid "Top functions by call count"
msgstr "呼び出し数の多い関数" msgstr "呼び出し数の多い関数"
@@ -2757,7 +2730,7 @@ msgstr "トーナメントを作成しました!"
msgid "Tournament not found" msgid "Tournament not found"
msgstr "トーナメントが見つかりません" msgstr "トーナメントが見つかりません"
#: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:152 #: src/features/tournaments/components/started-tournament/sections/nav-grid.tsx:133
#: src/features/tournaments/components/upcoming-tournament/rules-list-button.tsx:25 #: src/features/tournaments/components/upcoming-tournament/rules-list-button.tsx:25
msgid "Tournament Rules" msgid "Tournament Rules"
msgstr "トーナメントルール" msgstr "トーナメントルール"
@@ -2786,7 +2759,7 @@ msgstr "playTrackアクションにはtrackIdが必要です"
msgid "Try the new themes" msgid "Try the new themes"
msgstr "新しいテーマを試してみましょう" msgstr "新しいテーマを試してみましょう"
#: src/features/admin/components/dashboard/quiet-boundary.tsx:26 #: src/features/admin/components/dashboard/quiet-boundary.tsx:24
msgid "Unavailable right now" msgid "Unavailable right now"
msgstr "現在利用できません" msgstr "現在利用できません"
@@ -2851,10 +2824,6 @@ msgstr "トーナメントを更新"
msgid "Usage" msgid "Usage"
msgstr "利用状況" msgstr "利用状況"
#: src/features/admin/components/dashboard/usage-card.tsx:34
msgid "Usage, 7 days"
msgstr "利用状況(7日間)"
#: src/features/activities/components/activities-table.tsx:202 #: src/features/activities/components/activities-table.tsx:202
#: src/features/telemetry/components/client-events-table.tsx:146 #: src/features/telemetry/components/client-events-table.tsx:146
msgid "User Agent" msgid "User Agent"
@@ -2898,7 +2867,7 @@ msgstr "予想を見る"
msgid "Viewport" msgid "Viewport"
msgstr "ビューポート" msgstr "ビューポート"
#: src/features/telemetry/components/usage-screen.tsx:211 #: src/features/telemetry/components/usage-screen.tsx:213
msgid "Vitals" msgid "Vitals"
msgstr "バイタル" msgstr "バイタル"