@docusaurus/theme-classic 2.0.0-beta.1 → 2.0.0-beta.10

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 (367) hide show
  1. package/README.md +1 -1
  2. package/lib/__tests__/validateThemeConfig.test.js +277 -3
  3. package/lib/admonitions.css +35 -0
  4. package/lib/deps.d.ts +13 -0
  5. package/lib/index.js +41 -16
  6. package/lib/prism-include-languages.js +9 -5
  7. package/lib/theme/AnnouncementBar/index.js +10 -16
  8. package/lib/theme/AnnouncementBar/styles.module.css +25 -30
  9. package/lib/theme/BackToTopButton/index.js +140 -0
  10. package/lib/theme/BackToTopButton/styles.module.css +42 -0
  11. package/lib/theme/BlogArchivePage/index.js +89 -0
  12. package/lib/theme/BlogLayout/index.js +51 -0
  13. package/lib/theme/BlogListPage/index.js +10 -21
  14. package/lib/theme/BlogPostAuthor/index.js +51 -0
  15. package/lib/theme/BlogPostAuthor/styles.module.css +12 -0
  16. package/lib/theme/BlogPostAuthors/index.js +47 -0
  17. package/lib/theme/BlogPostAuthors/styles.module.css +11 -0
  18. package/lib/theme/BlogPostItem/index.js +58 -67
  19. package/lib/theme/BlogPostPage/index.js +37 -24
  20. package/lib/theme/BlogSidebar/index.js +5 -7
  21. package/lib/theme/BlogSidebar/styles.module.css +2 -2
  22. package/lib/theme/BlogTagsListPage/index.js +8 -44
  23. package/lib/theme/BlogTagsPostsPage/index.js +24 -38
  24. package/lib/theme/CodeBlock/index.js +18 -138
  25. package/lib/theme/CodeBlock/styles.module.css +6 -9
  26. package/lib/theme/Details/index.js +30 -0
  27. package/lib/theme/Details/styles.module.css +13 -0
  28. package/lib/theme/DocCard/index.js +84 -0
  29. package/lib/theme/DocCard/styles.module.css +43 -0
  30. package/lib/theme/DocCardList/index.js +28 -0
  31. package/lib/theme/DocCategoryGeneratedIndexPage/index.js +57 -0
  32. package/lib/theme/DocCategoryGeneratedIndexPage/styles.module.css +18 -0
  33. package/lib/theme/DocItem/index.js +29 -46
  34. package/lib/theme/DocItem/styles.module.css +5 -9
  35. package/lib/theme/DocItemFooter/index.js +79 -0
  36. package/lib/theme/DocItemFooter/styles.module.css +18 -0
  37. package/lib/theme/DocPage/index.js +35 -52
  38. package/lib/theme/DocPage/styles.module.css +8 -23
  39. package/lib/theme/DocPaginator/index.js +6 -7
  40. package/lib/theme/DocSidebar/index.js +53 -235
  41. package/lib/theme/DocSidebar/styles.module.css +0 -18
  42. package/lib/theme/DocSidebarItem/index.js +209 -0
  43. package/lib/theme/DocSidebarItem/styles.module.css +19 -0
  44. package/lib/theme/DocTagDocListPage/index.js +89 -0
  45. package/lib/theme/DocTagsListPage/index.js +44 -0
  46. package/lib/theme/DocVersionBadge/index.js +34 -0
  47. package/lib/theme/{DocVersionSuggestions → DocVersionBanner}/index.js +39 -20
  48. package/lib/theme/EditThisPage/index.js +3 -1
  49. package/lib/theme/ErrorPageContent.js +43 -0
  50. package/lib/theme/Footer/index.js +16 -5
  51. package/lib/theme/Heading/index.js +17 -22
  52. package/lib/theme/Heading/styles.css +5 -6
  53. package/lib/theme/Heading/styles.module.css +9 -5
  54. package/lib/theme/IconArrow/index.js +2 -2
  55. package/lib/theme/IconClose/index.js +31 -0
  56. package/lib/theme/IconEdit/index.js +3 -3
  57. package/lib/theme/IconExternalLink/index.js +3 -3
  58. package/lib/theme/IconLanguage/index.js +3 -3
  59. package/lib/theme/IconMenu/index.js +3 -3
  60. package/lib/theme/LastUpdated/index.js +4 -2
  61. package/lib/theme/Layout/index.js +5 -1
  62. package/lib/theme/LayoutHead/index.js +22 -17
  63. package/lib/theme/LayoutProviders/index.js +11 -5
  64. package/lib/theme/Logo/index.js +16 -14
  65. package/lib/theme/MDXComponents/index.js +45 -4
  66. package/lib/theme/MDXComponents/styles.css +11 -0
  67. package/lib/theme/MDXPage/index.js +2 -1
  68. package/lib/theme/Navbar/index.js +162 -42
  69. package/lib/theme/Navbar/styles.module.css +10 -3
  70. package/lib/theme/NavbarItem/DefaultNavbarItem.js +27 -123
  71. package/lib/theme/NavbarItem/DocNavbarItem.js +7 -8
  72. package/lib/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +19 -12
  73. package/lib/theme/NavbarItem/DropdownNavbarItem.js +155 -0
  74. package/lib/theme/NavbarItem/{LocaleDropdownNavbarItem.js → LocaleDropdownNavbarItem/index.js} +6 -10
  75. package/lib/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +11 -0
  76. package/lib/theme/NavbarItem/index.js +31 -11
  77. package/lib/theme/{SearchMetadatas → SearchMetadata}/index.js +2 -2
  78. package/lib/theme/Seo/index.js +10 -7
  79. package/lib/theme/SkipToContent/index.js +12 -4
  80. package/lib/theme/SkipToContent/styles.module.css +1 -0
  81. package/lib/theme/TOC/index.js +9 -29
  82. package/lib/theme/TOC/styles.module.css +1 -1
  83. package/lib/theme/TOCCollapsible/index.js +53 -0
  84. package/lib/theme/TOCCollapsible/styles.module.css +50 -0
  85. package/lib/theme/TOCInline/index.js +7 -27
  86. package/lib/theme/TOCItems/index.js +78 -0
  87. package/lib/theme/Tabs/__tests__/index.test.js +123 -0
  88. package/lib/theme/Tabs/index.js +73 -50
  89. package/lib/theme/Tabs/styles.module.css +0 -13
  90. package/lib/theme/Tag/index.js +40 -0
  91. package/lib/theme/Tag/styles.module.css +70 -0
  92. package/lib/theme/TagsListByLetter/index.js +48 -0
  93. package/lib/theme/TagsListByLetter/styles.module.css +11 -0
  94. package/lib/theme/TagsListInline/index.js +44 -0
  95. package/lib/theme/TagsListInline/styles.module.css +15 -0
  96. package/lib/theme/ThemeProvider/index.js +8 -3
  97. package/lib/theme/ThemedImage/index.js +6 -7
  98. package/lib/theme/Toggle/index.js +41 -44
  99. package/lib/theme/Toggle/styles.module.css +91 -3
  100. package/lib/theme/UserPreferencesProvider/index.js +9 -12
  101. package/lib/theme/hooks/useHideableNavbar.js +14 -32
  102. package/lib/theme/hooks/useTabGroupChoice.js +2 -4
  103. package/lib/theme/hooks/useTheme.js +3 -5
  104. package/lib/theme/hooks/useWindowSize.js +33 -20
  105. package/lib/theme/prism-include-languages.js +4 -3
  106. package/lib/theme-classic.d.ts +806 -0
  107. package/lib/translations.js +4 -4
  108. package/lib/types.d.ts +0 -599
  109. package/lib/validateThemeConfig.js +230 -246
  110. package/lib-next/__tests__/validateThemeConfig.test.js +277 -3
  111. package/lib-next/admonitions.css +35 -0
  112. package/lib-next/deps.d.ts +13 -0
  113. package/lib-next/index.js +45 -13
  114. package/lib-next/prism-include-languages.js +0 -2
  115. package/lib-next/theme/AnnouncementBar/index.js +9 -18
  116. package/lib-next/theme/AnnouncementBar/styles.module.css +25 -30
  117. package/lib-next/theme/BackToTopButton/index.js +131 -0
  118. package/lib-next/theme/BackToTopButton/styles.module.css +42 -0
  119. package/lib-next/theme/BlogArchivePage/index.js +80 -0
  120. package/lib-next/theme/BlogLayout/index.js +40 -0
  121. package/lib-next/theme/BlogListPage/index.js +17 -25
  122. package/lib-next/theme/BlogPostAuthor/index.js +46 -0
  123. package/lib-next/theme/BlogPostAuthor/styles.module.css +12 -0
  124. package/lib-next/theme/BlogPostAuthors/index.js +34 -0
  125. package/lib-next/theme/BlogPostAuthors/styles.module.css +11 -0
  126. package/lib-next/theme/BlogPostItem/index.js +79 -86
  127. package/lib-next/theme/BlogPostPage/index.js +70 -35
  128. package/lib-next/theme/BlogSidebar/index.js +11 -13
  129. package/lib-next/theme/BlogSidebar/styles.module.css +2 -2
  130. package/lib-next/theme/BlogTagsListPage/index.js +14 -55
  131. package/lib-next/theme/BlogTagsPostsPage/index.js +29 -39
  132. package/lib-next/theme/CodeBlock/index.js +17 -149
  133. package/lib-next/theme/CodeBlock/styles.module.css +6 -9
  134. package/lib-next/theme/Details/index.js +20 -0
  135. package/lib-next/theme/Details/styles.module.css +13 -0
  136. package/lib-next/theme/DocCard/index.js +80 -0
  137. package/lib-next/theme/DocCard/styles.module.css +43 -0
  138. package/lib-next/theme/DocCardList/index.js +19 -0
  139. package/lib-next/theme/DocCategoryGeneratedIndexPage/index.js +49 -0
  140. package/lib-next/theme/DocCategoryGeneratedIndexPage/styles.module.css +18 -0
  141. package/lib-next/theme/DocItem/index.js +40 -56
  142. package/lib-next/theme/DocItem/styles.module.css +5 -9
  143. package/lib-next/theme/DocItemFooter/index.js +79 -0
  144. package/lib-next/theme/DocItemFooter/styles.module.css +18 -0
  145. package/lib-next/theme/DocPage/index.js +46 -47
  146. package/lib-next/theme/DocPage/styles.module.css +8 -23
  147. package/lib-next/theme/DocPaginator/index.js +7 -11
  148. package/lib-next/theme/DocSidebar/index.js +69 -295
  149. package/lib-next/theme/DocSidebar/styles.module.css +0 -18
  150. package/lib-next/theme/DocSidebarItem/index.js +217 -0
  151. package/lib-next/theme/DocSidebarItem/styles.module.css +19 -0
  152. package/lib-next/theme/DocTagDocListPage/index.js +89 -0
  153. package/lib-next/theme/DocTagsListPage/index.js +38 -0
  154. package/lib-next/theme/DocVersionBadge/index.js +27 -0
  155. package/lib-next/theme/{DocVersionSuggestions → DocVersionBanner}/index.js +51 -36
  156. package/lib-next/theme/EditThisPage/index.js +6 -1
  157. package/lib-next/theme/ErrorPageContent.js +35 -0
  158. package/lib-next/theme/Footer/index.js +27 -5
  159. package/lib-next/theme/Heading/index.js +25 -29
  160. package/lib-next/theme/Heading/styles.css +5 -6
  161. package/lib-next/theme/Heading/styles.module.css +9 -5
  162. package/lib-next/theme/IconArrow/index.js +2 -2
  163. package/lib-next/theme/IconClose/index.js +23 -0
  164. package/lib-next/theme/IconEdit/index.js +2 -2
  165. package/lib-next/theme/IconExternalLink/index.js +2 -2
  166. package/lib-next/theme/IconLanguage/index.js +2 -2
  167. package/lib-next/theme/IconMenu/index.js +2 -2
  168. package/lib-next/theme/LastUpdated/index.js +3 -2
  169. package/lib-next/theme/Layout/index.js +3 -1
  170. package/lib-next/theme/LayoutHead/index.js +18 -23
  171. package/lib-next/theme/LayoutProviders/index.js +17 -6
  172. package/lib-next/theme/Logo/index.js +25 -21
  173. package/lib-next/theme/MDXComponents/index.js +34 -7
  174. package/lib-next/theme/MDXComponents/styles.css +11 -0
  175. package/lib-next/theme/MDXPage/index.js +10 -2
  176. package/lib-next/theme/Navbar/index.js +193 -56
  177. package/lib-next/theme/Navbar/styles.module.css +10 -3
  178. package/lib-next/theme/NavbarItem/DefaultNavbarItem.js +45 -147
  179. package/lib-next/theme/NavbarItem/DocNavbarItem.js +7 -7
  180. package/lib-next/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +31 -19
  181. package/lib-next/theme/NavbarItem/DropdownNavbarItem.js +159 -0
  182. package/lib-next/theme/NavbarItem/{LocaleDropdownNavbarItem.js → LocaleDropdownNavbarItem/index.js} +4 -12
  183. package/lib-next/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +11 -0
  184. package/lib-next/theme/NavbarItem/index.js +25 -12
  185. package/lib-next/theme/{SearchMetadatas → SearchMetadata}/index.js +1 -1
  186. package/lib-next/theme/Seo/index.js +11 -7
  187. package/lib-next/theme/SkipToContent/index.js +7 -8
  188. package/lib-next/theme/SkipToContent/styles.module.css +1 -0
  189. package/lib-next/theme/TOC/index.js +12 -36
  190. package/lib-next/theme/TOC/styles.module.css +1 -1
  191. package/lib-next/theme/TOCCollapsible/index.js +54 -0
  192. package/lib-next/theme/TOCCollapsible/styles.module.css +50 -0
  193. package/lib-next/theme/TOCInline/index.js +10 -28
  194. package/lib-next/theme/TOCItems/index.js +85 -0
  195. package/lib-next/theme/Tabs/__tests__/index.test.js +142 -0
  196. package/lib-next/theme/Tabs/index.js +91 -43
  197. package/lib-next/theme/Tabs/styles.module.css +0 -13
  198. package/lib-next/theme/Tag/index.js +27 -0
  199. package/lib-next/theme/Tag/styles.module.css +70 -0
  200. package/lib-next/theme/TagsListByLetter/index.js +42 -0
  201. package/lib-next/theme/TagsListByLetter/styles.module.css +11 -0
  202. package/lib-next/theme/TagsListInline/index.js +31 -0
  203. package/lib-next/theme/TagsListInline/styles.module.css +15 -0
  204. package/lib-next/theme/ThemeProvider/index.js +10 -7
  205. package/lib-next/theme/ThemedImage/index.js +7 -8
  206. package/lib-next/theme/Toggle/index.js +34 -37
  207. package/lib-next/theme/Toggle/styles.module.css +91 -3
  208. package/lib-next/theme/UserPreferencesProvider/index.js +9 -10
  209. package/lib-next/theme/hooks/useHideableNavbar.js +31 -44
  210. package/lib-next/theme/hooks/useTabGroupChoice.js +2 -4
  211. package/lib-next/theme/hooks/useTheme.js +4 -5
  212. package/lib-next/theme/hooks/useWindowSize.js +34 -20
  213. package/lib-next/theme/prism-include-languages.js +2 -1
  214. package/lib-next/theme-classic.d.ts +806 -0
  215. package/lib-next/translations.js +6 -10
  216. package/lib-next/types.d.ts +0 -599
  217. package/lib-next/validateThemeConfig.js +141 -114
  218. package/package.json +28 -25
  219. package/src/__tests__/validateThemeConfig.test.js +277 -3
  220. package/src/admonitions.css +35 -0
  221. package/src/deps.d.ts +13 -0
  222. package/src/index.ts +55 -22
  223. package/src/{prism-include-languages.js → prism-include-languages.ts} +0 -0
  224. package/src/theme/AnnouncementBar/index.tsx +10 -17
  225. package/src/theme/AnnouncementBar/styles.module.css +25 -30
  226. package/src/theme/BackToTopButton/index.tsx +142 -0
  227. package/src/theme/BackToTopButton/styles.module.css +42 -0
  228. package/src/theme/BlogArchivePage/index.tsx +91 -0
  229. package/src/theme/BlogLayout/index.tsx +44 -0
  230. package/src/theme/BlogListPage/index.tsx +18 -25
  231. package/src/theme/BlogPostAuthor/index.tsx +49 -0
  232. package/src/theme/BlogPostAuthor/styles.module.css +12 -0
  233. package/src/theme/BlogPostAuthors/index.tsx +39 -0
  234. package/src/theme/BlogPostAuthors/styles.module.css +11 -0
  235. package/src/theme/BlogPostItem/index.tsx +70 -80
  236. package/src/theme/BlogPostPage/index.tsx +72 -35
  237. package/src/theme/BlogSidebar/index.tsx +11 -13
  238. package/src/theme/BlogSidebar/styles.module.css +2 -2
  239. package/src/theme/BlogTagsListPage/index.tsx +14 -57
  240. package/src/theme/BlogTagsPostsPage/index.tsx +29 -39
  241. package/src/theme/CodeBlock/index.tsx +21 -151
  242. package/src/theme/CodeBlock/styles.module.css +6 -9
  243. package/src/theme/Details/index.tsx +24 -0
  244. package/src/theme/Details/styles.module.css +13 -0
  245. package/src/theme/DocCard/index.tsx +100 -0
  246. package/src/theme/DocCard/styles.module.css +43 -0
  247. package/src/theme/DocCardList/index.tsx +27 -0
  248. package/src/theme/DocCategoryGeneratedIndexPage/index.tsx +53 -0
  249. package/src/theme/DocCategoryGeneratedIndexPage/styles.module.css +18 -0
  250. package/src/theme/DocItem/index.tsx +43 -56
  251. package/src/theme/DocItem/styles.module.css +5 -9
  252. package/src/theme/DocItemFooter/index.tsx +91 -0
  253. package/src/theme/DocItemFooter/styles.module.css +18 -0
  254. package/src/theme/DocPage/index.tsx +44 -42
  255. package/src/theme/DocPage/styles.module.css +8 -23
  256. package/src/theme/DocPaginator/index.tsx +9 -13
  257. package/src/theme/DocSidebar/index.tsx +80 -307
  258. package/src/theme/DocSidebar/styles.module.css +0 -18
  259. package/src/theme/DocSidebarItem/index.tsx +242 -0
  260. package/src/theme/DocSidebarItem/styles.module.css +19 -0
  261. package/src/theme/DocTagDocListPage/index.tsx +89 -0
  262. package/src/theme/DocTagsListPage/index.tsx +41 -0
  263. package/src/theme/DocVersionBadge/index.tsx +30 -0
  264. package/src/theme/{DocVersionSuggestions → DocVersionBanner}/index.tsx +74 -44
  265. package/src/theme/EditThisPage/index.tsx +6 -1
  266. package/src/theme/ErrorPageContent.tsx +41 -0
  267. package/src/theme/Footer/index.tsx +30 -6
  268. package/src/theme/Heading/index.tsx +25 -31
  269. package/src/theme/Heading/styles.css +5 -6
  270. package/src/theme/Heading/styles.module.css +9 -5
  271. package/src/theme/IconArrow/index.tsx +2 -2
  272. package/src/theme/IconClose/index.tsx +26 -0
  273. package/src/theme/IconEdit/index.tsx +2 -2
  274. package/src/theme/IconExternalLink/index.tsx +2 -5
  275. package/src/theme/IconLanguage/index.tsx +2 -6
  276. package/src/theme/IconMenu/index.tsx +3 -3
  277. package/src/theme/LastUpdated/index.tsx +3 -2
  278. package/src/theme/Layout/index.tsx +3 -1
  279. package/src/theme/LayoutHead/index.tsx +18 -17
  280. package/src/theme/LayoutProviders/index.tsx +17 -6
  281. package/src/theme/Logo/index.tsx +21 -17
  282. package/src/theme/MDXComponents/index.tsx +39 -5
  283. package/src/theme/MDXComponents/styles.css +11 -0
  284. package/src/theme/MDXPage/index.tsx +10 -2
  285. package/src/theme/Navbar/index.tsx +203 -61
  286. package/src/theme/Navbar/styles.module.css +10 -3
  287. package/src/theme/NavbarItem/DefaultNavbarItem.tsx +42 -154
  288. package/src/theme/NavbarItem/DocNavbarItem.tsx +12 -16
  289. package/src/theme/NavbarItem/DocsVersionDropdownNavbarItem.tsx +33 -21
  290. package/src/theme/NavbarItem/DocsVersionNavbarItem.tsx +7 -3
  291. package/src/theme/NavbarItem/DropdownNavbarItem.tsx +181 -0
  292. package/src/theme/NavbarItem/{LocaleDropdownNavbarItem.tsx → LocaleDropdownNavbarItem/index.tsx} +8 -9
  293. package/src/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +11 -0
  294. package/src/theme/NavbarItem/index.tsx +41 -16
  295. package/src/theme/{SearchMetadatas → SearchMetadata}/index.tsx +2 -2
  296. package/src/theme/Seo/index.tsx +7 -4
  297. package/src/theme/SkipToContent/index.tsx +7 -8
  298. package/src/theme/SkipToContent/styles.module.css +1 -0
  299. package/src/theme/TOC/index.tsx +12 -41
  300. package/src/theme/TOC/styles.module.css +1 -1
  301. package/src/theme/TOCCollapsible/index.tsx +58 -0
  302. package/src/theme/TOCCollapsible/styles.module.css +50 -0
  303. package/src/theme/TOCInline/index.tsx +13 -32
  304. package/src/theme/TOCItems/index.tsx +96 -0
  305. package/src/theme/Tabs/__tests__/index.test.tsx +129 -0
  306. package/src/theme/Tabs/index.tsx +93 -49
  307. package/src/theme/Tabs/styles.module.css +0 -13
  308. package/src/theme/Tag/index.tsx +31 -0
  309. package/src/theme/Tag/styles.module.css +70 -0
  310. package/src/theme/TagsListByLetter/index.tsx +45 -0
  311. package/src/theme/TagsListByLetter/styles.module.css +11 -0
  312. package/src/theme/TagsListInline/index.tsx +35 -0
  313. package/src/theme/TagsListInline/styles.module.css +15 -0
  314. package/src/theme/ThemeProvider/index.tsx +6 -2
  315. package/src/theme/ThemedImage/index.tsx +8 -8
  316. package/src/theme/Toggle/index.tsx +36 -43
  317. package/src/theme/Toggle/styles.module.css +91 -3
  318. package/src/theme/UserPreferencesProvider/index.tsx +9 -11
  319. package/src/theme/hooks/useHideableNavbar.ts +32 -45
  320. package/src/theme/hooks/useTabGroupChoice.ts +4 -4
  321. package/src/theme/hooks/useTheme.ts +4 -5
  322. package/src/theme/hooks/useWindowSize.ts +38 -20
  323. package/src/theme/prism-include-languages.ts +3 -2
  324. package/src/theme-classic.d.ts +806 -0
  325. package/src/translations.ts +8 -10
  326. package/src/types.d.ts +0 -599
  327. package/src/{validateThemeConfig.js → validateThemeConfig.ts} +151 -94
  328. package/tsconfig.json +1 -2
  329. package/codeTranslations/README.md +0 -20
  330. package/codeTranslations/ar.json +0 -57
  331. package/codeTranslations/base.json +0 -112
  332. package/codeTranslations/bn.json +0 -56
  333. package/codeTranslations/da.json +0 -57
  334. package/codeTranslations/de.json +0 -57
  335. package/codeTranslations/es.json +0 -57
  336. package/codeTranslations/fa.json +0 -57
  337. package/codeTranslations/fil.json +0 -57
  338. package/codeTranslations/fr.json +0 -57
  339. package/codeTranslations/he.json +0 -57
  340. package/codeTranslations/hi.json +0 -57
  341. package/codeTranslations/ja.json +0 -57
  342. package/codeTranslations/ko.json +0 -57
  343. package/codeTranslations/pl.json +0 -57
  344. package/codeTranslations/pt-BR.json +0 -57
  345. package/codeTranslations/pt-PT.json +0 -57
  346. package/codeTranslations/ru.json +0 -57
  347. package/codeTranslations/tr.json +0 -57
  348. package/codeTranslations/vi.json +0 -57
  349. package/codeTranslations/zh-Hans.json +0 -57
  350. package/codeTranslations/zh-Hant.json +0 -57
  351. package/lib/theme/Toggle/styles.css +0 -103
  352. package/lib/theme/hooks/useAnnouncementBar.js +0 -63
  353. package/lib/theme/hooks/useContextualSearchFilters.js +0 -47
  354. package/lib/theme/hooks/useScrollPosition.js +0 -49
  355. package/lib/theme/hooks/useTOCHighlight.js +0 -87
  356. package/lib-next/theme/Toggle/styles.css +0 -103
  357. package/lib-next/theme/hooks/useAnnouncementBar.js +0 -49
  358. package/lib-next/theme/hooks/useContextualSearchFilters.js +0 -41
  359. package/lib-next/theme/hooks/useScrollPosition.js +0 -38
  360. package/lib-next/theme/hooks/useTOCHighlight.js +0 -84
  361. package/src/theme/Toggle/styles.css +0 -103
  362. package/src/theme/hooks/useAnnouncementBar.ts +0 -58
  363. package/src/theme/hooks/useContextualSearchFilters.ts +0 -52
  364. package/src/theme/hooks/useScrollPosition.ts +0 -45
  365. package/src/theme/hooks/useTOCHighlight.ts +0 -98
  366. package/update-code-translations.js +0 -239
  367. package/update-code-translations.test.js +0 -33
@@ -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,159 @@
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 dropdownMenuRef = useRef(null);
43
+ const [showDropdown, setShowDropdown] = useState(false);
44
+ useEffect(() => {
45
+ const handleClickOutside = (event) => {
46
+ if (!dropdownRef.current || dropdownRef.current.contains(event.target)) {
47
+ return;
48
+ }
49
+
50
+ setShowDropdown(false);
51
+ };
52
+
53
+ document.addEventListener('mousedown', handleClickOutside);
54
+ document.addEventListener('touchstart', handleClickOutside);
55
+ return () => {
56
+ document.removeEventListener('mousedown', handleClickOutside);
57
+ document.removeEventListener('touchstart', handleClickOutside);
58
+ };
59
+ }, [dropdownRef]);
60
+ return (
61
+ <div
62
+ ref={dropdownRef}
63
+ className={clsx('navbar__item', 'dropdown', 'dropdown--hoverable', {
64
+ 'dropdown--right': position === 'right',
65
+ 'dropdown--show': showDropdown,
66
+ })}>
67
+ <NavLink
68
+ href={props.to ? undefined : '#'}
69
+ className={clsx('navbar__link', className)}
70
+ {...props}
71
+ onClick={props.to ? undefined : (e) => e.preventDefault()}
72
+ onKeyDown={(e) => {
73
+ if (e.key === 'Enter') {
74
+ e.preventDefault();
75
+ setShowDropdown(!showDropdown);
76
+ }
77
+ }}>
78
+ {props.children ?? props.label}
79
+ </NavLink>
80
+ <ul ref={dropdownMenuRef} className="dropdown__menu">
81
+ {items.map((childItemProps, i) => (
82
+ <NavbarItem
83
+ isDropdownItem
84
+ onKeyDown={(e) => {
85
+ if (i === items.length - 1 && e.key === 'Tab') {
86
+ e.preventDefault();
87
+ setShowDropdown(false);
88
+ const nextNavbarItem = dropdownRef.current.nextElementSibling;
89
+
90
+ if (nextNavbarItem) {
91
+ nextNavbarItem.focus();
92
+ }
93
+ }
94
+ }}
95
+ activeClassName={dropdownLinkActiveClass}
96
+ {...childItemProps}
97
+ key={i}
98
+ />
99
+ ))}
100
+ </ul>
101
+ </div>
102
+ );
103
+ }
104
+
105
+ function DropdownNavbarItemMobile({
106
+ items,
107
+ className,
108
+ position: _position,
109
+ // Need to destructure position from props so that it doesn't get passed on.
110
+ ...props
111
+ }) {
112
+ const localPathname = useLocalPathname();
113
+ const containsActive = containsActiveItems(items, localPathname);
114
+ const {collapsed, toggleCollapsed, setCollapsed} = useCollapsible({
115
+ initialState: () => !containsActive,
116
+ }); // Expand/collapse if any item active after a navigation
117
+
118
+ useEffect(() => {
119
+ if (containsActive) {
120
+ setCollapsed(!containsActive);
121
+ }
122
+ }, [localPathname, containsActive, setCollapsed]);
123
+ return (
124
+ <li
125
+ className={clsx('menu__list-item', {
126
+ 'menu__list-item--collapsed': collapsed,
127
+ })}>
128
+ <NavLink
129
+ role="button"
130
+ className={clsx('menu__link menu__link--sublist', className)}
131
+ {...props}
132
+ onClick={(e) => {
133
+ e.preventDefault();
134
+ toggleCollapsed();
135
+ }}>
136
+ {props.children ?? props.label}
137
+ </NavLink>
138
+ <Collapsible lazy as="ul" className="menu__list" collapsed={collapsed}>
139
+ {items.map((childItemProps, i) => (
140
+ <NavbarItem
141
+ mobile
142
+ isDropdownItem
143
+ onClick={props.onClick}
144
+ activeClassName="menu__link--active"
145
+ {...childItemProps}
146
+ key={i}
147
+ />
148
+ ))}
149
+ </Collapsible>
150
+ </li>
151
+ );
152
+ }
153
+
154
+ function DropdownNavbarItem({mobile = false, ...props}) {
155
+ const Comp = mobile ? DropdownNavbarItemMobile : DropdownNavbarItemDesktop;
156
+ return <Comp {...props} />;
157
+ }
158
+
159
+ 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} />}