mirror of
https://github.com/roleypoly/roleypoly.git
synced 2025-04-25 11:59:11 +00:00
* try editor as preview * add databinding for editor actions and message * add actions, reordering base interactions * add drag and drop ordering for categoriers * category skeleton * fix linting issues * add role list and add button, non-functional * bump packages * add role search prototype * yarn.lock sync * fix lint * remove cfw-emulator bin
67 lines
1.8 KiB
TypeScript
67 lines
1.8 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;
|
|
double?: boolean;
|
|
activeGuildId?: string | null;
|
|
guilds?: GuildSlug[];
|
|
recentGuilds?: string[];
|
|
disableGuildPicker?: boolean;
|
|
skeleton?: boolean;
|
|
};
|
|
|
|
const OptionallyScroll = (props: {
|
|
shouldScroll: boolean;
|
|
children: React.ReactNode;
|
|
}) => {
|
|
if (props.shouldScroll) {
|
|
return (
|
|
<Scrollbars
|
|
style={{ height: 'calc(100vh - 25px)', margin: 0, padding: 0 }}
|
|
autoHide
|
|
universal
|
|
>
|
|
{props.children}
|
|
</Scrollbars>
|
|
);
|
|
}
|
|
|
|
return <>{props.children}</>;
|
|
};
|
|
|
|
export const AppShell = (props: AppShellProps) => (
|
|
<>
|
|
<GlobalStyles />
|
|
<GlobalStyleColors />
|
|
{props.skeleton ? (
|
|
<Masthead.Skeleton />
|
|
) : props.user ? (
|
|
<Masthead.Authed
|
|
disableGuildPicker={props.disableGuildPicker}
|
|
guilds={props.guilds || []}
|
|
activeGuildId={props.activeGuildId || null}
|
|
user={props.user}
|
|
recentGuilds={props.recentGuilds || []}
|
|
/>
|
|
) : (
|
|
<Masthead.Guest />
|
|
)}
|
|
<OptionallyScroll shouldScroll={!props.skeleton}>
|
|
<>
|
|
<Content small={props.small} double={props.double}>
|
|
{props.children}
|
|
</Content>
|
|
{props.showFooter && <Footer />}
|
|
</>
|
|
</OptionallyScroll>
|
|
</>
|
|
);
|