/* 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;