mirror of
https://github.com/DorkSquadRR/DorkNet.git
synced 2026-10-26 23:48:45 -07:00
955246c6e4
- Updated PlayerLogs, Players, Reports, Rooms, Settings, SignupCodes, and other pages to accept an optional `embedded` prop for better integration in various contexts. - Introduced a new Activity page consolidating audit logs and player request logs with tab navigation. - Added Content page for community board and loading tips with tab navigation. - Created Moderation page to unify player directory, bans, and reports under a single interface. - Implemented SettingsHome page to manage server settings and signup codes with tab navigation. - Enhanced the Join page to include password creation for new accounts. - Added global friends feature in Settings to allow all accounts to be friends without database entries. - Introduced RelationshipQueries service to manage effective friend resolution based on global friends toggle. - Added WireDates for consistent date handling in serialized data. - Created reusable Tabs component for consistent tab navigation across various pages.
32 lines
1.2 KiB
TypeScript
32 lines
1.2 KiB
TypeScript
import { Players } from './Players';
|
|
import { Bans } from './Bans';
|
|
import { Reports } from './Reports';
|
|
import { PageHeader } from '../components/PageHeader';
|
|
import { Tabs, useTabParam } from '../components/Tabs';
|
|
|
|
// Unified moderation hub. The account directory (with its per-player
|
|
// detail / ban / grant / gift / password modal), the active-ban list,
|
|
// and the open-report queue were three separate sidebar entries — they
|
|
// describe one workflow, so they're tabs of one page now. The old
|
|
// /bans and /reports routes redirect here with ?tab= preselected.
|
|
export function Moderation() {
|
|
const [tab, setTab] = useTabParam<'directory' | 'bans' | 'reports'>('directory', ['directory', 'bans', 'reports']);
|
|
return (
|
|
<div>
|
|
<PageHeader title="Players" blurb="Search and moderate accounts, review active bans, and triage open reports." />
|
|
<Tabs
|
|
tabs={[
|
|
{ key: 'directory', label: 'Directory' },
|
|
{ key: 'bans', label: 'Bans' },
|
|
{ key: 'reports', label: 'Reports' },
|
|
]}
|
|
active={tab}
|
|
onChange={setTab}
|
|
/>
|
|
{tab === 'directory' && <Players embedded />}
|
|
{tab === 'bans' && <Bans embedded />}
|
|
{tab === 'reports' && <Reports embedded />}
|
|
</div>
|
|
);
|
|
}
|