import classNames from 'classnames'; import all from 'prop-types-extra/lib/all'; import * as React from 'react'; import { useContext } from 'react'; import { useUncontrolled } from 'uncontrollable'; import BaseNav from '@restart/ui/Nav'; import { useBootstrapPrefix } from './ThemeProvider'; import NavbarContext from './NavbarContext'; import CardHeaderContext from './CardHeaderContext'; import NavItem from './NavItem'; import NavLink from './NavLink'; import { jsx as _jsx } from "react/jsx-runtime"; const defaultProps = { justify: false, fill: false }; const Nav = /*#__PURE__*/React.forwardRef((uncontrolledProps, ref) => { const { as = 'div', bsPrefix: initialBsPrefix, variant, fill, justify, navbar, navbarScroll, className, activeKey, ...props } = useUncontrolled(uncontrolledProps, { activeKey: 'onSelect' }); const bsPrefix = useBootstrapPrefix(initialBsPrefix, 'nav'); let navbarBsPrefix; let cardHeaderBsPrefix; let isNavbar = false; const navbarContext = useContext(NavbarContext); const cardHeaderContext = useContext(CardHeaderContext); if (navbarContext) { navbarBsPrefix = navbarContext.bsPrefix; isNavbar = navbar == null ? true : navbar; } else if (cardHeaderContext) { ({ cardHeaderBsPrefix } = cardHeaderContext); } return /*#__PURE__*/_jsx(BaseNav, { as: as, ref: ref, activeKey: activeKey, className: classNames(className, { [bsPrefix]: !isNavbar, [`${navbarBsPrefix}-nav`]: isNavbar, [`${navbarBsPrefix}-nav-scroll`]: isNavbar && navbarScroll, [`${cardHeaderBsPrefix}-${variant}`]: !!cardHeaderBsPrefix, [`${bsPrefix}-${variant}`]: !!variant, [`${bsPrefix}-fill`]: fill, [`${bsPrefix}-justified`]: justify }), ...props }); }); Nav.displayName = 'Nav'; Nav.defaultProps = defaultProps; export default Object.assign(Nav, { Item: NavItem, Link: NavLink });