UNPKG

@primer/react

Version:

An implementation of GitHub's Primer Design System using React

54 lines (51 loc) 1.57 kB
import { clsx } from 'clsx'; import classes from './SideNav.module.css.js'; import { jsx } from 'react/jsx-runtime'; import Link from './Link/Link.js'; function SideNav({ as: Component = 'nav', variant = 'normal', className, bordered, children, 'aria-label': ariaLabel }) { const variantClassName = variant === 'lightweight' ? 'lightweight' : 'normal'; const newClassName = clsx(classes.SideNav, classes[`SideNavVariant--${variantClassName}`], 'sidenav', `variant-${variantClassName}`, className, { [classes.SideNavBordered]: bordered }); return /*#__PURE__*/jsx(Component, { className: newClassName, "aria-label": ariaLabel, children: children }); } SideNav.displayName = "SideNav"; const SideNavLink = ({ selected, to, variant, className, children, ...rest }) => { const isReactRouter = typeof to === 'string'; const newClassName = clsx(classes.SideNavLink, className, { [classes.SideNavLinkFull]: variant === 'full' }); // according to their docs, NavLink supports aria-current: // https://reacttraining.com/react-router/web/api/NavLink/aria-current-string return /*#__PURE__*/jsx(Link, { "aria-current": isReactRouter || selected ? 'page' : undefined, className: newClassName, ...rest, children: children }); }; SideNavLink.displayName = "SideNavLink"; SideNavLink.displayName = 'SideNav.Link'; /** @deprecated Use [NavList](https://primer.style/react/NavList) instead */ var SideNav_default = Object.assign(SideNav, { Link: SideNavLink }); export { SideNav_default as default };