DefaultNavbarItem.js 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import React from 'react';
  2. import clsx from 'clsx';
  3. import NavbarNavLink from '@theme/NavbarItem/NavbarNavLink';
  4. function DefaultNavbarItemDesktop({
  5. className,
  6. isDropdownItem = false,
  7. ...props
  8. }) {
  9. const element = (
  10. <NavbarNavLink
  11. className={clsx(
  12. isDropdownItem ? 'dropdown__link' : 'navbar__item navbar__link',
  13. className,
  14. )}
  15. isDropdownLink={isDropdownItem}
  16. {...props}
  17. />
  18. );
  19. if (isDropdownItem) {
  20. return <li>{element}</li>;
  21. }
  22. return element;
  23. }
  24. function DefaultNavbarItemMobile({className, isDropdownItem, ...props}) {
  25. return (
  26. <li className="menu__list-item">
  27. <NavbarNavLink className={clsx('menu__link', className)} {...props} />
  28. </li>
  29. );
  30. }
  31. export default function DefaultNavbarItem({
  32. mobile = false,
  33. position, // Need to destructure position from props so that it doesn't get passed on.
  34. ...props
  35. }) {
  36. const Comp = mobile ? DefaultNavbarItemMobile : DefaultNavbarItemDesktop;
  37. return (
  38. <Comp
  39. {...props}
  40. activeClassName={
  41. props.activeClassName ??
  42. (mobile ? 'menu__link--active' : 'navbar__link--active')
  43. }
  44. />
  45. );
  46. }