soapbox/app/soapbox/components/ui/layout/layout.tsx

48 wiersze
1.1 KiB
TypeScript
Czysty Zwykły widok Historia

2022-03-21 18:09:01 +00:00
import classNames from 'classnames';
import React from 'react';
import StickyBox from 'react-sticky-box';
2022-03-21 18:09:01 +00:00
const Layout: React.FC = ({ children }) => (
<div className='sm:pt-4 relative pb-36'>
2022-03-21 18:09:01 +00:00
<div className='max-w-3xl mx-auto sm:px-6 md:max-w-7xl md:px-8 md:grid md:grid-cols-12 md:gap-8'>
{children}
</div>
</div>
);
const Sidebar: React.FC = ({ children }) => (
2022-03-21 18:09:01 +00:00
<div className='hidden lg:block lg:col-span-3'>
<StickyBox offsetTop={80} className='pb-4'>
2022-03-21 18:09:01 +00:00
{children}
</StickyBox>
2022-03-21 18:09:01 +00:00
</div>
);
const Main: React.FC<React.HTMLAttributes<HTMLDivElement>> = ({ children, className }) => (
2022-03-21 18:09:01 +00:00
<main
className={classNames({
'md:col-span-12 lg:col-span-9 xl:col-span-6 sm:space-y-4': true,
}, className)}
2022-03-21 18:09:01 +00:00
>
{children}
</main>
);
const Aside: React.FC = ({ children }) => (
2022-03-21 18:09:01 +00:00
<aside className='hidden xl:block xl:col-span-3'>
2022-04-24 23:35:23 +00:00
<StickyBox offsetTop={80} className='space-y-6 pb-12' >
2022-03-21 18:09:01 +00:00
{children}
</StickyBox>
2022-03-21 18:09:01 +00:00
</aside>
);
// @ts-ignore
2022-03-21 18:09:01 +00:00
Layout.Sidebar = Sidebar;
// @ts-ignore
2022-03-21 18:09:01 +00:00
Layout.Main = Main;
// @ts-ignore
2022-03-21 18:09:01 +00:00
Layout.Aside = Aside;
export default Layout;