/* eslint-disable react-native/no-inline-styles */
import React, { useCallback } from 'react';
import { Sidebar } from '../Sidebar';
import { LayoutContext } from './LayoutContext';
import { SidebarRecursive } from './LayoutSidebar';
import { Box } from '../../primitives';
import { ToggleColorModeButton } from './LayoutHeader';
import { Pressable, Text, Divider } from '@gluestack-ui/themed';
const ResponsiveSidebar = ({ ...props }: any) => {
const {
sidebarItems: sidebars,
isOpenSidebar,
setIsOpenSidebar,
Link,
version,
router,
Docsearch,
} = React.useContext(LayoutContext);
const getHeaders = useCallback(() => {
const headerItems = [];
for (let i = 0; i < sidebars.length; i++) {
if (sidebars[i].type === 'Dropdown') {
headerItems.push(sidebars[i].title);
}
}
return headerItems;
}, [sidebars]);
const getSelectedHeader = React.useCallback(() => {
const header = getHeaders();
for (let i = 0; i < header.length; i++) {
if (
router?.route.includes(
header[i]?.toLocaleLowerCase().split(' ').join('-')
)
) {
return header[i];
}
}
}, [getHeaders, router?.route]);
React.useEffect(() => {
setSelectedHeading(getSelectedHeader());
}, [sidebars, getSelectedHeader]);
const [selectedHeading, setSelectedHeading] = React.useState(
getSelectedHeader()
);
// const [hover, setHover] = React.useState(false);
function getFirstPage(headerItem: any) {
for (let i = 0; i < sidebars.length; i++) {
if (sidebars[i].title === headerItem) {
return getId(sidebars[i].pages[0]);
}
}
return router?.route;
}
function getId(pages: any): string {
if (pages?.pages.length > 0) {
return getId(pages?.pages[0]);
}
return pages?.id;
}
let isActiveRoute: boolean = false;
if (selectedHeading) {
isActiveRoute = router?.route.includes(
selectedHeading.toLocaleLowerCase().split(' ').join('-')
)
? true
: false;
}
if (router.pathname.includes('gluestack-style/docs')) {
return (
{Docsearch && (
)}
{sidebars?.map((sidebarItems: any) => {
return (
setIsOpenSidebar(false)}
/>
);
})}
{/* {sidebarItems.map((sidebar: any) => {
return (
{sidebar.title}
{sidebar.pages.map((sidebarPageItems: any) => {
console.log(sidebarPageItems, 'sidebarPageItems');
return (
setIsOpenSidebar(!isOpenSidebar)}
>
{sidebarPageItems.title}
);
})}
);
})} */}
);
}
return (
<>
{getHeaders().map((headerItem: any) => {
return (
<>
{
setSelectedHeading(headerItem);
}}
px="$4"
pt="$1"
pb="$1"
mr="$2.5"
my={'$0.5'}
borderRadius={'$md'}
sx={{
bg:
isActiveRoute && headerItem == selectedHeading
? '$primary100_alpha_50'
: 'transparent',
_light: {
':hover': {
bg: '$primary100_alpha_30',
},
},
_dark: {
'bg':
isActiveRoute && headerItem == selectedHeading
? '$primary600_alpha_50'
: undefined,
':hover': {
bg: '$primary600_alpha_30',
},
},
}}
>
{headerItem}
>
);
})}
>
);
//
// {Docsearch && (
//
//
//
// )}
// {sidebarItems?.map((sidebarItems: any) => {
// return (
// setIsOpenSidebar(!isOpenSidebar)}
// />
// );
// })}
// {/* {sidebarItems.map((sidebar: any) => {
// return (
//
//
// {sidebar.title}
//
// {sidebar.pages.map((sidebarPageItems: any) => {
// console.log(sidebarPageItems, 'sidebarPageItems');
// return (
// setIsOpenSidebar(!isOpenSidebar)}
// >
//
//
//
// {sidebarPageItems.title}
//
//
//
//
// );
// })}
//
// );
// })} */}
//
};
function RenderSideBarPages({ ...props }: any) {
const {
sidebarItems: sidebars,
version,
Link,
router,
} = React.useContext(LayoutContext);
const [hover, setHover] = React.useState(false);
function getSidebarItems() {
for (let i = 0; i < sidebars.length; i++) {
if (sidebars[i].title === props.selectedHeading) {
return sidebars[i].pages;
}
}
}
return (
{
if (!hover) {
setHover(true);
}
}}
onMouseLeave={() => {
setHover(false);
}}
>
{getSidebarItems()?.map((sidebarPagesItems: any) => {
return (
);
})}
);
}
export default ResponsiveSidebar;