import { objectWithoutProperties as _objectWithoutProperties, slicedToArray as _slicedToArray, extends as _extends, objectSpread2 as _objectSpread2, defineProperty as _defineProperty } from '../../../_virtual/_rollupPluginBabelHelpers.js';
import { jsx } from '@emotion/core';
import { createContext, useState, forwardRef, useRef, Fragment, useEffect, useContext } from 'react';
import { BaseAnchor } from '../BaseAnchor/BaseAnchor.esm.js';
import _pt from 'prop-types';
import { MdArrowForward } from 'react-icons/md';
import { AnchorButton } from '../AnchorButton/AnchorButton.esm.js';
import { Link } from 'gatsby';
import { LinkButton } from '../LinkButton/LinkButton.esm.js';
import useOnClickOutside from '../../utils/hooks/useOnClickOutside.esm.js';
import baseStyles from './BaseNavigation.styles.esm.js';
import { visuallyHiddenCss } from '../../stylesheets/a11y.esm.js';

var BaseNavigationContext = createContext({});
var BaseNavigation = function BaseNavigation(_ref) {
  var _ref$items = _ref.items,
      items = _ref$items === void 0 ? [] : _ref$items,
      _ref$secondaryItems = _ref.secondaryItems,
      secondaryItems = _ref$secondaryItems === void 0 ? [] : _ref$secondaryItems,
      children = _ref.children,
      _ref$isInverted = _ref.isInverted,
      isInverted = _ref$isInverted === void 0 ? false : _ref$isInverted,
      _ref$mobileNavMediaQu = _ref.mobileNavMediaQuery,
      mobileNavMediaQuery = _ref$mobileNavMediaQu === void 0 ? "@media (max-width: 1065px)" : _ref$mobileNavMediaQu,
      customIsMobileNavOpen = _ref.isMobileNavOpen,
      customSetIsMobileNavOpen = _ref.setIsMobileNavOpen,
      _ref$Hamburger = _ref.Hamburger,
      Hamburger = _ref$Hamburger === void 0 ? BaseNavigationHamburger : _ref$Hamburger,
      _ref$HamburgerIcon = _ref.HamburgerIcon,
      HamburgerIcon = _ref$HamburgerIcon === void 0 ? BaseNavigationHamburgerIcon : _ref$HamburgerIcon,
      _ref$Nav = _ref.Nav,
      Nav = _ref$Nav === void 0 ? BaseNavigationNav : _ref$Nav,
      _ref$List = _ref.List,
      List = _ref$List === void 0 ? BaseNavigationList : _ref$List,
      _ref$Item = _ref.Item,
      Item = _ref$Item === void 0 ? BaseNavigationListItem : _ref$Item,
      _ref$ItemLink = _ref.ItemLink,
      ItemLink = _ref$ItemLink === void 0 ? BaseNavigationItemLink : _ref$ItemLink,
      _ref$ItemAnchor = _ref.ItemAnchor,
      ItemAnchor = _ref$ItemAnchor === void 0 ? BaseNavigationItemAnchor : _ref$ItemAnchor,
      _ref$Dropdown = _ref.Dropdown,
      Dropdown = _ref$Dropdown === void 0 ? BaseNavigationDropdown : _ref$Dropdown,
      _ref$DropdownItem = _ref.DropdownItem,
      DropdownItem = _ref$DropdownItem === void 0 ? BaseNavigationDropdownItem : _ref$DropdownItem,
      _ref$DropdownToggle = _ref.DropdownToggle,
      DropdownToggle = _ref$DropdownToggle === void 0 ? BaseNavigationDropdownToggle : _ref$DropdownToggle,
      _ref$LinkButton = _ref.LinkButton,
      LinkButton = _ref$LinkButton === void 0 ? BaseNavigationLinkButton : _ref$LinkButton,
      _ref$AnchorButton = _ref.AnchorButton,
      AnchorButton = _ref$AnchorButton === void 0 ? BaseNavigationAnchorButton : _ref$AnchorButton,
      rest = _objectWithoutProperties(_ref, ["items", "secondaryItems", "children", "isInverted", "mobileNavMediaQuery", "isMobileNavOpen", "setIsMobileNavOpen", "Hamburger", "HamburgerIcon", "Nav", "List", "Item", "ItemLink", "ItemAnchor", "Dropdown", "DropdownItem", "DropdownToggle", "LinkButton", "AnchorButton"]);

  var _React$useState = useState(false),
      _React$useState2 = _slicedToArray(_React$useState, 2),
      internalIsMobileNavOpen = _React$useState2[0],
      internalSetIsMobileNavOpen = _React$useState2[1];

  var _React$useState3 = useState({}),
      _React$useState4 = _slicedToArray(_React$useState3, 2),
      dropdownOffsets = _React$useState4[0],
      setDropdownOffsets = _React$useState4[1];

  var isMobileNavOpen = internalIsMobileNavOpen;
  var setIsMobileNavOpen = internalSetIsMobileNavOpen;

  if (customIsMobileNavOpen !== undefined && customSetIsMobileNavOpen !== undefined) {
    isMobileNavOpen = customIsMobileNavOpen;
    setIsMobileNavOpen = customSetIsMobileNavOpen;
  }

  var value = {
    items: items,
    secondaryItems: secondaryItems,
    rootChildren: children,
    isInverted: isInverted,
    mobileNavMediaQuery: mobileNavMediaQuery,
    isMobileNavOpen: isMobileNavOpen,
    setIsMobileNavOpen: setIsMobileNavOpen,
    dropdownOffsets: dropdownOffsets,
    setDropdownOffsets: setDropdownOffsets,
    components: {
      Hamburger: Hamburger,
      HamburgerIcon: HamburgerIcon,
      Nav: Nav,
      List: List,
      Item: Item,
      ItemLink: ItemLink,
      ItemAnchor: ItemAnchor,
      Dropdown: Dropdown,
      DropdownItem: DropdownItem,
      DropdownToggle: DropdownToggle,
      LinkButton: LinkButton,
      AnchorButton: AnchorButton
    }
  };
  return jsx(BaseNavigationContext.Provider, {
    value: value
  }, jsx("div", _extends({
    css: baseStyles.navigation["default"]
  }, rest), jsx(Hamburger, null), jsx(Nav, null)));
};
BaseNavigation.propTypes = {
  items: _pt.arrayOf(_pt.oneOfType([_pt.shape({
    name: _pt.string.isRequired,
    linkTo: _pt.string.isRequired
  }), _pt.shape({
    items: _pt.arrayOf(_pt.shape({
      name: _pt.string.isRequired,
      linkTo: _pt.string.isRequired
    }))
  })])),
  secondaryItems: _pt.arrayOf(_pt.oneOfType([_pt.shape({
    name: _pt.string.isRequired,
    linkTo: _pt.string.isRequired
  }), _pt.shape({
    items: _pt.arrayOf(_pt.shape({
      name: _pt.string.isRequired,
      linkTo: _pt.string.isRequired
    }))
  })])),
  isInverted: _pt.bool,
  mobileNavMediaQuery: _pt.string,
  isMobileNavOpen: _pt.bool,
  setIsMobileNavOpen: _pt.func
};
var BaseNavigationHamburger = forwardRef(function BaseNavigationHamburger(props, ref) {
  var _BaseNavigation$useNa = BaseNavigation.useNavigationContext(),
      mobileNavMediaQuery = _BaseNavigation$useNa.mobileNavMediaQuery,
      isMobileNavOpen = _BaseNavigation$useNa.isMobileNavOpen,
      setIsMobileNavOpen = _BaseNavigation$useNa.setIsMobileNavOpen,
      HamburgerIcon = _BaseNavigation$useNa.components.HamburgerIcon;

  return jsx("button", _extends({
    onClick: function onClick() {
      setIsMobileNavOpen(!isMobileNavOpen);
    },
    "aria-expanded": isMobileNavOpen,
    css: _objectSpread2({}, baseStyles.hamburger["default"], _defineProperty({}, mobileNavMediaQuery, baseStyles.hamburger.mobile))
  }, props, {
    "aria-label": "".concat(isMobileNavOpen ? "Close" : "Open", " the menu"),
    ref: ref
  }), jsx(HamburgerIcon, null));
});
BaseNavigation.Hamburger = BaseNavigationHamburger;
function BaseNavigationHamburgerIcon(props) {
  var _BaseNavigation$useNa2 = BaseNavigation.useNavigationContext(),
      isInverted = _BaseNavigation$useNa2.isInverted,
      isMobileNavOpen = _BaseNavigation$useNa2.isMobileNavOpen;

  return jsx("div", _extends({
    className: isMobileNavOpen ? "active" : "",
    css: baseStyles.hamburgerIcon(isInverted)
  }, props));
}
BaseNavigation.HamburgerIcon = BaseNavigationHamburgerIcon;
function BaseNavigationNav(props) {
  var _BaseNavigation$useNa3 = BaseNavigation.useNavigationContext(),
      mobileNavMediaQuery = _BaseNavigation$useNa3.mobileNavMediaQuery,
      isMobileNavOpen = _BaseNavigation$useNa3.isMobileNavOpen,
      List = _BaseNavigation$useNa3.components.List;

  return jsx("nav", _extends({
    css: function css(theme) {
      return _defineProperty({}, mobileNavMediaQuery, baseStyles.nav.mobile(isMobileNavOpen)(theme));
    }
  }, props), jsx(List, null));
}
BaseNavigation.Nav = BaseNavigationNav;
function BaseNavigationList(props) {
  var _useBaseNavigationCon = useBaseNavigationContext(),
      items = _useBaseNavigationCon.items,
      secondaryItems = _useBaseNavigationCon.secondaryItems,
      rootChildren = _useBaseNavigationCon.rootChildren,
      Item = _useBaseNavigationCon.components.Item;

  return jsx("div", {
    css: baseStyles.list.wrapper
  }, jsx("ul", _extends({
    css: [baseStyles.list.side, baseStyles.list.leftSide]
  }, props), items.length > 0 && items.map(function (item) {
    return jsx(Item, {
      key: item.name,
      item: item
    });
  }), jsx("li", {
    role: "separator",
    css: baseStyles.list.spacer
  }), secondaryItems.length > 0 && secondaryItems.map(function (item) {
    return jsx(Item, {
      key: item.name,
      item: item
    });
  }), rootChildren && rootChildren));
}
BaseNavigation.List = BaseNavigationList;
function BaseNavigationListItem(_ref3) {
  var item = _ref3.item,
      children = _ref3.children,
      rest = _objectWithoutProperties(_ref3, ["item", "children"]);

  var _React$useState5 = useState(false),
      _React$useState6 = _slicedToArray(_React$useState5, 2),
      isDropdownOpen = _React$useState6[0],
      toggleDropdown = _React$useState6[1];

  var dropdownItems = item.items || [];
  var dropdownChildren = children || false;
  var itemHasDropdown = dropdownItems.length > 0 || dropdownChildren;
  var ref = useRef(null); // Call hook passing in the ref and a function to call on outside click

  useOnClickOutside(ref, function () {
    if (itemHasDropdown) {
      toggleDropdown(false);
    }
  });

  var _BaseNavigation$useNa4 = BaseNavigation.useNavigationContext(),
      isInverted = _BaseNavigation$useNa4.isInverted,
      _BaseNavigation$useNa5 = _BaseNavigation$useNa4.components,
      ItemLink = _BaseNavigation$useNa5.ItemLink,
      DropdownToggle = _BaseNavigation$useNa5.DropdownToggle,
      Dropdown = _BaseNavigation$useNa5.Dropdown;

  return jsx("li", _extends({
    ref: ref,
    css: baseStyles.item(isInverted)
  }, rest), jsx(ItemLink, {
    item: item
  }), itemHasDropdown && jsx(Fragment, null, jsx(DropdownToggle, {
    item: item,
    isDropdownOpen: isDropdownOpen,
    toggleDropdown: toggleDropdown
  }), jsx(Dropdown, {
    item: item,
    isDropdownOpen: isDropdownOpen,
    toggleDropdown: toggleDropdown,
    dropdownItems: item.items,
    dropdownChildren: dropdownChildren
  })));
}
BaseNavigationListItem.propTypes = {
  item: _pt.oneOfType([_pt.shape({
    name: _pt.string.isRequired,
    linkTo: _pt.string.isRequired
  }), _pt.shape({
    items: _pt.arrayOf(_pt.shape({
      name: _pt.string.isRequired,
      linkTo: _pt.string.isRequired
    }))
  })]).isRequired
};
BaseNavigation.Item = BaseNavigationListItem;
function BaseNavigationItemAnchor(_ref4) {
  var item = _ref4.item,
      rest = _objectWithoutProperties(_ref4, ["item"]);

  return jsx(BaseAnchor, _extends({
    href: item.linkTo
  }, rest), jsx("span", null, item.name));
}
BaseNavigationItemAnchor.propTypes = {
  item: _pt.shape({
    name: _pt.string.isRequired,
    linkTo: _pt.string.isRequired
  }).isRequired
};
BaseNavigation.ItemAnchor = BaseNavigationItemAnchor;
function BaseNavigationItemLink(_ref5) {
  var item = _ref5.item,
      to = _ref5.to,
      rest = _objectWithoutProperties(_ref5, ["item", "to"]);

  var _BaseNavigation$useNa6 = BaseNavigation.useNavigationContext(),
      setIsMobileNavOpen = _BaseNavigation$useNa6.setIsMobileNavOpen;

  return jsx(Link, _extends({
    activeClassName: "nav-item-active",
    to: item.linkTo || to,
    onClick: function onClick() {
      return setIsMobileNavOpen(false);
    }
  }, rest), jsx("span", null, item.name));
}
BaseNavigationItemLink.propTypes = {
  item: _pt.shape({
    name: _pt.string.isRequired,
    linkTo: _pt.string.isRequired
  }).isRequired
};
BaseNavigation.ItemLink = BaseNavigationItemLink;
var BaseNavigationDropdownToggle = forwardRef(function BaseNavigationDropdownToggle(_ref6, ref) {
  var item = _ref6.item,
      isDropdownOpen = _ref6.isDropdownOpen,
      toggleDropdown = _ref6.toggleDropdown,
      rest = _objectWithoutProperties(_ref6, ["item", "isDropdownOpen", "toggleDropdown"]);

  var _BaseNavigation$useNa7 = BaseNavigation.useNavigationContext(),
      isInverted = _BaseNavigation$useNa7.isInverted;

  return jsx("button", _extends({
    ref: ref,
    "aria-expanded": !!isDropdownOpen,
    "aria-controls": getDropdownId(item.name),
    onClick: function onClick() {
      toggleDropdown(!isDropdownOpen);
    },
    css: baseStyles.dropdownToggle(isInverted)
  }, rest), jsx("span", {
    "aria-hidden": "true"
  }, "\u2228"), jsx("span", {
    css: visuallyHiddenCss
  }, "".concat(item.name, " Menu")));
});
BaseNavigationDropdownToggle.propTypes = {
  item: _pt.shape({
    name: _pt.string.isRequired,
    linkTo: _pt.string.isRequired
  }).isRequired,
  isDropdownOpen: _pt.bool.isRequired,
  toggleDropdown: _pt.func.isRequired
};
BaseNavigation.DropdownToggle = BaseNavigationDropdownToggle;
function BaseNavigationDropdown(_ref7) {
  var item = _ref7.item,
      isDropdownOpen = _ref7.isDropdownOpen,
      toggleDropdown = _ref7.toggleDropdown,
      _ref7$dropdownItems = _ref7.dropdownItems,
      dropdownItems = _ref7$dropdownItems === void 0 ? [] : _ref7$dropdownItems,
      _ref7$dropdownChildre = _ref7.dropdownChildren,
      dropdownChildren = _ref7$dropdownChildre === void 0 ? false : _ref7$dropdownChildre,
      dropdownListClassName = _ref7.dropdownListClassName,
      rest = _objectWithoutProperties(_ref7, ["item", "isDropdownOpen", "toggleDropdown", "dropdownItems", "dropdownChildren", "dropdownListClassName"]);

  var dropdownRef = useRef(null);

  var _BaseNavigation$useNa8 = BaseNavigation.useNavigationContext(),
      DropdownItem = _BaseNavigation$useNa8.components.DropdownItem,
      setDropdownOffsets = _BaseNavigation$useNa8.setDropdownOffsets,
      mobileNavMediaQuery = _BaseNavigation$useNa8.mobileNavMediaQuery;

  var _React$useState7 = useState(false),
      _React$useState8 = _slicedToArray(_React$useState7, 2),
      isMeasured = _React$useState8[0],
      setIsMeasured = _React$useState8[1];

  var _React$useState9 = useState(0),
      _React$useState10 = _slicedToArray(_React$useState9, 2),
      windowWidth = _React$useState10[0],
      setWindowWidth = _React$useState10[1];

  var VIEWPORT_FIT_MARGIN = 20;
  useEffect(function () {
    setIsMeasured(true);
    setWindowWidth(window.innerWidth || document.documentElement.clientWidth);
  }, []);
  useEffect(function () {
    if (dropdownRef.current && isMeasured) {
      var _dropdownRef$current$ = dropdownRef.current.getBoundingClientRect(),
          left = _dropdownRef$current$.left,
          right = _dropdownRef$current$.right;

      setIsMeasured(false);
      var leftFit = left >= VIEWPORT_FIT_MARGIN;
      var rightFit = right <= windowWidth - VIEWPORT_FIT_MARGIN;
      var offset = !leftFit ? (left - VIEWPORT_FIT_MARGIN) * -1 : !rightFit ? windowWidth - (right + VIEWPORT_FIT_MARGIN) : 0;
      setDropdownOffsets(function (state) {
        return _objectSpread2({}, state, _defineProperty({}, item.name, offset));
      });
    }
  }, [isMeasured]);
  return jsx("div", _extends({
    ref: dropdownRef,
    css: baseStyles.dropdown(isDropdownOpen, isMeasured, mobileNavMediaQuery) // id to associate with aria-controls on BaseNavigation.Item
    ,
    id: getDropdownId(item.name),
    onKeyDown: function onKeyDown(e) {
      // handle closing dropdown on `esc`
      if (e.keyCode === 27) {
        toggleDropdown(false);
      }

      return;
    }
  }, rest), jsx("ul", {
    css: baseStyles.dropdownList(),
    className: dropdownListClassName
  }, dropdownItems.length > 0 && dropdownItems.map(function (item, index) {
    return jsx(DropdownItem, {
      key: "".concat(index, "-").concat(item.name),
      item: item
    });
  }), dropdownChildren && dropdownChildren));
}
BaseNavigationDropdown.propTypes = {
  item: _pt.shape({
    name: _pt.string.isRequired,
    linkTo: _pt.string.isRequired
  }).isRequired,
  isDropdownOpen: _pt.bool.isRequired,
  toggleDropdown: _pt.func.isRequired,
  dropdownItems: _pt.arrayOf(_pt.shape({
    name: _pt.string.isRequired,
    linkTo: _pt.string.isRequired
  })),
  dropdownChildren: _pt.node,
  dropdownListClassName: _pt.string
};
BaseNavigation.Dropdown = BaseNavigationDropdown;
function BaseNavigationDropdownItem(_ref8) {
  var _ref8$item = _ref8.item,
      name = _ref8$item.name,
      linkTo = _ref8$item.linkTo,
      rest = _objectWithoutProperties(_ref8, ["item"]);

  var _BaseNavigation$useNa9 = BaseNavigation.useNavigationContext(),
      setIsMobileNavOpen = _BaseNavigation$useNa9.setIsMobileNavOpen;

  return jsx("li", rest, jsx(Link, {
    activeClassName: "nav-item-active",
    to: linkTo,
    onClick: function onClick() {
      return setIsMobileNavOpen(false);
    }
  }, name));
}
BaseNavigationDropdownItem.propTypes = {
  item: _pt.shape({
    name: _pt.string.isRequired,
    linkTo: _pt.string.isRequired
  }).isRequired
};
BaseNavigation.DropdownItem = BaseNavigationDropdownItem;
function BaseNavigationLinkButton(_ref9) {
  var linkTo = _ref9.linkTo,
      _ref9$icon = _ref9.icon,
      icon = _ref9$icon === void 0 ? true : _ref9$icon,
      _ref9$size = _ref9.size,
      size = _ref9$size === void 0 ? "M" : _ref9$size,
      children = _ref9.children,
      to = _ref9.to,
      rest = _objectWithoutProperties(_ref9, ["linkTo", "icon", "size", "children", "to"]);

  var _BaseNavigation$useNa10 = BaseNavigation.useNavigationContext(),
      isInverted = _BaseNavigation$useNa10.isInverted;

  return jsx(LinkButton, _extends({
    to: linkTo || to,
    size: size,
    css: baseStyles.button(isInverted),
    rightIcon: icon ? jsx(MdArrowForward, null) : undefined
  }, rest), children);
}
BaseNavigationLinkButton.propTypes = {
  icon: _pt.bool,
  linkTo: _pt.string
};
BaseNavigation.LinkButton = BaseNavigationLinkButton;
var BaseNavigationAnchorButton = forwardRef(function BaseNavigationAnchorButton(_ref10, ref) {
  var linkTo = _ref10.linkTo,
      _ref10$icon = _ref10.icon,
      icon = _ref10$icon === void 0 ? true : _ref10$icon,
      _ref10$size = _ref10.size,
      size = _ref10$size === void 0 ? "M" : _ref10$size,
      children = _ref10.children,
      rest = _objectWithoutProperties(_ref10, ["linkTo", "icon", "size", "children"]);

  var _BaseNavigation$useNa11 = BaseNavigation.useNavigationContext(),
      isInverted = _BaseNavigation$useNa11.isInverted;

  return jsx(AnchorButton, _extends({
    ref: ref,
    href: linkTo,
    size: size,
    css: baseStyles.button(isInverted),
    rightIcon: icon ? jsx(MdArrowForward, null) : undefined
  }, rest), children);
});
BaseNavigationAnchorButton.propTypes = {
  icon: _pt.bool,
  linkTo: _pt.string
};
BaseNavigation.AnchorButton = BaseNavigationAnchorButton;
function useBaseNavigationContext() {
  var context = useContext(BaseNavigationContext);

  if (!context) {
    throw new Error("BaseNavigation compound components cannot be rendered outside the BaseNavigation component");
  }

  return context;
}
BaseNavigation.useNavigationContext = useBaseNavigationContext;

function getDropdownId(itemName) {
  // Strip item name (i.e. label) from special characters
  return "".concat(itemName.replace(/[^\w]/gi, "-"), "-dropdown");
}

BaseNavigation.__docgenInfo = {
  "description": "",
  "methods": [{
    "name": "HamburgerIcon",
    "docblock": null,
    "modifiers": ["static"],
    "params": [{
      "name": "props",
      "optional": false,
      "type": {
        "name": "Omit",
        "elements": [{
          "name": "JSX.IntrinsicElements[\"div\"]",
          "raw": "JSX.IntrinsicElements[\"div\"]"
        }, {
          "name": "literal",
          "value": "\"ref\""
        }],
        "raw": "Omit<\n  JSX.IntrinsicElements[\"div\"],\n  \"ref\"\n>",
        "alias": "BaseNavigationHamburgerIconProps"
      }
    }],
    "returns": null
  }, {
    "name": "Nav",
    "docblock": null,
    "modifiers": ["static"],
    "params": [{
      "name": "props",
      "optional": false,
      "type": {
        "name": "Omit",
        "elements": [{
          "name": "JSX.IntrinsicElements[\"nav\"]",
          "raw": "JSX.IntrinsicElements[\"nav\"]"
        }, {
          "name": "literal",
          "value": "\"ref\""
        }],
        "raw": "Omit<JSX.IntrinsicElements[\"nav\"], \"ref\">",
        "alias": "BaseNavigationNavProps"
      }
    }],
    "returns": null
  }, {
    "name": "List",
    "docblock": null,
    "modifiers": ["static"],
    "params": [{
      "name": "props",
      "optional": false,
      "type": {
        "name": "Omit",
        "elements": [{
          "name": "JSX.IntrinsicElements[\"ul\"]",
          "raw": "JSX.IntrinsicElements[\"ul\"]"
        }, {
          "name": "literal",
          "value": "\"ref\""
        }],
        "raw": "Omit<JSX.IntrinsicElements[\"ul\"], \"ref\">",
        "alias": "BaseNavigationListProps"
      }
    }],
    "returns": null
  }, {
    "name": "Item",
    "docblock": null,
    "modifiers": ["static"],
    "params": [{
      "name": "{\n  item,\n  children,\n  ...rest\n}: BaseNavigationListItemProps",
      "type": {
        "name": "intersection",
        "raw": "Omit<\n  JSX.IntrinsicElements[\"li\"],\n  \"ref\"\n> & {\n  item: BaseNavigationItemOptions\n}",
        "elements": [{
          "name": "Omit",
          "elements": [{
            "name": "JSX.IntrinsicElements[\"li\"]",
            "raw": "JSX.IntrinsicElements[\"li\"]"
          }, {
            "name": "literal",
            "value": "\"ref\""
          }],
          "raw": "Omit<\n  JSX.IntrinsicElements[\"li\"],\n  \"ref\"\n>"
        }, {
          "name": "signature",
          "type": "object",
          "raw": "{\n  item: BaseNavigationItemOptions\n}",
          "signature": {
            "properties": [{
              "key": "item",
              "value": {
                "name": "intersection",
                "raw": "BaseNavigationItem & {\n  items?: BaseNavigationItem[]\n}",
                "elements": [{
                  "name": "signature",
                  "type": "object",
                  "raw": "{\n  name: string\n  linkTo: string\n}",
                  "signature": {
                    "properties": [{
                      "key": "name",
                      "value": {
                        "name": "string",
                        "required": true
                      }
                    }, {
                      "key": "linkTo",
                      "value": {
                        "name": "string",
                        "required": true
                      }
                    }]
                  }
                }, {
                  "name": "signature",
                  "type": "object",
                  "raw": "{\n  items?: BaseNavigationItem[]\n}",
                  "signature": {
                    "properties": [{
                      "key": "items",
                      "value": {
                        "name": "Array",
                        "elements": [{
                          "name": "signature",
                          "type": "object",
                          "raw": "{\n  name: string\n  linkTo: string\n}",
                          "signature": {
                            "properties": [{
                              "key": "name",
                              "value": {
                                "name": "string",
                                "required": true
                              }
                            }, {
                              "key": "linkTo",
                              "value": {
                                "name": "string",
                                "required": true
                              }
                            }]
                          }
                        }],
                        "raw": "BaseNavigationItem[]",
                        "required": false
                      }
                    }]
                  }
                }],
                "required": true
              }
            }]
          }
        }],
        "alias": "BaseNavigationListItemProps"
      }
    }],
    "returns": null
  }, {
    "name": "ItemAnchor",
    "docblock": null,
    "modifiers": ["static"],
    "params": [{
      "name": "{\n  item,\n  ...rest\n}: BaseNavigationItemAnchorProps",
      "type": {
        "name": "intersection",
        "raw": "Omit<BaseAnchorProps, \"ref\"> & {\n  item: BaseNavigationItem\n}",
        "elements": [{
          "name": "Omit",
          "elements": [{
            "name": "BaseAnchorProps"
          }, {
            "name": "literal",
            "value": "\"ref\""
          }],
          "raw": "Omit<BaseAnchorProps, \"ref\">"
        }, {
          "name": "signature",
          "type": "object",
          "raw": "{\n  item: BaseNavigationItem\n}",
          "signature": {
            "properties": [{
              "key": "item",
              "value": {
                "name": "signature",
                "type": "object",
                "raw": "{\n  name: string\n  linkTo: string\n}",
                "signature": {
                  "properties": [{
                    "key": "name",
                    "value": {
                      "name": "string",
                      "required": true
                    }
                  }, {
                    "key": "linkTo",
                    "value": {
                      "name": "string",
                      "required": true
                    }
                  }]
                },
                "required": true
              }
            }]
          }
        }],
        "alias": "BaseNavigationItemAnchorProps"
      }
    }],
    "returns": null
  }, {
    "name": "ItemLink",
    "docblock": null,
    "modifiers": ["static"],
    "params": [{
      "name": "{\n  item,\n  to,\n  ...rest\n}: BaseNavigationItemLinkProps",
      "type": {
        "name": "intersection",
        "raw": "Omit<GatsbyLinkProps<any>, \"ref\"> & {\n  item: BaseNavigationItem\n}",
        "elements": [{
          "name": "Omit",
          "elements": [{
            "name": "GatsbyLinkProps",
            "elements": [{
              "name": "any"
            }],
            "raw": "GatsbyLinkProps<any>"
          }, {
            "name": "literal",
            "value": "\"ref\""
          }],
          "raw": "Omit<GatsbyLinkProps<any>, \"ref\">"
        }, {
          "name": "signature",
          "type": "object",
          "raw": "{\n  item: BaseNavigationItem\n}",
          "signature": {
            "properties": [{
              "key": "item",
              "value": {
                "name": "signature",
                "type": "object",
                "raw": "{\n  name: string\n  linkTo: string\n}",
                "signature": {
                  "properties": [{
                    "key": "name",
                    "value": {
                      "name": "string",
                      "required": true
                    }
                  }, {
                    "key": "linkTo",
                    "value": {
                      "name": "string",
                      "required": true
                    }
                  }]
                },
                "required": true
              }
            }]
          }
        }],
        "alias": "BaseNavigationItemLinkProps"
      }
    }],
    "returns": null
  }, {
    "name": "Dropdown",
    "docblock": null,
    "modifiers": ["static"],
    "params": [{
      "name": "{\n  item,\n  isDropdownOpen,\n  toggleDropdown,\n  dropdownItems = [],\n  dropdownChildren = false,\n  dropdownListClassName,\n  ...rest\n}: BaseNavigationDropdownProps",
      "type": {
        "name": "intersection",
        "raw": "Omit<\n  JSX.IntrinsicElements[\"div\"],\n  \"ref\"\n> & {\n  item: BaseNavigationItem\n  isDropdownOpen: boolean\n  toggleDropdown: (value: boolean) => void\n  dropdownItems?: BaseNavigationItem[]\n  dropdownChildren?: React.ReactNode\n  dropdownListClassName?: string\n}",
        "elements": [{
          "name": "Omit",
          "elements": [{
            "name": "JSX.IntrinsicElements[\"div\"]",
            "raw": "JSX.IntrinsicElements[\"div\"]"
          }, {
            "name": "literal",
            "value": "\"ref\""
          }],
          "raw": "Omit<\n  JSX.IntrinsicElements[\"div\"],\n  \"ref\"\n>"
        }, {
          "name": "signature",
          "type": "object",
          "raw": "{\n  item: BaseNavigationItem\n  isDropdownOpen: boolean\n  toggleDropdown: (value: boolean) => void\n  dropdownItems?: BaseNavigationItem[]\n  dropdownChildren?: React.ReactNode\n  dropdownListClassName?: string\n}",
          "signature": {
            "properties": [{
              "key": "item",
              "value": {
                "name": "signature",
                "type": "object",
                "raw": "{\n  name: string\n  linkTo: string\n}",
                "signature": {
                  "properties": [{
                    "key": "name",
                    "value": {
                      "name": "string",
                      "required": true
                    }
                  }, {
                    "key": "linkTo",
                    "value": {
                      "name": "string",
                      "required": true
                    }
                  }]
                },
                "required": true
              }
            }, {
              "key": "isDropdownOpen",
              "value": {
                "name": "boolean",
                "required": true
              }
            }, {
              "key": "toggleDropdown",
              "value": {
                "name": "signature",
                "type": "function",
                "raw": "(value: boolean) => void",
                "signature": {
                  "arguments": [{
                    "name": "value",
                    "type": {
                      "name": "boolean"
                    }
                  }],
                  "return": {
                    "name": "void"
                  }
                },
                "required": true
              }
            }, {
              "key": "dropdownItems",
              "value": {
                "name": "Array",
                "elements": [{
                  "name": "signature",
                  "type": "object",
                  "raw": "{\n  name: string\n  linkTo: string\n}",
                  "signature": {
                    "properties": [{
                      "key": "name",
                      "value": {
                        "name": "string",
                        "required": true
                      }
                    }, {
                      "key": "linkTo",
                      "value": {
                        "name": "string",
                        "required": true
                      }
                    }]
                  },
                  "required": true
                }],
                "raw": "BaseNavigationItem[]",
                "required": false
              }
            }, {
              "key": "dropdownChildren",
              "value": {
                "name": "ReactReactNode",
                "raw": "React.ReactNode",
                "required": false
              }
            }, {
              "key": "dropdownListClassName",
              "value": {
                "name": "string",
                "required": false
              }
            }]
          }
        }],
        "alias": "BaseNavigationDropdownProps"
      }
    }],
    "returns": null
  }, {
    "name": "DropdownItem",
    "docblock": null,
    "modifiers": ["static"],
    "params": [{
      "name": "{\n  item: { name, linkTo },\n  ...rest\n}: BaseNavigationDropdownItemProps",
      "type": {
        "name": "intersection",
        "raw": "Omit<\n  JSX.IntrinsicElements[\"li\"],\n  \"ref\"\n> & {\n  item: BaseNavigationItem\n}",
        "elements": [{
          "name": "Omit",
          "elements": [{
            "name": "JSX.IntrinsicElements[\"li\"]",
            "raw": "JSX.IntrinsicElements[\"li\"]"
          }, {
            "name": "literal",
            "value": "\"ref\""
          }],
          "raw": "Omit<\n  JSX.IntrinsicElements[\"li\"],\n  \"ref\"\n>"
        }, {
          "name": "signature",
          "type": "object",
          "raw": "{\n  item: BaseNavigationItem\n}",
          "signature": {
            "properties": [{
              "key": "item",
              "value": {
                "name": "signature",
                "type": "object",
                "raw": "{\n  name: string\n  linkTo: string\n}",
                "signature": {
                  "properties": [{
                    "key": "name",
                    "value": {
                      "name": "string",
                      "required": true
                    }
                  }, {
                    "key": "linkTo",
                    "value": {
                      "name": "string",
                      "required": true
                    }
                  }]
                },
                "required": true
              }
            }]
          }
        }],
        "alias": "BaseNavigationDropdownItemProps"
      }
    }],
    "returns": null
  }, {
    "name": "LinkButton",
    "docblock": null,
    "modifiers": ["static"],
    "params": [{
      "name": "{\n  linkTo,\n  icon = true,\n  size = `M`,\n  children,\n  to,\n  ...rest\n}: BaseNavigationLinkButtonProps",
      "type": {
        "name": "intersection",
        "raw": "LinkButtonProps & {\n  icon?: boolean\n  linkTo?: string\n}",
        "elements": [{
          "name": "LinkButtonProps"
        }, {
          "name": "signature",
          "type": "object",
          "raw": "{\n  icon?: boolean\n  linkTo?: string\n}",
          "signature": {
            "properties": [{
              "key": "icon",
              "value": {
                "name": "boolean",
                "required": false
              }
            }, {
              "key": "linkTo",
              "value": {
                "name": "string",
                "required": false
              }
            }]
          }
        }],
        "alias": "BaseNavigationLinkButtonProps"
      }
    }],
    "returns": null
  }, {
    "name": "useNavigationContext",
    "docblock": null,
    "modifiers": ["static"],
    "params": [],
    "returns": null
  }],
  "displayName": "BaseNavigation",
  "props": {
    "items": {
      "defaultValue": {
        "value": "[]",
        "computed": false
      },
      "required": false,
      "tsType": {
        "name": "Array",
        "elements": [{
          "name": "intersection",
          "raw": "BaseNavigationItem & {\n  items?: BaseNavigationItem[]\n}",
          "elements": [{
            "name": "signature",
            "type": "object",
            "raw": "{\n  name: string\n  linkTo: string\n}",
            "signature": {
              "properties": [{
                "key": "name",
                "value": {
                  "name": "string",
                  "required": true
                }
              }, {
                "key": "linkTo",
                "value": {
                  "name": "string",
                  "required": true
                }
              }]
            }
          }, {
            "name": "signature",
            "type": "object",
            "raw": "{\n  items?: BaseNavigationItem[]\n}",
            "signature": {
              "properties": [{
                "key": "items",
                "value": {
                  "name": "Array",
                  "elements": [{
                    "name": "signature",
                    "type": "object",
                    "raw": "{\n  name: string\n  linkTo: string\n}",
                    "signature": {
                      "properties": [{
                        "key": "name",
                        "value": {
                          "name": "string",
                          "required": true
                        }
                      }, {
                        "key": "linkTo",
                        "value": {
                          "name": "string",
                          "required": true
                        }
                      }]
                    }
                  }],
                  "raw": "BaseNavigationItem[]",
                  "required": false
                }
              }]
            }
          }]
        }],
        "raw": "BaseNavigationItemOptions[]"
      },
      "description": ""
    },
    "secondaryItems": {
      "defaultValue": {
        "value": "[]",
        "computed": false
      },
      "required": false,
      "tsType": {
        "name": "Array",
        "elements": [{
          "name": "intersection",
          "raw": "BaseNavigationItem & {\n  items?: BaseNavigationItem[]\n}",
          "elements": [{
            "name": "signature",
            "type": "object",
            "raw": "{\n  name: string\n  linkTo: string\n}",
            "signature": {
              "properties": [{
                "key": "name",
                "value": {
                  "name": "string",
                  "required": true
                }
              }, {
                "key": "linkTo",
                "value": {
                  "name": "string",
                  "required": true
                }
              }]
            }
          }, {
            "name": "signature",
            "type": "object",
            "raw": "{\n  items?: BaseNavigationItem[]\n}",
            "signature": {
              "properties": [{
                "key": "items",
                "value": {
                  "name": "Array",
                  "elements": [{
                    "name": "signature",
                    "type": "object",
                    "raw": "{\n  name: string\n  linkTo: string\n}",
                    "signature": {
                      "properties": [{
                        "key": "name",
                        "value": {
                          "name": "string",
                          "required": true
                        }
                      }, {
                        "key": "linkTo",
                        "value": {
                          "name": "string",
                          "required": true
                        }
                      }]
                    }
                  }],
                  "raw": "BaseNavigationItem[]",
                  "required": false
                }
              }]
            }
          }]
        }],
        "raw": "BaseNavigationItemOptions[]"
      },
      "description": ""
    },
    "isInverted": {
      "defaultValue": {
        "value": "false",
        "computed": false
      },
      "required": false,
      "tsType": {
        "name": "boolean"
      },
      "description": ""
    },
    "mobileNavMediaQuery": {
      "defaultValue": {
        "value": "`@media (max-width: 1065px)`",
        "computed": false
      },
      "required": false,
      "tsType": {
        "name": "string"
      },
      "description": ""
    },
    "Hamburger": {
      "defaultValue": {
        "value": "React.forwardRef<\n  HTMLButtonElement,\n  BaseNavigationHamburgerProps\n>(function BaseNavigationHamburger(props, ref) {\n  const {\n    mobileNavMediaQuery,\n    isMobileNavOpen,\n    setIsMobileNavOpen,\n\n    components: { HamburgerIcon },\n  } = BaseNavigation.useNavigationContext()\n\n  return (\n    <button\n      onClick={() => {\n        setIsMobileNavOpen(!isMobileNavOpen)\n      }}\n      aria-expanded={isMobileNavOpen}\n      css={{\n        ...baseStyles.hamburger.default,\n        [mobileNavMediaQuery]: baseStyles.hamburger.mobile,\n      }}\n      {...props}\n      aria-label={`${isMobileNavOpen ? \"Close\" : \"Open\"} the menu`}\n      ref={ref}\n    >\n      <HamburgerIcon />\n    </button>\n  )\n})",
        "computed": true
      },
      "required": false
    },
    "HamburgerIcon": {
      "defaultValue": {
        "value": "function BaseNavigationHamburgerIcon(\n  props: BaseNavigationHamburgerIconProps\n) {\n  const { isInverted, isMobileNavOpen } = BaseNavigation.useNavigationContext()\n\n  return (\n    <div\n      className={isMobileNavOpen ? `active` : ``}\n      css={baseStyles.hamburgerIcon(isInverted)}\n      {...props}\n    />\n  )\n}",
        "computed": false
      },
      "required": false
    },
    "Nav": {
      "defaultValue": {
        "value": "function BaseNavigationNav(props: BaseNavigationNavProps) {\n  const {\n    mobileNavMediaQuery,\n    isMobileNavOpen,\n    components: { List },\n  } = BaseNavigation.useNavigationContext()\n\n  return (\n    <nav\n      css={theme => ({\n        [mobileNavMediaQuery]: baseStyles.nav.mobile(isMobileNavOpen)(theme),\n      })}\n      {...props}\n    >\n      <List />\n    </nav>\n  )\n}",
        "computed": false
      },
      "required": false
    },
    "List": {
      "defaultValue": {
        "value": "function BaseNavigationList(props: BaseNavigationListProps) {\n  const {\n    items,\n    secondaryItems,\n    rootChildren,\n    components: { Item },\n  } = useBaseNavigationContext()\n\n  return (\n    <div css={baseStyles.list.wrapper}>\n      <ul css={[baseStyles.list.side, baseStyles.list.leftSide]} {...props}>\n        {items.length > 0 &&\n          items.map(item => <Item key={item.name} item={item} />)}\n        <li role=\"separator\" css={baseStyles.list.spacer} />\n        {secondaryItems.length > 0 &&\n          secondaryItems.map(item => <Item key={item.name} item={item} />)}\n        {rootChildren && rootChildren}\n      </ul>\n    </div>\n  )\n}",
        "computed": false
      },
      "required": false
    },
    "Item": {
      "defaultValue": {
        "value": "function BaseNavigationListItem({\n  item,\n  children,\n  ...rest\n}: BaseNavigationListItemProps) {\n  const [isDropdownOpen, toggleDropdown] = React.useState(false)\n  const dropdownItems = item.items || []\n  const dropdownChildren = children || false\n  const itemHasDropdown = dropdownItems.length > 0 || dropdownChildren\n\n  const ref = React.useRef<HTMLLIElement>(null)\n\n  // Call hook passing in the ref and a function to call on outside click\n  useOnClickOutside(ref, () => {\n    if (itemHasDropdown) {\n      toggleDropdown(false)\n    }\n  })\n\n  const {\n    isInverted,\n    components: { ItemLink, DropdownToggle, Dropdown },\n  } = BaseNavigation.useNavigationContext()\n\n  return (\n    <li ref={ref} css={baseStyles.item(isInverted)} {...rest}>\n      <ItemLink item={item} />\n      {itemHasDropdown && (\n        <React.Fragment>\n          <DropdownToggle\n            item={item}\n            isDropdownOpen={isDropdownOpen}\n            toggleDropdown={toggleDropdown}\n          />\n          <Dropdown\n            item={item}\n            isDropdownOpen={isDropdownOpen}\n            toggleDropdown={toggleDropdown}\n            dropdownItems={item.items}\n            dropdownChildren={dropdownChildren}\n          />\n        </React.Fragment>\n      )}\n    </li>\n  )\n}",
        "computed": false
      },
      "required": false
    },
    "ItemLink": {
      "defaultValue": {
        "value": "function BaseNavigationItemLink({\n  item,\n  to,\n  ...rest\n}: BaseNavigationItemLinkProps) {\n  const { setIsMobileNavOpen } = BaseNavigation.useNavigationContext()\n\n  return (\n    <Link\n      activeClassName=\"nav-item-active\"\n      to={item.linkTo || to}\n      onClick={() => setIsMobileNavOpen(false)}\n      {...rest}\n    >\n      {/*\n        This span is needed for the styles applied in theme/styles/navigation\n      */}\n      <span>{item.name}</span>\n    </Link>\n  )\n}",
        "computed": false
      },
      "required": false
    },
    "ItemAnchor": {
      "defaultValue": {
        "value": "function BaseNavigationItemAnchor({\n  item,\n  ...rest\n}: BaseNavigationItemAnchorProps) {\n  return (\n    <BaseAnchor href={item.linkTo} {...rest}>\n      {/*\n        This span is needed for the styles applied in theme/styles/navigation\n      */}\n      <span>{item.name}</span>\n    </BaseAnchor>\n  )\n}",
        "computed": false
      },
      "required": false
    },
    "Dropdown": {
      "defaultValue": {
        "value": "function BaseNavigationDropdown({\n  item,\n  isDropdownOpen,\n  toggleDropdown,\n  dropdownItems = [],\n  dropdownChildren = false,\n  dropdownListClassName,\n  ...rest\n}: BaseNavigationDropdownProps) {\n  const dropdownRef = React.useRef<HTMLDivElement>(null)\n  const {\n    components: { DropdownItem },\n    setDropdownOffsets,\n    mobileNavMediaQuery,\n  } = BaseNavigation.useNavigationContext()\n  const [isMeasured, setIsMeasured] = React.useState(false)\n  const [windowWidth, setWindowWidth] = React.useState(0)\n  const VIEWPORT_FIT_MARGIN = 20\n\n  React.useEffect(() => {\n    setIsMeasured(true)\n    setWindowWidth(window.innerWidth || document.documentElement.clientWidth)\n  }, [])\n\n  React.useEffect(() => {\n    if (dropdownRef.current && isMeasured) {\n      const { left, right } = dropdownRef.current.getBoundingClientRect()\n      setIsMeasured(false)\n\n      const leftFit = left >= VIEWPORT_FIT_MARGIN\n      const rightFit = right <= windowWidth - VIEWPORT_FIT_MARGIN\n      const offset = !leftFit\n        ? (left - VIEWPORT_FIT_MARGIN) * -1\n        : !rightFit\n        ? windowWidth - (right + VIEWPORT_FIT_MARGIN)\n        : 0\n\n      setDropdownOffsets((state: DropdownOffsets) => ({\n        ...state,\n        [item.name]: offset,\n      }))\n    }\n  }, [isMeasured])\n\n  return (\n    <div\n      ref={dropdownRef}\n      css={baseStyles.dropdown(isDropdownOpen, isMeasured, mobileNavMediaQuery)}\n      // id to associate with aria-controls on BaseNavigation.Item\n      id={getDropdownId(item.name)}\n      onKeyDown={e => {\n        // handle closing dropdown on `esc`\n        if (e.keyCode === 27) {\n          toggleDropdown(false)\n        }\n        return\n      }}\n      {...rest}\n    >\n      <ul css={baseStyles.dropdownList()} className={dropdownListClassName}>\n        {dropdownItems.length > 0 &&\n          dropdownItems.map((item, index) => (\n            <DropdownItem key={`${index}-${item.name}`} item={item} />\n          ))}\n        {dropdownChildren && dropdownChildren}\n      </ul>\n    </div>\n  )\n}",
        "computed": false
      },
      "required": false
    },
    "DropdownItem": {
      "defaultValue": {
        "value": "function BaseNavigationDropdownItem({\n  item: { name, linkTo },\n  ...rest\n}: BaseNavigationDropdownItemProps) {\n  const { setIsMobileNavOpen } = BaseNavigation.useNavigationContext()\n\n  return (\n    <li {...rest}>\n      <Link\n        activeClassName=\"nav-item-active\"\n        to={linkTo}\n        onClick={() => setIsMobileNavOpen(false)}\n      >\n        {name}\n      </Link>\n    </li>\n  )\n}",
        "computed": false
      },
      "required": false
    },
    "DropdownToggle": {
      "defaultValue": {
        "value": "React.forwardRef<\n  HTMLButtonElement,\n  BaseNavigationDropdownToggleProps\n>(function BaseNavigationDropdownToggle(\n  { item, isDropdownOpen, toggleDropdown, ...rest },\n  ref\n) {\n  const { isInverted } = BaseNavigation.useNavigationContext()\n\n  return (\n    <button\n      ref={ref}\n      aria-expanded={!!isDropdownOpen}\n      aria-controls={getDropdownId(item.name)}\n      onClick={() => {\n        toggleDropdown(!isDropdownOpen)\n      }}\n      css={baseStyles.dropdownToggle(isInverted)}\n      {...rest}\n    >\n      <span aria-hidden=\"true\">&or;</span>\n      <span css={visuallyHiddenCss}>{`${item.name} Menu`}</span>\n    </button>\n  )\n})",
        "computed": true
      },
      "required": false
    },
    "LinkButton": {
      "defaultValue": {
        "value": "function BaseNavigationLinkButton({\n  linkTo,\n  icon = true,\n  size = `M`,\n  children,\n  to,\n  ...rest\n}: BaseNavigationLinkButtonProps) {\n  const { isInverted } = BaseNavigation.useNavigationContext()\n\n  return (\n    <LinkButton\n      to={linkTo || to}\n      size={size}\n      css={baseStyles.button(isInverted)}\n      rightIcon={icon ? <MdArrowForward /> : undefined}\n      {...rest}\n    >\n      {children}\n    </LinkButton>\n  )\n}",
        "computed": false
      },
      "required": false
    },
    "AnchorButton": {
      "defaultValue": {
        "value": "React.forwardRef<\n  HTMLAnchorElement,\n  BaseNavigationAnchorButtonProps\n>(function BaseNavigationAnchorButton(\n  { linkTo, icon = true, size = `M`, children, ...rest },\n  ref\n) {\n  const { isInverted } = BaseNavigation.useNavigationContext()\n\n  return (\n    <AnchorButton\n      ref={ref}\n      href={linkTo}\n      size={size}\n      css={baseStyles.button(isInverted)}\n      rightIcon={icon ? <MdArrowForward /> : undefined}\n      {...rest}\n    >\n      {children}\n    </AnchorButton>\n  )\n})",
        "computed": true
      },
      "required": false
    },
    "isMobileNavOpen": {
      "required": false,
      "tsType": {
        "name": "boolean"
      },
      "description": ""
    },
    "setIsMobileNavOpen": {
      "required": false,
      "tsType": {
        "name": "signature",
        "type": "function",
        "raw": "(value: boolean) => void",
        "signature": {
          "arguments": [{
            "name": "value",
            "type": {
              "name": "boolean"
            }
          }],
          "return": {
            "name": "void"
          }
        }
      },
      "description": ""
    }
  }
};

if (typeof STORYBOOK_REACT_CLASSES !== "undefined") {
  STORYBOOK_REACT_CLASSES["src/components/BaseNavigation/BaseNavigation.tsx"] = {
    name: "BaseNavigation",
    docgenInfo: BaseNavigation.__docgenInfo,
    path: "src/components/BaseNavigation/BaseNavigation.tsx"
  };
}

BaseNavigationHamburgerIcon.__docgenInfo = {
  "description": "",
  "methods": [],
  "displayName": "BaseNavigationHamburgerIcon"
};

if (typeof STORYBOOK_REACT_CLASSES !== "undefined") {
  STORYBOOK_REACT_CLASSES["src/components/BaseNavigation/BaseNavigation.tsx"] = {
    name: "BaseNavigationHamburgerIcon",
    docgenInfo: BaseNavigationHamburgerIcon.__docgenInfo,
    path: "src/components/BaseNavigation/BaseNavigation.tsx"
  };
}

BaseNavigationNav.__docgenInfo = {
  "description": "",
  "methods": [],
  "displayName": "BaseNavigationNav"
};

if (typeof STORYBOOK_REACT_CLASSES !== "undefined") {
  STORYBOOK_REACT_CLASSES["src/components/BaseNavigation/BaseNavigation.tsx"] = {
    name: "BaseNavigationNav",
    docgenInfo: BaseNavigationNav.__docgenInfo,
    path: "src/components/BaseNavigation/BaseNavigation.tsx"
  };
}

BaseNavigationList.__docgenInfo = {
  "description": "",
  "methods": [],
  "displayName": "BaseNavigationList"
};

if (typeof STORYBOOK_REACT_CLASSES !== "undefined") {
  STORYBOOK_REACT_CLASSES["src/components/BaseNavigation/BaseNavigation.tsx"] = {
    name: "BaseNavigationList",
    docgenInfo: BaseNavigationList.__docgenInfo,
    path: "src/components/BaseNavigation/BaseNavigation.tsx"
  };
}

BaseNavigationListItem.__docgenInfo = {
  "description": "",
  "methods": [],
  "displayName": "BaseNavigationListItem",
  "props": {
    "item": {
      "required": true,
      "tsType": {
        "name": "intersection",
        "raw": "BaseNavigationItem & {\n  items?: BaseNavigationItem[]\n}",
        "elements": [{
          "name": "signature",
          "type": "object",
          "raw": "{\n  name: string\n  linkTo: string\n}",
          "signature": {
            "properties": [{
              "key": "name",
              "value": {
                "name": "string",
                "required": true
              }
            }, {
              "key": "linkTo",
              "value": {
                "name": "string",
                "required": true
              }
            }]
          }
        }, {
          "name": "signature",
          "type": "object",
          "raw": "{\n  items?: BaseNavigationItem[]\n}",
          "signature": {
            "properties": [{
              "key": "items",
              "value": {
                "name": "Array",
                "elements": [{
                  "name": "signature",
                  "type": "object",
                  "raw": "{\n  name: string\n  linkTo: string\n}",
                  "signature": {
                    "properties": [{
                      "key": "name",
                      "value": {
                        "name": "string",
                        "required": true
                      }
                    }, {
                      "key": "linkTo",
                      "value": {
                        "name": "string",
                        "required": true
                      }
                    }]
                  }
                }],
                "raw": "BaseNavigationItem[]",
                "required": false
              }
            }]
          }
        }]
      },
      "description": ""
    }
  }
};

if (typeof STORYBOOK_REACT_CLASSES !== "undefined") {
  STORYBOOK_REACT_CLASSES["src/components/BaseNavigation/BaseNavigation.tsx"] = {
    name: "BaseNavigationListItem",
    docgenInfo: BaseNavigationListItem.__docgenInfo,
    path: "src/components/BaseNavigation/BaseNavigation.tsx"
  };
}

BaseNavigationItemAnchor.__docgenInfo = {
  "description": "",
  "methods": [],
  "displayName": "BaseNavigationItemAnchor",
  "props": {
    "item": {
      "required": true,
      "tsType": {
        "name": "signature",
        "type": "object",
        "raw": "{\n  name: string\n  linkTo: string\n}",
        "signature": {
          "properties": [{
            "key": "name",
            "value": {
              "name": "string",
              "required": true
            }
          }, {
            "key": "linkTo",
            "value": {
              "name": "string",
              "required": true
            }
          }]
        }
      },
      "description": ""
    }
  }
};

if (typeof STORYBOOK_REACT_CLASSES !== "undefined") {
  STORYBOOK_REACT_CLASSES["src/components/BaseNavigation/BaseNavigation.tsx"] = {
    name: "BaseNavigationItemAnchor",
    docgenInfo: BaseNavigationItemAnchor.__docgenInfo,
    path: "src/components/BaseNavigation/BaseNavigation.tsx"
  };
}

BaseNavigationItemLink.__docgenInfo = {
  "description": "",
  "methods": [],
  "displayName": "BaseNavigationItemLink",
  "props": {
    "item": {
      "required": true,
      "tsType": {
        "name": "signature",
        "type": "object",
        "raw": "{\n  name: string\n  linkTo: string\n}",
        "signature": {
          "properties": [{
            "key": "name",
            "value": {
              "name": "string",
              "required": true
            }
          }, {
            "key": "linkTo",
            "value": {
              "name": "string",
              "required": true
            }
          }]
        }
      },
      "description": ""
    }
  }
};

if (typeof STORYBOOK_REACT_CLASSES !== "undefined") {
  STORYBOOK_REACT_CLASSES["src/components/BaseNavigation/BaseNavigation.tsx"] = {
    name: "BaseNavigationItemLink",
    docgenInfo: BaseNavigationItemLink.__docgenInfo,
    path: "src/components/BaseNavigation/BaseNavigation.tsx"
  };
}

BaseNavigationDropdownToggle.__docgenInfo = {
  "description": "",
  "methods": [],
  "displayName": "BaseNavigationDropdownToggle"
};

if (typeof STORYBOOK_REACT_CLASSES !== "undefined") {
  STORYBOOK_REACT_CLASSES["src/components/BaseNavigation/BaseNavigation.tsx"] = {
    name: "BaseNavigationDropdownToggle",
    docgenInfo: BaseNavigationDropdownToggle.__docgenInfo,
    path: "src/components/BaseNavigation/BaseNavigation.tsx"
  };
}

BaseNavigationDropdown.__docgenInfo = {
  "description": "",
  "methods": [],
  "displayName": "BaseNavigationDropdown",
  "props": {
    "dropdownItems": {
      "defaultValue": {
        "value": "[]",
        "computed": false
      },
      "required": false,
      "tsType": {
        "name": "Array",
        "elements": [{
          "name": "signature",
          "type": "object",
          "raw": "{\n  name: string\n  linkTo: string\n}",
          "signature": {
            "properties": [{
              "key": "name",
              "value": {
                "name": "string",
                "required": true
              }
            }, {
              "key": "linkTo",
              "value": {
                "name": "string",
                "required": true
              }
            }]
          }
        }],
        "raw": "BaseNavigationItem[]"
      },
      "description": ""
    },
    "dropdownChildren": {
      "defaultValue": {
        "value": "false",
        "computed": false
      },
      "required": false,
      "tsType": {
        "name": "ReactReactNode",
        "raw": "React.ReactNode"
      },
      "description": ""
    },
    "item": {
      "required": true,
      "tsType": {
        "name": "signature",
        "type": "object",
        "raw": "{\n  name: string\n  linkTo: string\n}",
        "signature": {
          "properties": [{
            "key": "name",
            "value": {
              "name": "string",
              "required": true
            }
          }, {
            "key": "linkTo",
            "value": {
              "name": "string",
              "required": true
            }
          }]
        }
      },
      "description": ""
    },
    "isDropdownOpen": {
      "required": true,
      "tsType": {
        "name": "boolean"
      },
      "description": ""
    },
    "toggleDropdown": {
      "required": true,
      "tsType": {
        "name": "signature",
        "type": "function",
        "raw": "(value: boolean) => void",
        "signature": {
          "arguments": [{
            "name": "value",
            "type": {
              "name": "boolean"
            }
          }],
          "return": {
            "name": "void"
          }
        }
      },
      "description": ""
    },
    "dropdownListClassName": {
      "required": false,
      "tsType": {
        "name": "string"
      },
      "description": ""
    }
  }
};

if (typeof STORYBOOK_REACT_CLASSES !== "undefined") {
  STORYBOOK_REACT_CLASSES["src/components/BaseNavigation/BaseNavigation.tsx"] = {
    name: "BaseNavigationDropdown",
    docgenInfo: BaseNavigationDropdown.__docgenInfo,
    path: "src/components/BaseNavigation/BaseNavigation.tsx"
  };
}

BaseNavigationDropdownItem.__docgenInfo = {
  "description": "",
  "methods": [],
  "displayName": "BaseNavigationDropdownItem",
  "props": {
    "item": {
      "required": true,
      "tsType": {
        "name": "signature",
        "type": "object",
        "raw": "{\n  name: string\n  linkTo: string\n}",
        "signature": {
          "properties": [{
            "key": "name",
            "value": {
              "name": "string",
              "required": true
            }
          }, {
            "key": "linkTo",
            "value": {
              "name": "string",
              "required": true
            }
          }]
        }
      },
      "description": ""
    }
  }
};

if (typeof STORYBOOK_REACT_CLASSES !== "undefined") {
  STORYBOOK_REACT_CLASSES["src/components/BaseNavigation/BaseNavigation.tsx"] = {
    name: "BaseNavigationDropdownItem",
    docgenInfo: BaseNavigationDropdownItem.__docgenInfo,
    path: "src/components/BaseNavigation/BaseNavigation.tsx"
  };
}

BaseNavigationLinkButton.__docgenInfo = {
  "description": "",
  "methods": [],
  "displayName": "BaseNavigationLinkButton",
  "props": {
    "icon": {
      "defaultValue": {
        "value": "true",
        "computed": false
      },
      "required": false,
      "tsType": {
        "name": "boolean"
      },
      "description": ""
    },
    "size": {
      "defaultValue": {
        "value": "`M`",
        "computed": false
      },
      "required": false
    },
    "linkTo": {
      "required": false,
      "tsType": {
        "name": "string"
      },
      "description": ""
    }
  }
};

if (typeof STORYBOOK_REACT_CLASSES !== "undefined") {
  STORYBOOK_REACT_CLASSES["src/components/BaseNavigation/BaseNavigation.tsx"] = {
    name: "BaseNavigationLinkButton",
    docgenInfo: BaseNavigationLinkButton.__docgenInfo,
    path: "src/components/BaseNavigation/BaseNavigation.tsx"
  };
}

BaseNavigationAnchorButton.__docgenInfo = {
  "description": "",
  "methods": [],
  "displayName": "BaseNavigationAnchorButton",
  "props": {
    "icon": {
      "defaultValue": {
        "value": "true",
        "computed": false
      },
      "required": false
    },
    "size": {
      "defaultValue": {
        "value": "`M`",
        "computed": false
      },
      "required": false
    }
  }
};

if (typeof STORYBOOK_REACT_CLASSES !== "undefined") {
  STORYBOOK_REACT_CLASSES["src/components/BaseNavigation/BaseNavigation.tsx"] = {
    name: "BaseNavigationAnchorButton",
    docgenInfo: BaseNavigationAnchorButton.__docgenInfo,
    path: "src/components/BaseNavigation/BaseNavigation.tsx"
  };
}

export { BaseNavigation, BaseNavigationAnchorButton, BaseNavigationDropdown, BaseNavigationDropdownItem, BaseNavigationDropdownToggle, BaseNavigationHamburgerIcon, BaseNavigationItemAnchor, BaseNavigationItemLink, BaseNavigationLinkButton, BaseNavigationList, BaseNavigationListItem, BaseNavigationNav, useBaseNavigationContext };
//# sourceMappingURL=BaseNavigation.esm.js.map
