1
0
Fork 0
mirror of https://github.com/muerwre/vault-frontend.git synced 2025-04-24 20:36:40 +07:00
vault-frontend/src/containers/sidebars/ProfileSidebar/index.tsx
2022-08-12 13:21:43 +07:00

61 lines
1.8 KiB
TypeScript

import React, { useCallback, useMemo, VFC } from "react";
import { isNil } from "ramda";
import { ProfileSidebarNotes } from "~/components/profile/ProfileSidebarNotes";
import { ProfileSidebarSettings } from "~/components/profile/ProfileSidebarSettings";
import { SidebarStack } from "~/components/sidebar/SidebarStack";
import { SidebarStackCard } from "~/components/sidebar/SidebarStackCard";
import { SidebarName } from "~/constants/sidebar";
import { ProfileSidebarMenu } from "~/containers/profile/ProfileSidebarMenu";
import { SidebarWrapper } from "~/containers/sidebars/SidebarWrapper";
import type { SidebarComponentProps } from "~/types/sidebar";
const tabs = ["profile", "bookmarks"] as const;
type TabName = typeof tabs[number];
interface ProfileSidebarProps
extends SidebarComponentProps<SidebarName.Settings> {
page?: TabName;
}
const ProfileSidebar: VFC<ProfileSidebarProps> = ({
onRequestClose,
page,
openSidebar,
}) => {
const tab = useMemo(
() => (page ? Math.max(tabs.indexOf(page), 0) : undefined),
[page],
);
const onTabChange = useCallback(
(val: number | undefined) => {
openSidebar(SidebarName.Settings, {
page: !isNil(val) ? tabs[val] : undefined,
});
},
[open, onRequestClose],
);
return (
<SidebarWrapper onClose={onRequestClose}>
<SidebarStack tab={tab} onTabChange={onTabChange}>
<SidebarStackCard
headerFeature="close"
title="Профиль"
onBackPress={onRequestClose}
>
<ProfileSidebarMenu onClose={onRequestClose} />
</SidebarStackCard>
<SidebarStack.Cards>
<ProfileSidebarSettings />
<ProfileSidebarNotes />
</SidebarStack.Cards>
</SidebarStack>
</SidebarWrapper>
);
};
export { ProfileSidebar };