import React from 'react';
import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
import {useAlternatePageUtils} from '@docusaurus/theme-common/internal';
import {translate} from '@docusaurus/Translate';
import {useLocation} from '@docusaurus/router';
import DropdownNavbarItem from '@theme/NavbarItem/DropdownNavbarItem';
import IconLanguage from '@theme/Icon/Language';
import styles from './styles.module.css';
export default function LocaleDropdownNavbarItem({
  mobile,
  dropdownItemsBefore,
  dropdownItemsAfter,
  queryString = '',
  ...props
}) {
  const {
    i18n: {currentLocale, locales, localeConfigs},
  } = useDocusaurusContext();
  const alternatePageUtils = useAlternatePageUtils();
  const {search, hash} = useLocation();
  const localeItems = locales.map((locale) => {
    const baseTo = `pathname://${alternatePageUtils.createUrl({
      locale,
      fullyQualified: false,
    })}`;
    // preserve ?search#hash suffix on locale switches
    const to = `${baseTo}${search}${hash}${queryString}`;
    return {
      label: localeConfigs[locale].label,
      lang: localeConfigs[locale].htmlLang,
      to,
      target: '_self',
      autoAddBaseUrl: false,
      className:
        // eslint-disable-next-line no-nested-ternary
        locale === currentLocale
          ? // Similar idea as DefaultNavbarItem: select the right Infima active
            // class name. This cannot be substituted with isActive, because the
            // target URLs contain `pathname://` and therefore are not NavLinks!
            mobile
            ? 'menu__link--active'
            : 'dropdown__link--active'
          : '',
    };
  });
  const items = [...dropdownItemsBefore, ...localeItems, ...dropdownItemsAfter];
  // Mobile is handled a bit differently
  const dropdownLabel = mobile
    ? translate({
        message: 'Languages',
        id: 'theme.navbar.mobileLanguageDropdown.label',
        description: 'The label for the mobile language switcher dropdown',
      })
    : localeConfigs[currentLocale].label;
  return (
    <DropdownNavbarItem
      {...props}
      mobile={mobile}
      label={
        <>
          <IconLanguage className={styles.iconLanguage} />
          {dropdownLabel}
        </>
      }
      items={items}
    />
  );
}

Synonyms

pussy-ts/src/components/index.js
cyb/src/components/index.js
cyb/netlify/prebuild/index.js
pussy-ts/netlify/prebuild/index.js
cybertensor-developer-docs/src/theme/Footer/index.js
cybertensor-developer-docs/src/theme/EditThisPage/index.js
cybertensor-developer-docs/src/theme/DocBreadcrumbs/index.js
cybertensor-developer-docs/src/theme/NavbarItem/index.js
cybertensor-developer-docs/src/theme/Navbar/index.js
cybertensor-developer-docs/src/theme/DocSidebarItem/index.js
cybertensor-developer-docs/src/theme/SearchBar/index.js
cybertensor-developer-docs/src/theme/DocSidebar/index.js
cybertensor-developer-docs/src/theme/TOC/index.js
cybertensor-developer-docs/src/theme/DocSidebarItems/index.js
cybertensor-developer-docs/src/theme/MDXComponents/index.js
cyb/src/pages/teleport/hooks/index.js
pussy-ts/src/containers/warp/pool/index.js
pussy-ts/src/containers/energy/tab/index.js
cybertensor-developer-docs/src/theme/Navbar/Search/index.js
pussy-ts/src/components/particle/components/index.js
cyb/src/containers/temple/hooks/index.js
cybertensor-developer-docs/src/theme/DocSidebarItem/Category/index.js
cybertensor-developer-docs/src/theme/Navbar/MobileSidebar/index.js
cyb/src/containers/sigma/components/index.js
cybertensor-developer-docs/src/theme/DocItem/Content/index.js
cyb/src/containers/energy/component/index.js
cyb/src/containers/warp/pool/index.js
cybertensor-developer-docs/src/theme/Icon/LightMode/index.js
pussy-ts/src/containers/energy/ui/index.js
cybertensor-developer-docs/src/theme/Navbar/ColorModeToggle/index.js
pussy-ts/src/containers/temple/pages/index.js
cybertensor-developer-docs/src/theme/Footer/Layout/index.js
cybertensor-developer-docs/src/theme/MDXComponents/Ul/index.js
pussy-ts/src/pages/teleport/hooks/index.js
cybertensor-developer-docs/src/theme/DocSidebarItem/Html/index.js
cybertensor-developer-docs/src/theme/DocItem/Layout/index.js
cyb/src/components/particle/components/index.js
cybertensor-developer-docs/src/theme/Footer/Links/index.js
pussy-ts/src/containers/energy/component/index.js
cybertensor-developer-docs/src/theme/DocSidebar/Mobile/index.js
pussy-ts/src/containers/sigma/components/index.js
cybertensor-developer-docs/src/theme/DocItem/Footer/index.js
cybertensor-developer-docs/src/theme/DocSidebarItem/Link/index.js
cybertensor-developer-docs/src/theme/Footer/Logo/index.js
cybertensor-developer-docs/src/theme/Icon/DarkMode/index.js
cybertensor-developer-docs/src/theme/MDXComponents/Cards/index.js
pussy-ts/src/containers/nebula/components/index.js
cyb/src/containers/energy/ui/index.js
cybertensor-developer-docs/src/theme/Navbar/Content/index.js
cyb/src/containers/nebula/components/index.js
pussy-ts/src/containers/temple/hooks/index.js
cyb/src/containers/energy/tab/index.js
cybertensor-developer-docs/src/theme/DocSidebar/Desktop/index.js
cyb/src/containers/temple/pages/index.js
cybertensor-developer-docs/src/theme/Navbar/Layout/index.js
cybertensor-developer-docs/src/theme/Navbar/Logo/index.js
cybertensor-developer-docs/src/theme/Icon/ExternalLink/index.js
cybertensor-developer-docs/src/theme/Icon/Arrow/index.js
cybertensor-developer-docs/src/theme/Admonition/Layout/index.js
cybertensor-developer-docs/src/theme/Footer/LinkItem/index.js
cybertensor-developer-docs/src/theme/Footer/Copyright/index.js
cybertensor-developer-docs/src/theme/NavbarItem/DropdownNavbarItem/index.js
cyb/src/pages/teleport/components/Inputs/index.js
cybertensor-developer-docs/src/theme/Navbar/MobileSidebar/Header/index.js
pussy-ts/src/containers/sigma/components/cardUi/index.js
cybertensor-developer-docs/src/theme/DocBreadcrumbs/Items/Home/index.js
pussy-ts/src/containers/portal/components/avataIpfs/index.js
cybertensor-developer-docs/src/theme/Navbar/MobileSidebar/PrimaryMenu/index.js
cyb/src/containers/temple/pages/play/index.js
cyb/src/pages/teleport/mainScreen/components/index.js
cybertensor-developer-docs/src/theme/Navbar/MobileSidebar/SecondaryMenu/index.js
cybertensor-developer-docs/src/theme/Footer/Links/MultiColumn/index.js
cybertensor-developer-docs/src/theme/Navbar/MobileSidebar/Toggle/index.js
pussy-ts/src/pages/teleport/mainScreen/components/index.js
cybertensor-developer-docs/src/theme/DocSidebar/Desktop/CollapseButton/index.js
cybertensor-developer-docs/src/theme/DocSidebar/Desktop/Content/index.js
cybertensor-developer-docs/src/theme/Footer/Links/Simple/index.js
pussy-ts/src/pages/teleport/components/Inputs/index.js
cyb/src/containers/portal/components/avataIpfs/index.js
cyb/src/containers/sigma/components/cardUi/index.js
pussy-ts/src/containers/temple/pages/play/index.js
cybertensor-developer-docs/src/theme/Navbar/MobileSidebar/Layout/index.js
cyb/src/pages/robot/_refactor/account/hooks/index.js
pussy-ts/src/pages/robot/_refactor/account/hooks/index.js

Neighbours