1 | "use client";
|
2 |
|
3 | import classNames from 'classnames';
|
4 | import * as React from 'react';
|
5 | import { useContext } from 'react';
|
6 | import useEventCallback from '@restart/hooks/useEventCallback';
|
7 | import { useBootstrapPrefix } from './ThemeProvider';
|
8 | import NavbarContext from './NavbarContext';
|
9 | import { jsx as _jsx } from "react/jsx-runtime";
|
10 | const NavbarToggle = React.forwardRef(({
|
11 | bsPrefix,
|
12 | className,
|
13 | children,
|
14 | label = 'Toggle navigation',
|
15 |
|
16 | as: Component = 'button',
|
17 | onClick,
|
18 | ...props
|
19 | }, ref) => {
|
20 | bsPrefix = useBootstrapPrefix(bsPrefix, 'navbar-toggler');
|
21 | const {
|
22 | onToggle,
|
23 | expanded
|
24 | } = useContext(NavbarContext) || {};
|
25 | const handleClick = useEventCallback(e => {
|
26 | if (onClick) onClick(e);
|
27 | if (onToggle) onToggle();
|
28 | });
|
29 | if (Component === 'button') {
|
30 | props.type = 'button';
|
31 | }
|
32 | return _jsx(Component, {
|
33 | ...props,
|
34 | ref: ref,
|
35 | onClick: handleClick,
|
36 | "aria-label": label,
|
37 | className: classNames(className, bsPrefix, !expanded && 'collapsed'),
|
38 | children: children || _jsx("span", {
|
39 | className: `${bsPrefix}-icon`
|
40 | })
|
41 | });
|
42 | });
|
43 | NavbarToggle.displayName = 'NavbarToggle';
|
44 | export default NavbarToggle; |
\ | No newline at end of file |