theme/src/components/nav-dropdown.js (41 lines of code) (raw):

import {Box, Details, StyledOcticon, Text, themeGet, useDetails} from '@primer/components' import {TriangleDownIcon} from '@primer/octicons-react' import React from 'react' import styled from 'styled-components' function NavDropdown({title, children}) { const {getDetailsProps} = useDetails({closeOnOutsideClick: true}) return ( <Details {...getDetailsProps()}> <summary style={{cursor: 'pointer'}}> <Text>{title}</Text> <StyledOcticon icon={TriangleDownIcon} sx={{ml: 1}} /> </summary> <Box position="absolute"> <Box bg="canvas.overlay" p={2} mt={2} borderWidth="1px" borderStyle="solid" borderColor="border.default" borderRadius="12px" > {children} </Box> </Box> </Details> ) } export const NavDropdownItem = styled.a` display: block; padding: ${themeGet('space.2')}; color: inherit; text-decoration: none; border-radius: ${themeGet('radii.2')}; line-height: 1.25; &:hover { background-color: ${themeGet('colors.neutral.muted')}; text-decoration: none; } ` export default NavDropdown