@docusaurus/theme-classic 2.0.0-beta.138b4c997 → 2.0.0-beta.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (349) hide show
  1. package/README.md +1 -1
  2. package/lib/admonitions.css +35 -0
  3. package/lib/deps.d.ts +13 -0
  4. package/lib/index.js +16 -15
  5. package/lib/prism-include-languages.js +9 -5
  6. package/{lib-next/types.d.ts → lib/theme-classic.d.ts} +374 -150
  7. package/lib/translations.js +16 -7
  8. package/lib/types.d.ts +0 -587
  9. package/lib/validateThemeConfig.js +232 -246
  10. package/lib-next/theme/Admonition/index.js +101 -0
  11. package/lib-next/theme/AnnouncementBar/index.js +7 -12
  12. package/lib-next/theme/AnnouncementBar/styles.module.css +23 -32
  13. package/lib-next/theme/BackToTopButton/index.js +131 -0
  14. package/lib-next/theme/BackToTopButton/styles.module.css +42 -0
  15. package/lib-next/theme/BlogArchivePage/index.js +80 -0
  16. package/lib-next/theme/BlogLayout/index.js +40 -0
  17. package/lib-next/theme/BlogListPage/index.js +17 -25
  18. package/lib-next/theme/BlogPostAuthor/index.js +46 -0
  19. package/{lib/theme/MDXPage → lib-next/theme/BlogPostAuthor}/styles.module.css +4 -2
  20. package/lib-next/theme/BlogPostAuthors/index.js +34 -0
  21. package/{lib/theme/IconExternalLink → lib-next/theme/BlogPostAuthors}/styles.module.css +3 -4
  22. package/lib-next/theme/BlogPostItem/index.js +79 -86
  23. package/lib-next/theme/BlogPostPage/index.js +70 -35
  24. package/lib-next/theme/BlogSidebar/index.js +11 -13
  25. package/lib-next/theme/BlogSidebar/styles.module.css +2 -2
  26. package/lib-next/theme/BlogTagsListPage/index.js +14 -55
  27. package/lib-next/theme/BlogTagsPostsPage/index.js +29 -39
  28. package/lib-next/theme/CodeBlock/index.js +23 -149
  29. package/lib-next/theme/CodeBlock/styles.module.css +12 -9
  30. package/lib-next/theme/Details/index.js +20 -0
  31. package/lib-next/theme/Details/styles.module.css +13 -0
  32. package/lib-next/theme/DocCard/index.js +80 -0
  33. package/lib-next/theme/DocCard/styles.module.css +43 -0
  34. package/lib-next/theme/DocCardList/index.js +19 -0
  35. package/lib-next/theme/DocCategoryGeneratedIndexPage/index.js +49 -0
  36. package/lib-next/theme/DocCategoryGeneratedIndexPage/styles.module.css +18 -0
  37. package/lib-next/theme/DocItem/index.js +40 -51
  38. package/lib-next/theme/DocItem/styles.module.css +5 -9
  39. package/lib-next/theme/DocItemFooter/index.js +79 -0
  40. package/{lib/theme/DocItem → lib-next/theme/DocItemFooter}/styles.module.css +1 -9
  41. package/lib-next/theme/DocPage/index.js +46 -49
  42. package/lib-next/theme/DocPage/styles.module.css +5 -6
  43. package/lib-next/theme/DocPaginator/index.js +5 -33
  44. package/lib-next/theme/DocPaginatorNavLink/index.js +36 -0
  45. package/lib-next/theme/DocSidebar/index.js +65 -285
  46. package/lib-next/theme/DocSidebar/styles.module.css +0 -18
  47. package/lib-next/theme/DocSidebarItem/index.js +217 -0
  48. package/{lib/theme/ThemedImage → lib-next/theme/DocSidebarItem}/styles.module.css +10 -9
  49. package/lib-next/theme/DocTagDocListPage/index.js +89 -0
  50. package/lib-next/theme/DocTagsListPage/index.js +38 -0
  51. package/lib-next/theme/DocVersionBadge/index.js +27 -0
  52. package/lib-next/theme/DocVersionBanner/index.js +28 -14
  53. package/lib-next/theme/EditThisPage/index.js +6 -1
  54. package/lib-next/theme/ErrorPageContent.js +35 -0
  55. package/lib-next/theme/Footer/index.js +100 -40
  56. package/lib-next/theme/Heading/index.js +24 -29
  57. package/lib-next/theme/Heading/styles.css +5 -6
  58. package/lib-next/theme/Heading/styles.module.css +9 -5
  59. package/lib-next/theme/IconArrow/index.js +2 -2
  60. package/lib-next/theme/IconClose/index.js +23 -0
  61. package/lib-next/theme/IconEdit/index.js +2 -2
  62. package/lib-next/theme/IconExternalLink/index.js +2 -2
  63. package/lib-next/theme/IconLanguage/index.js +2 -2
  64. package/lib-next/theme/IconMenu/index.js +2 -2
  65. package/lib-next/theme/LastUpdated/index.js +3 -2
  66. package/lib-next/theme/Layout/index.js +3 -1
  67. package/lib-next/theme/LayoutHead/index.js +18 -23
  68. package/lib-next/theme/LayoutProviders/index.js +9 -3
  69. package/lib-next/theme/Logo/index.js +25 -21
  70. package/lib-next/theme/MDXComponents/index.js +34 -7
  71. package/{lib/theme/hooks → lib-next/theme/MDXComponents}/styles.css +3 -2
  72. package/lib-next/theme/MDXPage/index.js +10 -2
  73. package/lib-next/theme/Navbar/index.js +193 -56
  74. package/lib-next/theme/Navbar/styles.module.css +10 -3
  75. package/lib-next/theme/NavbarItem/DefaultNavbarItem.js +45 -147
  76. package/lib-next/theme/NavbarItem/DocNavbarItem.js +7 -7
  77. package/lib-next/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +31 -19
  78. package/lib-next/theme/NavbarItem/DropdownNavbarItem.js +158 -0
  79. package/lib-next/theme/NavbarItem/{LocaleDropdownNavbarItem.js → LocaleDropdownNavbarItem/index.js} +4 -12
  80. package/lib-next/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +11 -0
  81. package/lib-next/theme/NavbarItem/index.js +25 -12
  82. package/lib-next/theme/{SearchMetadatas → SearchMetadata}/index.js +1 -1
  83. package/lib-next/theme/Seo/index.js +11 -7
  84. package/lib-next/theme/SkipToContent/index.js +5 -2
  85. package/lib-next/theme/TOC/index.js +12 -36
  86. package/lib-next/theme/TOC/styles.module.css +1 -1
  87. package/lib-next/theme/TOCCollapsible/index.js +54 -0
  88. package/lib-next/theme/TOCCollapsible/styles.module.css +50 -0
  89. package/lib-next/theme/TOCInline/index.js +10 -28
  90. package/lib-next/theme/TOCItems/index.js +85 -0
  91. package/lib-next/theme/Tabs/__tests__/index.test.js +142 -0
  92. package/lib-next/theme/Tabs/index.js +103 -48
  93. package/lib-next/theme/Tabs/styles.module.css +0 -13
  94. package/lib-next/theme/Tag/index.js +27 -0
  95. package/lib-next/theme/Tag/styles.module.css +70 -0
  96. package/lib-next/theme/TagsListByLetter/index.js +42 -0
  97. package/lib-next/theme/TagsListByLetter/styles.module.css +11 -0
  98. package/lib-next/theme/TagsListInline/index.js +31 -0
  99. package/lib-next/theme/TagsListInline/styles.module.css +15 -0
  100. package/lib-next/theme/ThemeProvider/index.js +10 -7
  101. package/lib-next/theme/ThemedImage/index.js +5 -5
  102. package/lib-next/theme/Toggle/index.js +34 -37
  103. package/lib-next/theme/Toggle/styles.module.css +91 -3
  104. package/lib-next/theme/UserPreferencesProvider/index.js +9 -6
  105. package/lib-next/theme/hooks/useHideableNavbar.js +31 -44
  106. package/lib-next/theme/hooks/useTheme.js +4 -5
  107. package/lib-next/theme/hooks/useWindowSize.js +34 -20
  108. package/lib-next/theme/prism-include-languages.js +2 -1
  109. package/package.json +27 -25
  110. package/src/admonitions.css +35 -0
  111. package/src/deps.d.ts +13 -0
  112. package/src/index.ts +23 -20
  113. package/{lib-next/prism-include-languages.js → src/prism-include-languages.ts} +0 -0
  114. package/src/theme/Admonition/index.tsx +106 -0
  115. package/src/theme/AnnouncementBar/index.tsx +8 -12
  116. package/src/theme/AnnouncementBar/styles.module.css +23 -32
  117. package/src/theme/BackToTopButton/index.tsx +142 -0
  118. package/src/theme/BackToTopButton/styles.module.css +42 -0
  119. package/src/theme/BlogArchivePage/index.tsx +91 -0
  120. package/src/theme/BlogLayout/index.tsx +44 -0
  121. package/src/theme/BlogListPage/index.tsx +18 -25
  122. package/src/theme/BlogPostAuthor/index.tsx +49 -0
  123. package/{lib/theme/IconEdit → src/theme/BlogPostAuthor}/styles.module.css +4 -3
  124. package/src/theme/BlogPostAuthors/index.tsx +39 -0
  125. package/src/theme/BlogPostAuthors/styles.module.css +11 -0
  126. package/src/theme/BlogPostItem/index.tsx +70 -80
  127. package/src/theme/BlogPostPage/index.tsx +72 -35
  128. package/src/theme/BlogSidebar/index.tsx +11 -13
  129. package/src/theme/BlogSidebar/styles.module.css +2 -2
  130. package/src/theme/BlogTagsListPage/index.tsx +14 -57
  131. package/src/theme/BlogTagsPostsPage/index.tsx +29 -39
  132. package/src/theme/CodeBlock/index.tsx +27 -151
  133. package/src/theme/CodeBlock/styles.module.css +12 -9
  134. package/src/theme/Details/index.tsx +24 -0
  135. package/src/theme/Details/styles.module.css +13 -0
  136. package/src/theme/DocCard/index.tsx +100 -0
  137. package/src/theme/DocCard/styles.module.css +43 -0
  138. package/src/theme/DocCardList/index.tsx +27 -0
  139. package/src/theme/DocCategoryGeneratedIndexPage/index.tsx +53 -0
  140. package/src/theme/DocCategoryGeneratedIndexPage/styles.module.css +18 -0
  141. package/src/theme/DocItem/index.tsx +43 -51
  142. package/src/theme/DocItem/styles.module.css +5 -9
  143. package/src/theme/DocItemFooter/index.tsx +91 -0
  144. package/{lib/theme/BlogPostItem → src/theme/DocItemFooter}/styles.module.css +8 -8
  145. package/src/theme/DocPage/index.tsx +44 -42
  146. package/src/theme/DocPage/styles.module.css +5 -6
  147. package/src/theme/DocPaginator/index.tsx +5 -33
  148. package/src/theme/DocPaginatorNavLink/index.tsx +38 -0
  149. package/src/theme/DocSidebar/index.tsx +76 -297
  150. package/src/theme/DocSidebar/styles.module.css +0 -18
  151. package/src/theme/DocSidebarItem/index.tsx +242 -0
  152. package/{lib/theme/Footer → src/theme/DocSidebarItem}/styles.module.css +10 -6
  153. package/src/theme/DocTagDocListPage/index.tsx +89 -0
  154. package/src/theme/DocTagsListPage/index.tsx +41 -0
  155. package/src/theme/DocVersionBadge/index.tsx +30 -0
  156. package/src/theme/DocVersionBanner/index.tsx +48 -21
  157. package/src/theme/EditThisPage/index.tsx +6 -1
  158. package/src/theme/ErrorPageContent.tsx +41 -0
  159. package/src/theme/Footer/index.tsx +113 -43
  160. package/src/theme/Heading/index.tsx +24 -31
  161. package/src/theme/Heading/styles.css +5 -6
  162. package/src/theme/Heading/styles.module.css +9 -5
  163. package/src/theme/IconArrow/index.tsx +2 -2
  164. package/src/theme/IconClose/index.tsx +26 -0
  165. package/src/theme/IconEdit/index.tsx +2 -2
  166. package/src/theme/IconExternalLink/index.tsx +2 -5
  167. package/src/theme/IconLanguage/index.tsx +2 -6
  168. package/src/theme/IconMenu/index.tsx +3 -3
  169. package/src/theme/LastUpdated/index.tsx +3 -2
  170. package/src/theme/Layout/index.tsx +3 -1
  171. package/src/theme/LayoutHead/index.tsx +18 -17
  172. package/src/theme/LayoutProviders/index.tsx +9 -3
  173. package/src/theme/Logo/index.tsx +21 -17
  174. package/src/theme/MDXComponents/index.tsx +39 -5
  175. package/src/theme/MDXComponents/styles.css +11 -0
  176. package/src/theme/MDXPage/index.tsx +10 -2
  177. package/src/theme/Navbar/index.tsx +203 -61
  178. package/src/theme/Navbar/styles.module.css +10 -3
  179. package/src/theme/NavbarItem/DefaultNavbarItem.tsx +42 -154
  180. package/src/theme/NavbarItem/DocNavbarItem.tsx +12 -16
  181. package/src/theme/NavbarItem/DocsVersionDropdownNavbarItem.tsx +33 -21
  182. package/src/theme/NavbarItem/DocsVersionNavbarItem.tsx +7 -3
  183. package/src/theme/NavbarItem/DropdownNavbarItem.tsx +180 -0
  184. package/src/theme/NavbarItem/{LocaleDropdownNavbarItem.tsx → LocaleDropdownNavbarItem/index.tsx} +8 -9
  185. package/src/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +11 -0
  186. package/src/theme/NavbarItem/index.tsx +41 -16
  187. package/src/theme/{SearchMetadatas → SearchMetadata}/index.tsx +2 -2
  188. package/src/theme/Seo/index.tsx +7 -4
  189. package/src/theme/SkipToContent/index.tsx +5 -2
  190. package/src/theme/TOC/index.tsx +12 -41
  191. package/src/theme/TOC/styles.module.css +1 -1
  192. package/src/theme/TOCCollapsible/index.tsx +58 -0
  193. package/src/theme/TOCCollapsible/styles.module.css +50 -0
  194. package/src/theme/TOCInline/index.tsx +13 -32
  195. package/src/theme/TOCItems/index.tsx +96 -0
  196. package/src/theme/Tabs/index.tsx +110 -54
  197. package/src/theme/Tabs/styles.module.css +0 -13
  198. package/src/theme/Tag/index.tsx +31 -0
  199. package/src/theme/Tag/styles.module.css +70 -0
  200. package/src/theme/TagsListByLetter/index.tsx +45 -0
  201. package/src/theme/TagsListByLetter/styles.module.css +11 -0
  202. package/src/theme/TagsListInline/index.tsx +35 -0
  203. package/src/theme/TagsListInline/styles.module.css +15 -0
  204. package/src/theme/ThemeProvider/index.tsx +6 -2
  205. package/src/theme/ThemedImage/index.tsx +5 -5
  206. package/src/theme/Toggle/index.tsx +36 -43
  207. package/src/theme/Toggle/styles.module.css +91 -3
  208. package/src/theme/UserPreferencesProvider/index.tsx +9 -6
  209. package/src/theme/hooks/useHideableNavbar.ts +32 -45
  210. package/src/theme/hooks/useTabGroupChoice.ts +2 -2
  211. package/src/theme/hooks/useTheme.ts +4 -5
  212. package/src/theme/hooks/useWindowSize.ts +38 -20
  213. package/src/theme/prism-include-languages.ts +3 -2
  214. package/src/theme-classic.d.ts +822 -0
  215. package/src/translations.ts +41 -23
  216. package/src/types.d.ts +0 -587
  217. package/src/{validateThemeConfig.js → validateThemeConfig.ts} +160 -98
  218. package/babel.config.js +0 -35
  219. package/codeTranslations/README.md +0 -20
  220. package/codeTranslations/ar.json +0 -57
  221. package/codeTranslations/base.json +0 -112
  222. package/codeTranslations/bn.json +0 -56
  223. package/codeTranslations/da.json +0 -57
  224. package/codeTranslations/de.json +0 -57
  225. package/codeTranslations/es.json +0 -57
  226. package/codeTranslations/fa.json +0 -57
  227. package/codeTranslations/fil.json +0 -57
  228. package/codeTranslations/fr.json +0 -57
  229. package/codeTranslations/he.json +0 -57
  230. package/codeTranslations/hi.json +0 -57
  231. package/codeTranslations/ja.json +0 -57
  232. package/codeTranslations/ko.json +0 -57
  233. package/codeTranslations/pl.json +0 -57
  234. package/codeTranslations/pt-BR.json +0 -57
  235. package/codeTranslations/pt-PT.json +0 -57
  236. package/codeTranslations/ru.json +0 -57
  237. package/codeTranslations/tr.json +0 -57
  238. package/codeTranslations/vi.json +0 -57
  239. package/codeTranslations/zh-Hans.json +0 -57
  240. package/codeTranslations/zh-Hant.json +0 -57
  241. package/lib/__tests__/__snapshots__/translations.test.ts.snap +0 -116
  242. package/lib/__tests__/translations.test.js +0 -112
  243. package/lib/__tests__/validateThemeConfig.test.js +0 -333
  244. package/lib/theme/AnnouncementBar/index.js +0 -72
  245. package/lib/theme/AnnouncementBar/styles.module.css +0 -72
  246. package/lib/theme/BlogListPage/index.js +0 -71
  247. package/lib/theme/BlogListPaginator/index.js +0 -63
  248. package/lib/theme/BlogPostItem/index.js +0 -161
  249. package/lib/theme/BlogPostPage/index.js +0 -69
  250. package/lib/theme/BlogPostPaginator/index.js +0 -64
  251. package/lib/theme/BlogSidebar/index.js +0 -51
  252. package/lib/theme/BlogSidebar/styles.module.css +0 -44
  253. package/lib/theme/BlogTagsListPage/index.js +0 -76
  254. package/lib/theme/BlogTagsPostsPage/index.js +0 -100
  255. package/lib/theme/CodeBlock/index.js +0 -253
  256. package/lib/theme/CodeBlock/styles.module.css +0 -68
  257. package/lib/theme/DocItem/index.js +0 -129
  258. package/lib/theme/DocPage/index.js +0 -173
  259. package/lib/theme/DocPage/styles.module.css +0 -86
  260. package/lib/theme/DocPaginator/index.js +0 -63
  261. package/lib/theme/DocSidebar/index.js +0 -306
  262. package/lib/theme/DocSidebar/styles.module.css +0 -124
  263. package/lib/theme/DocVersionBanner/index.js +0 -128
  264. package/lib/theme/EditThisPage/index.js +0 -31
  265. package/lib/theme/Footer/index.js +0 -108
  266. package/lib/theme/Heading/index.js +0 -76
  267. package/lib/theme/Heading/styles.css +0 -23
  268. package/lib/theme/Heading/styles.module.css +0 -15
  269. package/lib/theme/IconArrow/index.js +0 -28
  270. package/lib/theme/IconEdit/index.js +0 -34
  271. package/lib/theme/IconExternalLink/index.js +0 -30
  272. package/lib/theme/IconLanguage/index.js +0 -29
  273. package/lib/theme/IconMenu/index.js +0 -30
  274. package/lib/theme/LastUpdated/index.js +0 -61
  275. package/lib/theme/Layout/index.js +0 -64
  276. package/lib/theme/Layout/styles.css +0 -27
  277. package/lib/theme/LayoutHead/index.js +0 -144
  278. package/lib/theme/LayoutProviders/index.js +0 -36
  279. package/lib/theme/Logo/index.js +0 -60
  280. package/lib/theme/MDXComponents/index.js +0 -65
  281. package/lib/theme/MDXPage/index.js +0 -66
  282. package/lib/theme/Navbar/index.js +0 -147
  283. package/lib/theme/Navbar/styles.module.css +0 -20
  284. package/lib/theme/NavbarItem/DefaultNavbarItem.js +0 -209
  285. package/lib/theme/NavbarItem/DocNavbarItem.js +0 -63
  286. package/lib/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +0 -76
  287. package/lib/theme/NavbarItem/DocsVersionNavbarItem.js +0 -43
  288. package/lib/theme/NavbarItem/LocaleDropdownNavbarItem.js +0 -72
  289. package/lib/theme/NavbarItem/SearchNavbarItem.js +0 -28
  290. package/lib/theme/NavbarItem/index.js +0 -54
  291. package/lib/theme/NotFound.js +0 -57
  292. package/lib/theme/SearchBar.js +0 -15
  293. package/lib/theme/SearchMetadatas/index.js +0 -33
  294. package/lib/theme/Seo/index.js +0 -49
  295. package/lib/theme/SkipToContent/index.js +0 -63
  296. package/lib/theme/SkipToContent/styles.module.css +0 -14
  297. package/lib/theme/TOC/index.js +0 -59
  298. package/lib/theme/TOC/styles.module.css +0 -23
  299. package/lib/theme/TOCInline/index.js +0 -53
  300. package/lib/theme/TOCInline/styles.module.css +0 -12
  301. package/lib/theme/TabItem/index.js +0 -32
  302. package/lib/theme/Tabs/index.js +0 -150
  303. package/lib/theme/Tabs/styles.module.css +0 -23
  304. package/lib/theme/ThemeContext.js +0 -21
  305. package/lib/theme/ThemeProvider/index.js +0 -38
  306. package/lib/theme/ThemedImage/index.js +0 -49
  307. package/lib/theme/Toggle/index.js +0 -94
  308. package/lib/theme/Toggle/styles.css +0 -103
  309. package/lib/theme/Toggle/styles.module.css +0 -17
  310. package/lib/theme/UserPreferencesContext.js +0 -18
  311. package/lib/theme/UserPreferencesProvider/index.js +0 -36
  312. package/lib/theme/hooks/useContextualSearchFilters.js +0 -47
  313. package/lib/theme/hooks/useDocs.js +0 -18
  314. package/lib/theme/hooks/useHideableNavbar.js +0 -92
  315. package/lib/theme/hooks/useKeyboardNavigation.js +0 -45
  316. package/lib/theme/hooks/useLocationHash.js +0 -28
  317. package/lib/theme/hooks/useLockBodyScroll.js +0 -26
  318. package/lib/theme/hooks/usePrismTheme.js +0 -36
  319. package/lib/theme/hooks/useScrollPosition.js +0 -49
  320. package/lib/theme/hooks/useTOCHighlight.js +0 -87
  321. package/lib/theme/hooks/useTabGroupChoice.js +0 -51
  322. package/lib/theme/hooks/useTheme.js +0 -99
  323. package/lib/theme/hooks/useThemeContext.js +0 -31
  324. package/lib/theme/hooks/useUserPreferencesContext.js +0 -31
  325. package/lib/theme/hooks/useWindowSize.js +0 -55
  326. package/lib/theme/prism-include-languages.js +0 -39
  327. package/lib-next/__tests__/__snapshots__/translations.test.ts.snap +0 -116
  328. package/lib-next/__tests__/translations.test.js +0 -128
  329. package/lib-next/__tests__/validateThemeConfig.test.js +0 -333
  330. package/lib-next/index.js +0 -221
  331. package/lib-next/theme/Toggle/styles.css +0 -103
  332. package/lib-next/theme/hooks/useContextualSearchFilters.js +0 -41
  333. package/lib-next/theme/hooks/useLocationHash.js +0 -20
  334. package/lib-next/theme/hooks/useScrollPosition.js +0 -38
  335. package/lib-next/theme/hooks/useTOCHighlight.js +0 -84
  336. package/lib-next/translations.js +0 -145
  337. package/lib-next/validateThemeConfig.js +0 -317
  338. package/src/__tests__/__snapshots__/translations.test.ts.snap +0 -116
  339. package/src/__tests__/translations.test.ts +0 -116
  340. package/src/__tests__/validateThemeConfig.test.js +0 -333
  341. package/src/prism-include-languages.js +0 -11
  342. package/src/theme/Toggle/styles.css +0 -103
  343. package/src/theme/hooks/useContextualSearchFilters.ts +0 -52
  344. package/src/theme/hooks/useLocationHash.ts +0 -25
  345. package/src/theme/hooks/useScrollPosition.ts +0 -45
  346. package/src/theme/hooks/useTOCHighlight.ts +0 -98
  347. package/tsconfig.json +0 -12
  348. package/update-code-translations.js +0 -240
  349. package/update-code-translations.test.js +0 -33
@@ -5,9 +5,12 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
 
8
- @media screen and (max-width: 997px) {
9
- .displayOnlyInLargeViewport {
10
- display: none !important;
8
+ /*
9
+ Hide toggle in small viewports
10
+ */
11
+ @media (max-width: 996px) {
12
+ .toggle {
13
+ display: none;
11
14
  }
12
15
  }
13
16
 
@@ -18,3 +21,7 @@
18
21
  .navbarHidden {
19
22
  transform: translate3d(0, calc(-100% - 2px), 0);
20
23
  }
24
+
25
+ .navbarSidebarToggle {
26
+ margin-right: 1rem;
27
+ }
@@ -4,23 +4,22 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
- import React, {useState, useRef, useEffect} from 'react';
7
+ import React from 'react';
8
8
  import clsx from 'clsx';
9
9
  import Link from '@docusaurus/Link';
10
10
  import useBaseUrl from '@docusaurus/useBaseUrl';
11
- import {useLocation} from '@docusaurus/router';
12
- import {isSamePath} from '@docusaurus/theme-common';
13
11
  import IconExternalLink from '@theme/IconExternalLink';
14
12
  import isInternalUrl from '@docusaurus/isInternalUrl';
13
+ import {isRegexpStringMatch} from '@docusaurus/theme-common';
14
+ import {getInfimaActiveClassName} from './index';
15
15
  const dropdownLinkActiveClass = 'dropdown__link--active';
16
-
17
- function NavLink({
16
+ export function NavLink({
18
17
  activeBasePath,
19
18
  activeBaseRegex,
20
19
  to,
21
20
  href,
22
21
  label,
23
- activeClassName = 'navbar__link--active',
22
+ activeClassName = '',
24
23
  prependBaseUrlToHref,
25
24
  ...props
26
25
  }) {
@@ -41,13 +40,15 @@ function NavLink({
41
40
  }
42
41
  : {
43
42
  isNavLink: true,
44
- activeClassName,
43
+ activeClassName: !props.className?.includes(activeClassName)
44
+ ? activeClassName
45
+ : '',
45
46
  to: toUrl,
46
47
  ...(activeBasePath || activeBaseRegex
47
48
  ? {
48
49
  isActive: (_match, location) =>
49
50
  activeBaseRegex
50
- ? new RegExp(activeBaseRegex).test(location.pathname)
51
+ ? isRegexpStringMatch(activeBaseRegex, location.pathname)
51
52
  : location.pathname.startsWith(activeBaseUrl),
52
53
  }
53
54
  : null),
@@ -70,158 +71,55 @@ function NavLink({
70
71
  );
71
72
  }
72
73
 
73
- function NavItemDesktop({items, position, className, ...props}) {
74
- const dropdownRef = useRef(null);
75
- const dropdownMenuRef = useRef(null);
76
- const [showDropdown, setShowDropdown] = useState(false);
77
- useEffect(() => {
78
- const handleClickOutside = (event) => {
79
- if (!dropdownRef.current || dropdownRef.current.contains(event.target)) {
80
- return;
81
- }
82
-
83
- setShowDropdown(false);
84
- };
85
-
86
- document.addEventListener('mousedown', handleClickOutside);
87
- document.addEventListener('touchstart', handleClickOutside);
88
- return () => {
89
- document.removeEventListener('mousedown', handleClickOutside);
90
- document.removeEventListener('touchstart', handleClickOutside);
91
- };
92
- }, [dropdownRef]);
93
-
94
- const navLinkClassNames = (extraClassName, isDropdownItem = false) =>
95
- clsx(
96
- {
97
- 'navbar__item navbar__link': !isDropdownItem,
98
- dropdown__link: isDropdownItem,
99
- },
100
- extraClassName,
101
- );
74
+ function DefaultNavbarItemDesktop({
75
+ className,
76
+ isDropdownItem = false,
77
+ ...props
78
+ }) {
79
+ const element = (
80
+ <NavLink
81
+ className={clsx(
82
+ isDropdownItem ? 'dropdown__link' : 'navbar__item navbar__link',
83
+ className,
84
+ )}
85
+ {...props}
86
+ />
87
+ );
102
88
 
103
- if (!items) {
104
- return <NavLink className={navLinkClassNames(className)} {...props} />;
89
+ if (isDropdownItem) {
90
+ return <li>{element}</li>;
105
91
  }
106
92
 
107
- return (
108
- <div
109
- ref={dropdownRef}
110
- className={clsx('navbar__item', 'dropdown', 'dropdown--hoverable', {
111
- 'dropdown--left': position === 'left',
112
- 'dropdown--right': position === 'right',
113
- 'dropdown--show': showDropdown,
114
- })}>
115
- <NavLink
116
- className={navLinkClassNames(className)}
117
- {...props}
118
- onClick={props.to ? undefined : (e) => e.preventDefault()}
119
- onKeyDown={(e) => {
120
- if (e.key === 'Enter') {
121
- e.preventDefault();
122
- setShowDropdown(!showDropdown);
123
- }
124
- }}>
125
- {props.children ?? props.label}
126
- </NavLink>
127
- <ul ref={dropdownMenuRef} className="dropdown__menu">
128
- {items.map(({className: childItemClassName, ...childItemProps}, i) => (
129
- <li key={i}>
130
- <NavLink
131
- onKeyDown={(e) => {
132
- if (i === items.length - 1 && e.key === 'Tab') {
133
- e.preventDefault();
134
- setShowDropdown(false);
135
- const nextNavbarItem = dropdownRef.current.nextElementSibling;
136
-
137
- if (nextNavbarItem) {
138
- nextNavbarItem.focus();
139
- }
140
- }
141
- }}
142
- activeClassName={dropdownLinkActiveClass}
143
- className={navLinkClassNames(childItemClassName, true)}
144
- {...childItemProps}
145
- />
146
- </li>
147
- ))}
148
- </ul>
149
- </div>
150
- );
93
+ return element;
151
94
  }
152
95
 
153
- function NavItemMobile({
154
- items,
96
+ function DefaultNavbarItemMobile({
155
97
  className,
156
- position: _position,
157
- // Need to destructure position from props so that it doesn't get passed on.
98
+ isDropdownItem: _isDropdownItem,
158
99
  ...props
159
100
  }) {
160
- const menuListRef = useRef(null);
161
- const {pathname} = useLocation();
162
- const [collapsed, setCollapsed] = useState(
163
- () => !items?.some((item) => isSamePath(item.to, pathname)) ?? true,
164
- );
165
-
166
- const navLinkClassNames = (extraClassName, isSubList = false) =>
167
- clsx(
168
- 'menu__link',
169
- {
170
- 'menu__link--sublist': isSubList,
171
- },
172
- extraClassName,
173
- );
174
-
175
- if (!items) {
176
- return (
177
- <li className="menu__list-item">
178
- <NavLink className={navLinkClassNames(className)} {...props} />
179
- </li>
180
- );
181
- }
182
-
183
- const menuListHeight = menuListRef.current?.scrollHeight
184
- ? `${menuListRef.current?.scrollHeight}px`
185
- : undefined;
186
101
  return (
187
- <li
188
- className={clsx('menu__list-item', {
189
- 'menu__list-item--collapsed': collapsed,
190
- })}>
191
- <NavLink
192
- role="button"
193
- className={navLinkClassNames(className, true)}
194
- {...props}
195
- onClick={(e) => {
196
- e.preventDefault();
197
- setCollapsed((state) => !state);
198
- }}>
199
- {props.children ?? props.label}
200
- </NavLink>
201
- <ul
202
- className="menu__list"
203
- ref={menuListRef}
204
- style={{
205
- height: !collapsed ? menuListHeight : undefined,
206
- }}>
207
- {items.map(({className: childItemClassName, ...childItemProps}, i) => (
208
- <li className="menu__list-item" key={i}>
209
- <NavLink
210
- activeClassName="menu__link--active"
211
- className={navLinkClassNames(childItemClassName)}
212
- {...childItemProps}
213
- onClick={props.onClick}
214
- />
215
- </li>
216
- ))}
217
- </ul>
102
+ <li className="menu__list-item">
103
+ <NavLink className={clsx('menu__link', className)} {...props} />
218
104
  </li>
219
105
  );
220
106
  }
221
107
 
222
- function DefaultNavbarItem({mobile = false, ...props}) {
223
- const Comp = mobile ? NavItemMobile : NavItemDesktop;
224
- return <Comp {...props} />;
108
+ function DefaultNavbarItem({
109
+ mobile = false,
110
+ position: _position,
111
+ // Need to destructure position from props so that it doesn't get passed on.
112
+ ...props
113
+ }) {
114
+ const Comp = mobile ? DefaultNavbarItemMobile : DefaultNavbarItemDesktop;
115
+ return (
116
+ <Comp
117
+ {...props}
118
+ activeClassName={
119
+ props.activeClassName ?? getInfimaActiveClassName(mobile)
120
+ }
121
+ />
122
+ );
225
123
  }
226
124
 
227
125
  export default DefaultNavbarItem;
@@ -8,12 +8,11 @@ import React from 'react';
8
8
  import DefaultNavbarItem from '@theme/NavbarItem/DefaultNavbarItem';
9
9
  import {useLatestVersion, useActiveDocContext} from '@theme/hooks/useDocs';
10
10
  import clsx from 'clsx';
11
- import {useDocsPreferredVersion} from '@docusaurus/theme-common';
12
- import {uniq} from '@docusaurus/utils-common';
11
+ import {getInfimaActiveClassName} from './index';
12
+ import {useDocsPreferredVersion, uniq} from '@docusaurus/theme-common';
13
13
 
14
14
  function getDocInVersions(versions, docId) {
15
- // vanilla-js flatten, TODO replace soon by ES flat() / flatMap()
16
- const allDocs = [].concat(...versions.map((version) => version.docs));
15
+ const allDocs = versions.flatMap((version) => version.docs);
17
16
  const doc = allDocs.find((versionDoc) => versionDoc.id === docId);
18
17
 
19
18
  if (!doc) {
@@ -29,7 +28,6 @@ Available doc ids are:\n- ${docIds}`);
29
28
 
30
29
  export default function DocNavbarItem({
31
30
  docId,
32
- activeSidebarClassName,
33
31
  label: staticLabel,
34
32
  docsPluginId,
35
33
  ...props
@@ -42,14 +40,16 @@ export default function DocNavbarItem({
42
40
  [activeVersion, preferredVersion, latestVersion].filter(Boolean),
43
41
  );
44
42
  const doc = getDocInVersions(versions, docId);
43
+ const activeDocInfimaClassName = getInfimaActiveClassName(props.mobile);
45
44
  return (
46
45
  <DefaultNavbarItem
47
46
  exact
48
47
  {...props}
49
48
  className={clsx(props.className, {
50
- [activeSidebarClassName]:
51
- activeDoc && activeDoc.sidebar === doc.sidebar,
49
+ [activeDocInfimaClassName]:
50
+ activeDoc?.sidebar && activeDoc.sidebar === doc.sidebar,
52
51
  })}
52
+ activeClassName={activeDocInfimaClassName}
53
53
  label={staticLabel ?? doc.id}
54
54
  to={doc.path}
55
55
  />
@@ -6,12 +6,14 @@
6
6
  */
7
7
  import React from 'react';
8
8
  import DefaultNavbarItem from '@theme/NavbarItem/DefaultNavbarItem';
9
+ import DropdownNavbarItem from '@theme/NavbarItem/DropdownNavbarItem';
9
10
  import {
10
11
  useVersions,
11
12
  useLatestVersion,
12
13
  useActiveDocContext,
13
14
  } from '@theme/hooks/useDocs';
14
15
  import {useDocsPreferredVersion} from '@docusaurus/theme-common';
16
+ import {translate} from '@docusaurus/Translate';
15
17
 
16
18
  const getVersionMainDoc = (version) =>
17
19
  version.docs.find((doc) => doc.id === version.mainDocId);
@@ -27,9 +29,8 @@ export default function DocsVersionDropdownNavbarItem({
27
29
  const activeDocContext = useActiveDocContext(docsPluginId);
28
30
  const versions = useVersions(docsPluginId);
29
31
  const latestVersion = useLatestVersion(docsPluginId);
30
- const {preferredVersion, savePreferredVersionName} = useDocsPreferredVersion(
31
- docsPluginId,
32
- );
32
+ const {preferredVersion, savePreferredVersionName} =
33
+ useDocsPreferredVersion(docsPluginId);
33
34
 
34
35
  function getItems() {
35
36
  const versionLinks = versions.map((version) => {
@@ -48,30 +49,41 @@ export default function DocsVersionDropdownNavbarItem({
48
49
  },
49
50
  };
50
51
  });
51
- const items = [
52
- ...dropdownItemsBefore,
53
- ...versionLinks,
54
- ...dropdownItemsAfter,
55
- ]; // We don't want to render a version dropdown with 0 or 1 item
56
- // If we build the site with a single docs version (onlyIncludeVersions: ['1.0.0'])
57
- // We'd rather render a button instead of a dropdown
58
-
59
- if (items.length <= 1) {
60
- return undefined;
61
- }
62
-
63
- return items;
52
+ return [...dropdownItemsBefore, ...versionLinks, ...dropdownItemsAfter];
64
53
  }
65
54
 
66
55
  const items = getItems();
67
56
  const dropdownVersion =
68
57
  activeDocContext.activeVersion ?? preferredVersion ?? latestVersion; // Mobile dropdown is handled a bit differently
69
58
 
70
- const dropdownLabel = mobile && items ? 'Versions' : dropdownVersion.label;
59
+ const dropdownLabel =
60
+ mobile && items
61
+ ? translate({
62
+ id: 'theme.navbar.mobileVersionsDropdown.label',
63
+ message: 'Versions',
64
+ description:
65
+ 'The label for the navbar versions dropdown on mobile view',
66
+ })
67
+ : dropdownVersion.label;
71
68
  const dropdownTo =
72
- mobile && items ? undefined : getVersionMainDoc(dropdownVersion).path;
69
+ mobile && items ? undefined : getVersionMainDoc(dropdownVersion).path; // We don't want to render a version dropdown with 0 or 1 item
70
+ // If we build the site with a single docs version (onlyIncludeVersions: ['1.0.0'])
71
+ // We'd rather render a button instead of a dropdown
72
+
73
+ if (items.length <= 1) {
74
+ return (
75
+ <DefaultNavbarItem
76
+ {...props}
77
+ mobile={mobile}
78
+ label={dropdownLabel}
79
+ to={dropdownTo}
80
+ isActive={dropdownActiveClassDisabled ? () => false : undefined}
81
+ />
82
+ );
83
+ }
84
+
73
85
  return (
74
- <DefaultNavbarItem
86
+ <DropdownNavbarItem
75
87
  {...props}
76
88
  mobile={mobile}
77
89
  label={dropdownLabel}
@@ -0,0 +1,158 @@
1
+ /**
2
+ * Copyright (c) Facebook, Inc. and its affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+ import React, {useState, useRef, useEffect} from 'react';
8
+ import clsx from 'clsx';
9
+ import {
10
+ isSamePath,
11
+ useCollapsible,
12
+ Collapsible,
13
+ isRegexpStringMatch,
14
+ useLocalPathname,
15
+ } from '@docusaurus/theme-common';
16
+ import {NavLink} from '@theme/NavbarItem/DefaultNavbarItem';
17
+ import NavbarItem from '@theme/NavbarItem';
18
+ const dropdownLinkActiveClass = 'dropdown__link--active';
19
+
20
+ function isItemActive(item, localPathname) {
21
+ if (isSamePath(item.to, localPathname)) {
22
+ return true;
23
+ }
24
+
25
+ if (isRegexpStringMatch(item.activeBaseRegex, localPathname)) {
26
+ return true;
27
+ }
28
+
29
+ if (item.activeBasePath && localPathname.startsWith(item.activeBasePath)) {
30
+ return true;
31
+ }
32
+
33
+ return false;
34
+ }
35
+
36
+ function containsActiveItems(items, localPathname) {
37
+ return items.some((item) => isItemActive(item, localPathname));
38
+ }
39
+
40
+ function DropdownNavbarItemDesktop({items, position, className, ...props}) {
41
+ const dropdownRef = useRef(null);
42
+ const [showDropdown, setShowDropdown] = useState(false);
43
+ useEffect(() => {
44
+ const handleClickOutside = (event) => {
45
+ if (!dropdownRef.current || dropdownRef.current.contains(event.target)) {
46
+ return;
47
+ }
48
+
49
+ setShowDropdown(false);
50
+ };
51
+
52
+ document.addEventListener('mousedown', handleClickOutside);
53
+ document.addEventListener('touchstart', handleClickOutside);
54
+ return () => {
55
+ document.removeEventListener('mousedown', handleClickOutside);
56
+ document.removeEventListener('touchstart', handleClickOutside);
57
+ };
58
+ }, [dropdownRef]);
59
+ return (
60
+ <div
61
+ ref={dropdownRef}
62
+ className={clsx('navbar__item', 'dropdown', 'dropdown--hoverable', {
63
+ 'dropdown--right': position === 'right',
64
+ 'dropdown--show': showDropdown,
65
+ })}>
66
+ <NavLink
67
+ href={props.to ? undefined : '#'}
68
+ className={clsx('navbar__link', className)}
69
+ {...props}
70
+ onClick={props.to ? undefined : (e) => e.preventDefault()}
71
+ onKeyDown={(e) => {
72
+ if (e.key === 'Enter') {
73
+ e.preventDefault();
74
+ setShowDropdown(!showDropdown);
75
+ }
76
+ }}>
77
+ {props.children ?? props.label}
78
+ </NavLink>
79
+ <ul className="dropdown__menu">
80
+ {items.map((childItemProps, i) => (
81
+ <NavbarItem
82
+ isDropdownItem
83
+ onKeyDown={(e) => {
84
+ if (i === items.length - 1 && e.key === 'Tab') {
85
+ e.preventDefault();
86
+ setShowDropdown(false);
87
+ const nextNavbarItem = dropdownRef.current.nextElementSibling;
88
+
89
+ if (nextNavbarItem) {
90
+ nextNavbarItem.focus();
91
+ }
92
+ }
93
+ }}
94
+ activeClassName={dropdownLinkActiveClass}
95
+ {...childItemProps}
96
+ key={i}
97
+ />
98
+ ))}
99
+ </ul>
100
+ </div>
101
+ );
102
+ }
103
+
104
+ function DropdownNavbarItemMobile({
105
+ items,
106
+ className,
107
+ position: _position,
108
+ // Need to destructure position from props so that it doesn't get passed on.
109
+ ...props
110
+ }) {
111
+ const localPathname = useLocalPathname();
112
+ const containsActive = containsActiveItems(items, localPathname);
113
+ const {collapsed, toggleCollapsed, setCollapsed} = useCollapsible({
114
+ initialState: () => !containsActive,
115
+ }); // Expand/collapse if any item active after a navigation
116
+
117
+ useEffect(() => {
118
+ if (containsActive) {
119
+ setCollapsed(!containsActive);
120
+ }
121
+ }, [localPathname, containsActive, setCollapsed]);
122
+ return (
123
+ <li
124
+ className={clsx('menu__list-item', {
125
+ 'menu__list-item--collapsed': collapsed,
126
+ })}>
127
+ <NavLink
128
+ role="button"
129
+ className={clsx('menu__link menu__link--sublist', className)}
130
+ {...props}
131
+ onClick={(e) => {
132
+ e.preventDefault();
133
+ toggleCollapsed();
134
+ }}>
135
+ {props.children ?? props.label}
136
+ </NavLink>
137
+ <Collapsible lazy as="ul" className="menu__list" collapsed={collapsed}>
138
+ {items.map((childItemProps, i) => (
139
+ <NavbarItem
140
+ mobile
141
+ isDropdownItem
142
+ onClick={props.onClick}
143
+ activeClassName="menu__link--active"
144
+ {...childItemProps}
145
+ key={i}
146
+ />
147
+ ))}
148
+ </Collapsible>
149
+ </li>
150
+ );
151
+ }
152
+
153
+ function DropdownNavbarItem({mobile = false, ...props}) {
154
+ const Comp = mobile ? DropdownNavbarItemMobile : DropdownNavbarItemDesktop;
155
+ return <Comp {...props} />;
156
+ }
157
+
158
+ export default DropdownNavbarItem;
@@ -5,10 +5,11 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
  import React from 'react';
8
- import DefaultNavbarItem from '@theme/NavbarItem/DefaultNavbarItem';
8
+ import DropdownNavbarItem from '@theme/NavbarItem/DropdownNavbarItem';
9
9
  import IconLanguage from '@theme/IconLanguage';
10
10
  import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
11
11
  import {useAlternatePageUtils} from '@docusaurus/theme-common';
12
+ import styles from './styles.module.css';
12
13
  export default function LocaleDropdownNavbarItem({
13
14
  mobile,
14
15
  dropdownItemsBefore,
@@ -36,27 +37,18 @@ export default function LocaleDropdownNavbarItem({
36
37
  target: '_self',
37
38
  autoAddBaseUrl: false,
38
39
  className: locale === currentLocale ? 'dropdown__link--active' : '',
39
- style: {
40
- textTransform: 'capitalize',
41
- },
42
40
  };
43
41
  });
44
42
  const items = [...dropdownItemsBefore, ...localeItems, ...dropdownItemsAfter]; // Mobile is handled a bit differently
45
43
 
46
44
  const dropdownLabel = mobile ? 'Languages' : getLocaleLabel(currentLocale);
47
45
  return (
48
- <DefaultNavbarItem
46
+ <DropdownNavbarItem
49
47
  {...props}
50
- href="#"
51
48
  mobile={mobile}
52
49
  label={
53
50
  <span>
54
- <IconLanguage
55
- style={{
56
- verticalAlign: 'text-bottom',
57
- marginRight: 5,
58
- }}
59
- />
51
+ <IconLanguage className={styles.iconLanguage} />
60
52
  <span>{dropdownLabel}</span>
61
53
  </span>
62
54
  }
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Copyright (c) Facebook, Inc. and its affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ .iconLanguage {
9
+ vertical-align: text-bottom;
10
+ margin-right: 5px;
11
+ }
@@ -6,36 +6,49 @@
6
6
  */
7
7
  import React from 'react';
8
8
  import DefaultNavbarItem from '@theme/NavbarItem/DefaultNavbarItem';
9
+ import DropdownNavbarItem from '@theme/NavbarItem/DropdownNavbarItem';
9
10
  import LocaleDropdownNavbarItem from '@theme/NavbarItem/LocaleDropdownNavbarItem';
10
11
  import SearchNavbarItem from '@theme/NavbarItem/SearchNavbarItem';
11
12
  const NavbarItemComponents = {
12
13
  default: () => DefaultNavbarItem,
13
14
  localeDropdown: () => LocaleDropdownNavbarItem,
14
15
  search: () => SearchNavbarItem,
16
+ dropdown: () => DropdownNavbarItem,
15
17
  // Need to lazy load these items as we don't know for sure the docs plugin is loaded
16
18
  // See https://github.com/facebook/docusaurus/issues/3360
17
- docsVersion: () =>
18
- // eslint-disable-next-line @typescript-eslint/no-var-requires, global-require
19
- require('@theme/NavbarItem/DocsVersionNavbarItem').default,
19
+
20
+ /* eslint-disable @typescript-eslint/no-var-requires, global-require */
21
+ docsVersion: () => require('@theme/NavbarItem/DocsVersionNavbarItem').default,
20
22
  docsVersionDropdown: () =>
21
- // eslint-disable-next-line @typescript-eslint/no-var-requires, global-require
22
23
  require('@theme/NavbarItem/DocsVersionDropdownNavbarItem').default,
23
- doc: () =>
24
- // eslint-disable-next-line @typescript-eslint/no-var-requires, global-require
25
- require('@theme/NavbarItem/DocNavbarItem').default,
24
+ doc: () => require('@theme/NavbarItem/DocNavbarItem').default,
25
+ /* eslint-enable @typescript-eslint/no-var-requires, global-require */
26
26
  };
27
27
 
28
- const getNavbarItemComponent = (type = 'default') => {
29
- const navbarItemComponent = NavbarItemComponents[type];
28
+ const getNavbarItemComponent = (type) => {
29
+ const navbarItemComponentFn = NavbarItemComponents[type];
30
30
 
31
- if (!navbarItemComponent) {
31
+ if (!navbarItemComponentFn) {
32
32
  throw new Error(`No NavbarItem component found for type "${type}".`);
33
33
  }
34
34
 
35
- return navbarItemComponent();
35
+ return navbarItemComponentFn();
36
36
  };
37
37
 
38
+ function getComponentType(type, isDropdown) {
39
+ // Backward compatibility: navbar item with no type set
40
+ // but containing dropdown items should use the type "dropdown"
41
+ if (!type || type === 'default') {
42
+ return isDropdown ? 'dropdown' : 'default';
43
+ }
44
+
45
+ return type;
46
+ }
47
+
48
+ export const getInfimaActiveClassName = (mobile) =>
49
+ mobile ? 'menu__link--active' : 'navbar__link--active';
38
50
  export default function NavbarItem({type, ...props}) {
39
- const NavbarItemComponent = getNavbarItemComponent(type);
51
+ const componentType = getComponentType(type, props.items !== undefined);
52
+ const NavbarItemComponent = getNavbarItemComponent(componentType);
40
53
  return <NavbarItemComponent {...props} />;
41
54
  }
@@ -9,7 +9,7 @@ import Head from '@docusaurus/Head';
9
9
  // Note: we don't couple this to Algolia/DocSearch on purpose
10
10
  // We may want to support other search engine plugins too
11
11
  // Search plugins should swizzle/override this comp to add their behavior
12
- export default function SearchMetadatas({locale, version, tag}) {
12
+ export default function SearchMetadata({locale, version, tag}) {
13
13
  return (
14
14
  <Head>
15
15
  {locale && <meta name="docusaurus_locale" content={locale} />}