Skip to content
Snippets Groups Projects
ServerHeader.tsx 1.26 KiB
Newer Older
import { Cog } from "@styled-icons/boxicons-solid";
import { observer } from "mobx-react-lite";
insert's avatar
insert committed
import { Link } from "react-router-dom";
insert's avatar
insert committed
import { ServerPermission } from "revolt.js/dist/api/permissions";
insert's avatar
insert committed
import { Server } from "revolt.js/dist/maps/Servers";
insert's avatar
insert committed
import styled from "styled-components";

import Header from "../ui/Header";
import IconButton from "../ui/IconButton";

insert's avatar
insert committed
interface Props {
    server: Server;
insert's avatar
insert committed
}

const ServerName = styled.div`
    flex-grow: 1;
export default observer(({ server }: Props) => {
insert's avatar
insert committed
    const bannerURL = server.generateBannerURL({ width: 480 });
    return (
        <Header
            borders
            placement="secondary"
            background={typeof bannerURL !== "undefined"}
            style={{
                background: bannerURL ? `url('${bannerURL}')` : undefined,
            }}>
            <ServerName>{server.name}</ServerName>
insert's avatar
insert committed
            {(server.permission & ServerPermission.ManageServer) > 0 && (
                <div className="actions">
                    <Link to={`/server/${server._id}/settings`}>
                        <IconButton>
                            <Cog size={24} />
                        </IconButton>
                    </Link>
                </div>
            )}
        </Header>
    );