mirror of
https://github.com/roleypoly/roleypoly.git
synced 2025-04-25 11:59:11 +00:00
* feat(web): add server-setup page for when bot isn't in the server picked * chore: move contexts into their own folder * feat(web): add recent guilds context, and app shell helper context * feat(web): show recent guilds in masthead * feat(web): functionally add recents to servers list * fix(web): correct styling for servers listing recents/all headers * fix(web): correct some type issues with appShellProps * fix(web): don't show ServerListing recents when recents is empty
44 lines
1.4 KiB
TypeScript
44 lines
1.4 KiB
TypeScript
import { GlobalStyleColors } from '@roleypoly/design-system/atoms/colors';
|
|
import { Footer } from '@roleypoly/design-system/molecules/footer';
|
|
import * as Masthead from '@roleypoly/design-system/organisms/masthead';
|
|
import { DiscordUser, GuildSlug } from '@roleypoly/types';
|
|
import * as React from 'react';
|
|
import { Scrollbars } from 'react-custom-scrollbars';
|
|
import { Content, GlobalStyles } from './AppShell.styled';
|
|
|
|
export type AppShellProps = {
|
|
children: React.ReactNode;
|
|
user?: DiscordUser;
|
|
showFooter?: boolean;
|
|
small?: boolean;
|
|
activeGuildId?: string | null;
|
|
guilds?: GuildSlug[];
|
|
recentGuilds?: string[];
|
|
disableGuildPicker?: boolean;
|
|
};
|
|
|
|
export const AppShell = (props: AppShellProps) => (
|
|
<>
|
|
<GlobalStyles />
|
|
<GlobalStyleColors />
|
|
{props.user ? (
|
|
<Masthead.Authed
|
|
disableGuildPicker={props.disableGuildPicker}
|
|
guilds={props.guilds || []}
|
|
activeGuildId={props.activeGuildId || null}
|
|
user={props.user}
|
|
recentGuilds={props.recentGuilds || []}
|
|
/>
|
|
) : (
|
|
<Masthead.Guest />
|
|
)}
|
|
<Scrollbars
|
|
style={{ height: 'calc(100vh - 25px)', margin: 0, padding: 0 }}
|
|
autoHide
|
|
universal
|
|
>
|
|
<Content small={props.small}>{props.children}</Content>
|
|
{props.showFooter && <Footer />}
|
|
</Scrollbars>
|
|
</>
|
|
);
|