import React from 'react';
import {useNavbarMobileSidebar} from '@docusaurus/theme-common/internal';
import {translate} from '@docusaurus/Translate';
import NavbarColorModeToggle from '@theme/Navbar/ColorModeToggle';
import IconClose from '@theme/Icon/Close';
import NavbarLogo from '@theme/Navbar/Logo';
import BrowserOnly from '@docusaurus/BrowserOnly';

function CloseButton() {
  const mobileSidebar = useNavbarMobileSidebar();
  return (
    <button
      type="button"
      aria-label={translate({
        id: 'theme.docs.sidebar.closeSidebarButtonAriaLabel',
        message: 'Close navigation bar',
        description: 'The ARIA label for close button of mobile sidebar',
      })}
      className="clean-btn navbar-sidebar__close"
      onClick={() => mobileSidebar.toggle()}>
      <IconClose color="var(--ifm-color-emphasis-600)" />
    </button>
  );
}

function MobileSearchBar() {
  // Lazy import to avoid SSR issues with the search-local plugin
  const SearchBar = require('@theme/SearchBar').default;
  return <SearchBar />;
}

export default function NavbarMobileSidebarHeader(): JSX.Element {
  return (
    <div>
      <div className="navbar-sidebar__brand">
        <NavbarLogo />
        <NavbarColorModeToggle className="margin-right--md" />
        <CloseButton />
      </div>
      <div style={{padding: '0.5rem var(--ifm-navbar-padding-horizontal)'}}>
        <BrowserOnly>{() => <MobileSearchBar />}</BrowserOnly>
      </div>
    </div>
  );
}
