Files
my-links/inertia/components/dashboard/collection/collection_container.tsx
2024-06-02 23:59:57 +02:00

74 lines
2.0 KiB
TypeScript

import styled from '@emotion/styled';
import { Link } from '@inertiajs/react';
import { RxHamburgerMenu } from 'react-icons/rx';
import CollectionControls from '~/components/dashboard/collection/header/collection_controls';
import CollectionDescription from '~/components/dashboard/collection/header/collection_description';
import CollectionHeader from '~/components/dashboard/collection/header/collection_header';
import LinkList from '~/components/dashboard/link/link_list';
import { NoCollection } from '~/components/dashboard/link/no_item';
import Footer from '~/components/footer/footer';
import useActiveCollection from '~/hooks/use_active_collection';
const LinksWrapper = styled.div({
height: '100%',
minWidth: 0,
padding: '0.5em 0.5em 0',
display: 'flex',
flex: 1,
flexDirection: 'column',
});
const CollectionHeaderWrapper = styled.h2(({ theme }) => ({
fontWeight: 400,
color: theme.colors.font,
paddingInline: '0.8em 1.1em',
display: 'flex',
gap: '0.4em',
alignItems: 'center',
justifyContent: 'space-between',
'& > svg': {
display: 'flex',
},
}));
interface CollectionContainerProps {
isMobile: boolean;
openSideMenu: () => void;
}
export default function CollectionContainer({
isMobile,
openSideMenu,
}: Readonly<CollectionContainerProps>) {
const { activeCollection } = useActiveCollection();
if (activeCollection === null) {
return <NoCollection />;
}
return (
<LinksWrapper>
<CollectionHeaderWrapper>
{isMobile && (
<Link
href="/#"
onClick={(event) => {
event.preventDefault();
openSideMenu();
}}
title="Open side nav bar"
>
<RxHamburgerMenu size={'1.5em'} />
</Link>
)}
<CollectionHeader />
<CollectionControls collectionId={activeCollection.id} />
</CollectionHeaderWrapper>
<CollectionDescription />
<LinkList links={activeCollection.links} />
<Footer />
</LinksWrapper>
);
}