@docusaurus/theme-classic 2.0.0-beta.8bda3b2db → 2.0.0-beta.9

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 (310) hide show
  1. package/README.md +1 -1
  2. package/codeTranslations/ar.json +12 -7
  3. package/codeTranslations/base.json +17 -7
  4. package/codeTranslations/bn.json +11 -5
  5. package/codeTranslations/cs.json +62 -0
  6. package/codeTranslations/da.json +8 -3
  7. package/codeTranslations/de.json +8 -3
  8. package/codeTranslations/es.json +15 -10
  9. package/codeTranslations/fa.json +31 -26
  10. package/codeTranslations/fil.json +8 -3
  11. package/codeTranslations/fr.json +8 -3
  12. package/codeTranslations/he.json +9 -4
  13. package/codeTranslations/hi.json +9 -4
  14. package/codeTranslations/ja.json +8 -3
  15. package/codeTranslations/ko.json +8 -3
  16. package/codeTranslations/pl.json +8 -3
  17. package/codeTranslations/pt-BR.json +16 -11
  18. package/codeTranslations/pt-PT.json +8 -3
  19. package/codeTranslations/ru.json +10 -5
  20. package/codeTranslations/sr.json +62 -0
  21. package/codeTranslations/tr.json +9 -4
  22. package/codeTranslations/vi.json +10 -5
  23. package/codeTranslations/zh-Hans.json +9 -4
  24. package/codeTranslations/zh-Hant.json +9 -4
  25. package/lib/__tests__/validateThemeConfig.test.js +277 -3
  26. package/lib/admonitions.css +35 -0
  27. package/lib/index.js +31 -8
  28. package/lib/prism-include-languages.js +9 -5
  29. package/lib/theme/AnnouncementBar/index.js +10 -16
  30. package/lib/theme/AnnouncementBar/styles.module.css +25 -30
  31. package/lib/theme/BackToTopButton/index.js +140 -0
  32. package/lib/theme/BackToTopButton/styles.module.css +42 -0
  33. package/lib/theme/BlogArchivePage/index.js +89 -0
  34. package/lib/theme/BlogLayout/index.js +51 -0
  35. package/lib/theme/BlogListPage/index.js +10 -21
  36. package/lib/theme/BlogPostAuthor/index.js +51 -0
  37. package/lib/theme/BlogPostAuthor/styles.module.css +12 -0
  38. package/lib/theme/BlogPostAuthors/index.js +47 -0
  39. package/lib/theme/BlogPostAuthors/styles.module.css +11 -0
  40. package/lib/theme/BlogPostItem/index.js +58 -67
  41. package/lib/theme/BlogPostPage/index.js +37 -24
  42. package/lib/theme/BlogSidebar/styles.module.css +2 -2
  43. package/lib/theme/BlogTagsListPage/index.js +8 -44
  44. package/lib/theme/BlogTagsPostsPage/index.js +24 -38
  45. package/lib/theme/CodeBlock/index.js +45 -41
  46. package/lib/theme/CodeBlock/styles.module.css +6 -9
  47. package/lib/theme/Details/index.js +30 -0
  48. package/lib/theme/Details/styles.module.css +13 -0
  49. package/lib/theme/DocItem/index.js +29 -45
  50. package/lib/theme/DocItem/styles.module.css +5 -9
  51. package/lib/theme/DocItemFooter/index.js +79 -0
  52. package/lib/theme/DocItemFooter/styles.module.css +18 -0
  53. package/lib/theme/DocPage/index.js +25 -49
  54. package/lib/theme/DocPage/styles.module.css +8 -23
  55. package/lib/theme/DocSidebar/index.js +45 -227
  56. package/lib/theme/DocSidebar/styles.module.css +0 -18
  57. package/lib/theme/DocSidebarItem/index.js +177 -0
  58. package/lib/theme/DocSidebarItem/styles.module.css +15 -0
  59. package/lib/theme/DocTagDocListPage/index.js +89 -0
  60. package/lib/theme/DocTagsListPage/index.js +44 -0
  61. package/lib/theme/{DocVersionSuggestions → DocVersionBanner}/index.js +37 -18
  62. package/lib/theme/EditThisPage/index.js +3 -1
  63. package/lib/theme/Footer/index.js +13 -4
  64. package/lib/theme/Heading/index.js +7 -9
  65. package/lib/theme/Heading/styles.css +4 -6
  66. package/lib/theme/Heading/styles.module.css +9 -5
  67. package/lib/theme/IconClose/index.js +31 -0
  68. package/lib/theme/LastUpdated/index.js +4 -2
  69. package/lib/theme/LayoutHead/index.js +13 -11
  70. package/lib/theme/LayoutProviders/index.js +11 -5
  71. package/lib/theme/Logo/index.js +14 -12
  72. package/lib/theme/MDXComponents/index.js +45 -4
  73. package/lib/theme/MDXComponents/styles.css +11 -0
  74. package/lib/theme/MDXPage/index.js +2 -1
  75. package/lib/theme/Navbar/index.js +164 -42
  76. package/lib/theme/Navbar/styles.module.css +10 -3
  77. package/lib/theme/NavbarItem/DefaultNavbarItem.js +27 -123
  78. package/lib/theme/NavbarItem/DocNavbarItem.js +6 -5
  79. package/lib/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +19 -12
  80. package/lib/theme/NavbarItem/DropdownNavbarItem.js +155 -0
  81. package/lib/theme/NavbarItem/{LocaleDropdownNavbarItem.js → LocaleDropdownNavbarItem/index.js} +5 -6
  82. package/lib/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +11 -0
  83. package/lib/theme/NavbarItem/index.js +31 -11
  84. package/lib/theme/Seo/index.js +10 -7
  85. package/lib/theme/SkipToContent/index.js +9 -3
  86. package/lib/theme/SkipToContent/styles.module.css +1 -0
  87. package/lib/theme/TOC/index.js +9 -29
  88. package/lib/theme/TOC/styles.module.css +1 -1
  89. package/lib/theme/TOCCollapsible/index.js +53 -0
  90. package/lib/theme/TOCCollapsible/styles.module.css +50 -0
  91. package/lib/theme/TOCInline/index.js +7 -27
  92. package/lib/theme/TOCItems/index.js +78 -0
  93. package/lib/theme/Tabs/__tests__/index.test.js +123 -0
  94. package/lib/theme/Tabs/index.js +73 -50
  95. package/lib/theme/Tabs/styles.module.css +0 -13
  96. package/lib/theme/Tag/index.js +40 -0
  97. package/lib/theme/Tag/styles.module.css +70 -0
  98. package/lib/theme/TagsListByLetter/index.js +48 -0
  99. package/lib/theme/TagsListByLetter/styles.module.css +11 -0
  100. package/lib/theme/TagsListInline/index.js +44 -0
  101. package/lib/theme/TagsListInline/styles.module.css +15 -0
  102. package/lib/theme/ThemedImage/index.js +4 -5
  103. package/lib/theme/Toggle/index.js +23 -18
  104. package/lib/theme/Toggle/styles.module.css +91 -0
  105. package/lib/theme/UserPreferencesProvider/index.js +1 -9
  106. package/lib/theme/hooks/useHideableNavbar.js +14 -32
  107. package/lib/theme/hooks/useTabGroupChoice.js +2 -4
  108. package/lib/theme/hooks/useTheme.js +2 -2
  109. package/lib/theme/hooks/useWindowSize.js +33 -20
  110. package/lib/theme/prism-include-languages.js +4 -3
  111. package/lib/translations.js +4 -4
  112. package/lib/types.d.ts +338 -138
  113. package/lib/validateThemeConfig.js +226 -245
  114. package/lib-next/__tests__/validateThemeConfig.test.js +277 -3
  115. package/lib-next/admonitions.css +35 -0
  116. package/lib-next/index.js +33 -7
  117. package/lib-next/prism-include-languages.js +0 -2
  118. package/lib-next/theme/AnnouncementBar/index.js +9 -18
  119. package/lib-next/theme/AnnouncementBar/styles.module.css +25 -30
  120. package/lib-next/theme/BackToTopButton/index.js +131 -0
  121. package/lib-next/theme/BackToTopButton/styles.module.css +42 -0
  122. package/lib-next/theme/BlogArchivePage/index.js +80 -0
  123. package/lib-next/theme/BlogLayout/index.js +40 -0
  124. package/lib-next/theme/BlogListPage/index.js +16 -24
  125. package/lib-next/theme/BlogPostAuthor/index.js +46 -0
  126. package/lib-next/theme/BlogPostAuthor/styles.module.css +12 -0
  127. package/lib-next/theme/BlogPostAuthors/index.js +34 -0
  128. package/lib-next/theme/BlogPostAuthors/styles.module.css +11 -0
  129. package/lib-next/theme/BlogPostItem/index.js +79 -86
  130. package/lib-next/theme/BlogPostPage/index.js +70 -35
  131. package/lib-next/theme/BlogSidebar/styles.module.css +2 -2
  132. package/lib-next/theme/BlogTagsListPage/index.js +13 -54
  133. package/lib-next/theme/BlogTagsPostsPage/index.js +28 -38
  134. package/lib-next/theme/CodeBlock/index.js +54 -53
  135. package/lib-next/theme/CodeBlock/styles.module.css +6 -9
  136. package/lib-next/theme/Details/index.js +20 -0
  137. package/lib-next/theme/Details/styles.module.css +13 -0
  138. package/lib-next/theme/DocItem/index.js +46 -55
  139. package/lib-next/theme/DocItem/styles.module.css +5 -9
  140. package/lib-next/theme/DocItemFooter/index.js +79 -0
  141. package/lib-next/theme/DocItemFooter/styles.module.css +18 -0
  142. package/lib-next/theme/DocPage/index.js +25 -43
  143. package/lib-next/theme/DocPage/styles.module.css +8 -23
  144. package/lib-next/theme/DocSidebar/index.js +59 -288
  145. package/lib-next/theme/DocSidebar/styles.module.css +0 -18
  146. package/lib-next/theme/DocSidebarItem/index.js +181 -0
  147. package/lib-next/theme/DocSidebarItem/styles.module.css +15 -0
  148. package/lib-next/theme/DocTagDocListPage/index.js +89 -0
  149. package/lib-next/theme/DocTagsListPage/index.js +38 -0
  150. package/lib-next/theme/{DocVersionSuggestions → DocVersionBanner}/index.js +44 -36
  151. package/lib-next/theme/EditThisPage/index.js +6 -1
  152. package/lib-next/theme/Footer/index.js +24 -4
  153. package/lib-next/theme/Heading/index.js +10 -13
  154. package/lib-next/theme/Heading/styles.css +4 -6
  155. package/lib-next/theme/Heading/styles.module.css +9 -5
  156. package/lib-next/theme/IconClose/index.js +23 -0
  157. package/lib-next/theme/LastUpdated/index.js +3 -2
  158. package/lib-next/theme/LayoutHead/index.js +9 -15
  159. package/lib-next/theme/LayoutProviders/index.js +17 -6
  160. package/lib-next/theme/Logo/index.js +23 -19
  161. package/lib-next/theme/MDXComponents/index.js +34 -7
  162. package/lib-next/theme/MDXComponents/styles.css +11 -0
  163. package/lib-next/theme/MDXPage/index.js +10 -2
  164. package/lib-next/theme/Navbar/index.js +192 -56
  165. package/lib-next/theme/Navbar/styles.module.css +10 -3
  166. package/lib-next/theme/NavbarItem/DefaultNavbarItem.js +45 -147
  167. package/lib-next/theme/NavbarItem/DocNavbarItem.js +6 -5
  168. package/lib-next/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +31 -19
  169. package/lib-next/theme/NavbarItem/DropdownNavbarItem.js +158 -0
  170. package/lib-next/theme/NavbarItem/{LocaleDropdownNavbarItem.js → LocaleDropdownNavbarItem/index.js} +4 -8
  171. package/lib-next/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +11 -0
  172. package/lib-next/theme/NavbarItem/index.js +25 -12
  173. package/lib-next/theme/Seo/index.js +11 -7
  174. package/lib-next/theme/SkipToContent/index.js +5 -6
  175. package/lib-next/theme/SkipToContent/styles.module.css +1 -0
  176. package/lib-next/theme/TOC/index.js +12 -36
  177. package/lib-next/theme/TOC/styles.module.css +1 -1
  178. package/lib-next/theme/TOCCollapsible/index.js +54 -0
  179. package/lib-next/theme/TOCCollapsible/styles.module.css +50 -0
  180. package/lib-next/theme/TOCInline/index.js +10 -28
  181. package/lib-next/theme/TOCItems/index.js +85 -0
  182. package/lib-next/theme/Tabs/__tests__/index.test.js +142 -0
  183. package/lib-next/theme/Tabs/index.js +91 -43
  184. package/lib-next/theme/Tabs/styles.module.css +0 -13
  185. package/lib-next/theme/Tag/index.js +27 -0
  186. package/lib-next/theme/Tag/styles.module.css +70 -0
  187. package/lib-next/theme/TagsListByLetter/index.js +42 -0
  188. package/lib-next/theme/TagsListByLetter/styles.module.css +11 -0
  189. package/lib-next/theme/TagsListInline/index.js +31 -0
  190. package/lib-next/theme/TagsListInline/styles.module.css +15 -0
  191. package/lib-next/theme/ThemedImage/index.js +5 -6
  192. package/lib-next/theme/Toggle/index.js +20 -15
  193. package/lib-next/theme/Toggle/styles.module.css +91 -0
  194. package/lib-next/theme/UserPreferencesProvider/index.js +0 -4
  195. package/lib-next/theme/hooks/useHideableNavbar.js +31 -44
  196. package/lib-next/theme/hooks/useTabGroupChoice.js +2 -4
  197. package/lib-next/theme/hooks/useTheme.js +2 -2
  198. package/lib-next/theme/hooks/useWindowSize.js +34 -20
  199. package/lib-next/theme/prism-include-languages.js +2 -1
  200. package/lib-next/translations.js +6 -10
  201. package/lib-next/types.d.ts +338 -138
  202. package/lib-next/validateThemeConfig.js +134 -110
  203. package/package.json +24 -19
  204. package/src/__tests__/validateThemeConfig.test.js +277 -3
  205. package/src/admonitions.css +35 -0
  206. package/src/index.ts +44 -14
  207. package/src/{prism-include-languages.js → prism-include-languages.ts} +0 -0
  208. package/src/theme/AnnouncementBar/index.tsx +10 -17
  209. package/src/theme/AnnouncementBar/styles.module.css +25 -30
  210. package/src/theme/BackToTopButton/index.tsx +142 -0
  211. package/src/theme/BackToTopButton/styles.module.css +42 -0
  212. package/src/theme/BlogArchivePage/index.tsx +91 -0
  213. package/src/theme/BlogLayout/index.tsx +44 -0
  214. package/src/theme/BlogListPage/index.tsx +17 -24
  215. package/src/theme/BlogPostAuthor/index.tsx +49 -0
  216. package/src/theme/BlogPostAuthor/styles.module.css +12 -0
  217. package/src/theme/BlogPostAuthors/index.tsx +36 -0
  218. package/src/theme/BlogPostAuthors/styles.module.css +11 -0
  219. package/src/theme/BlogPostItem/index.tsx +70 -80
  220. package/src/theme/BlogPostPage/index.tsx +72 -35
  221. package/src/theme/BlogSidebar/styles.module.css +2 -2
  222. package/src/theme/BlogTagsListPage/index.tsx +13 -56
  223. package/src/theme/BlogTagsPostsPage/index.tsx +28 -38
  224. package/src/theme/CodeBlock/index.tsx +70 -55
  225. package/src/theme/CodeBlock/styles.module.css +6 -9
  226. package/src/theme/Details/index.tsx +24 -0
  227. package/src/theme/Details/styles.module.css +13 -0
  228. package/src/theme/DocItem/index.tsx +49 -55
  229. package/src/theme/DocItem/styles.module.css +5 -9
  230. package/src/theme/DocItemFooter/index.tsx +91 -0
  231. package/src/theme/DocItemFooter/styles.module.css +18 -0
  232. package/src/theme/DocPage/index.tsx +24 -38
  233. package/src/theme/DocPage/styles.module.css +8 -23
  234. package/src/theme/DocSidebar/index.tsx +70 -300
  235. package/src/theme/DocSidebar/styles.module.css +0 -18
  236. package/src/theme/DocSidebarItem/index.tsx +206 -0
  237. package/src/theme/DocSidebarItem/styles.module.css +15 -0
  238. package/src/theme/DocTagDocListPage/index.tsx +89 -0
  239. package/src/theme/DocTagsListPage/index.tsx +41 -0
  240. package/src/theme/{DocVersionSuggestions → DocVersionBanner}/index.tsx +58 -44
  241. package/src/theme/EditThisPage/index.tsx +6 -1
  242. package/src/theme/Footer/index.tsx +26 -4
  243. package/src/theme/Heading/index.tsx +10 -13
  244. package/src/theme/Heading/styles.css +4 -6
  245. package/src/theme/Heading/styles.module.css +9 -5
  246. package/src/theme/IconClose/index.tsx +26 -0
  247. package/src/theme/LastUpdated/index.tsx +3 -2
  248. package/src/theme/LayoutHead/index.tsx +9 -9
  249. package/src/theme/LayoutProviders/index.tsx +17 -6
  250. package/src/theme/Logo/index.tsx +19 -15
  251. package/src/theme/MDXComponents/index.tsx +39 -5
  252. package/src/theme/MDXComponents/styles.css +11 -0
  253. package/src/theme/MDXPage/index.tsx +10 -2
  254. package/src/theme/Navbar/index.tsx +202 -61
  255. package/src/theme/Navbar/styles.module.css +10 -3
  256. package/src/theme/NavbarItem/DefaultNavbarItem.tsx +42 -154
  257. package/src/theme/NavbarItem/DocNavbarItem.tsx +11 -14
  258. package/src/theme/NavbarItem/DocsVersionDropdownNavbarItem.tsx +33 -21
  259. package/src/theme/NavbarItem/DocsVersionNavbarItem.tsx +7 -3
  260. package/src/theme/NavbarItem/DropdownNavbarItem.tsx +180 -0
  261. package/src/theme/NavbarItem/{LocaleDropdownNavbarItem.tsx → LocaleDropdownNavbarItem/index.tsx} +8 -7
  262. package/src/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +11 -0
  263. package/src/theme/NavbarItem/index.tsx +41 -16
  264. package/src/theme/Seo/index.tsx +7 -4
  265. package/src/theme/SkipToContent/index.tsx +5 -6
  266. package/src/theme/SkipToContent/styles.module.css +1 -0
  267. package/src/theme/TOC/index.tsx +12 -41
  268. package/src/theme/TOC/styles.module.css +1 -1
  269. package/src/theme/TOCCollapsible/index.tsx +58 -0
  270. package/src/theme/TOCCollapsible/styles.module.css +50 -0
  271. package/src/theme/TOCInline/index.tsx +13 -32
  272. package/src/theme/TOCItems/index.tsx +96 -0
  273. package/src/theme/Tabs/__tests__/index.test.tsx +129 -0
  274. package/src/theme/Tabs/index.tsx +93 -49
  275. package/src/theme/Tabs/styles.module.css +0 -13
  276. package/src/theme/Tag/index.tsx +31 -0
  277. package/src/theme/Tag/styles.module.css +70 -0
  278. package/src/theme/TagsListByLetter/index.tsx +45 -0
  279. package/src/theme/TagsListByLetter/styles.module.css +11 -0
  280. package/src/theme/TagsListInline/index.tsx +35 -0
  281. package/src/theme/TagsListInline/styles.module.css +15 -0
  282. package/src/theme/ThemedImage/index.tsx +6 -6
  283. package/src/theme/Toggle/index.tsx +20 -15
  284. package/src/theme/Toggle/styles.module.css +91 -0
  285. package/src/theme/UserPreferencesProvider/index.tsx +0 -5
  286. package/src/theme/hooks/useContextualSearchFilters.ts +1 -1
  287. package/src/theme/hooks/useHideableNavbar.ts +32 -45
  288. package/src/theme/hooks/useTabGroupChoice.ts +4 -4
  289. package/src/theme/hooks/useTheme.ts +2 -2
  290. package/src/theme/hooks/useWindowSize.ts +38 -20
  291. package/src/theme/prism-include-languages.ts +3 -2
  292. package/src/translations.ts +6 -10
  293. package/src/types.d.ts +338 -138
  294. package/src/{validateThemeConfig.js → validateThemeConfig.ts} +144 -90
  295. package/tsconfig.json +1 -2
  296. package/update-code-translations.js +10 -6
  297. package/update-code-translations.test.js +1 -1
  298. package/update.js +151 -0
  299. package/lib/theme/Toggle/styles.css +0 -103
  300. package/lib/theme/hooks/useAnnouncementBar.js +0 -63
  301. package/lib/theme/hooks/useScrollPosition.js +0 -49
  302. package/lib/theme/hooks/useTOCHighlight.js +0 -87
  303. package/lib-next/theme/Toggle/styles.css +0 -103
  304. package/lib-next/theme/hooks/useAnnouncementBar.js +0 -49
  305. package/lib-next/theme/hooks/useScrollPosition.js +0 -38
  306. package/lib-next/theme/hooks/useTOCHighlight.js +0 -84
  307. package/src/theme/Toggle/styles.css +0 -103
  308. package/src/theme/hooks/useAnnouncementBar.ts +0 -58
  309. package/src/theme/hooks/useScrollPosition.ts +0 -45
  310. package/src/theme/hooks/useTOCHighlight.ts +0 -98
@@ -9,7 +9,7 @@ var _react = _interopRequireDefault(require("react"));
9
9
 
10
10
  var _clsx = _interopRequireDefault(require("clsx"));
11
11
 
12
- var _useTOCHighlight = _interopRequireDefault(require("@theme/hooks/useTOCHighlight"));
12
+ var _TOCItems = _interopRequireDefault(require("@theme/TOCItems"));
13
13
 
14
14
  var _stylesModule = _interopRequireDefault(require("./styles.module.css"));
15
15
 
@@ -21,37 +21,17 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
21
21
  * This source code is licensed under the MIT license found in the
22
22
  * LICENSE file in the root directory of this source tree.
23
23
  */
24
- const LINK_CLASS_NAME = 'table-of-contents__link';
25
- const ACTIVE_LINK_CLASS_NAME = 'table-of-contents__link--active';
26
- const TOP_OFFSET = 100;
27
- /* eslint-disable jsx-a11y/control-has-associated-label */
28
-
29
- function Headings({
30
- toc,
31
- isChild
32
- }) {
33
- if (!toc.length) {
34
- return null;
35
- }
36
-
37
- return <ul className={isChild ? '' : 'table-of-contents table-of-contents__left-border'}>
38
- {toc.map(heading => <li key={heading.id}>
39
- <a href={`#${heading.id}`} className={LINK_CLASS_NAME} // Developer provided the HTML, so assume it's safe.
40
- // eslint-disable-next-line react/no-danger
41
- dangerouslySetInnerHTML={{
42
- __html: heading.value
43
- }} />
44
- <Headings isChild toc={heading.children} />
45
- </li>)}
46
- </ul>;
47
- }
24
+ // Using a custom className
25
+ // This prevents TOC highlighting to highlight TOCInline/TOCCollapsible by mistake
26
+ const LINK_CLASS_NAME = 'table-of-contents__link toc-highlight';
27
+ const LINK_ACTIVE_CLASS_NAME = 'table-of-contents__link--active';
48
28
 
49
29
  function TOC({
50
- toc
30
+ className,
31
+ ...props
51
32
  }) {
52
- (0, _useTOCHighlight.default)(LINK_CLASS_NAME, ACTIVE_LINK_CLASS_NAME, TOP_OFFSET);
53
- return <div className={(0, _clsx.default)(_stylesModule.default.tableOfContents, 'thin-scrollbar')}>
54
- <Headings toc={toc} />
33
+ return <div className={(0, _clsx.default)(_stylesModule.default.tableOfContents, 'thin-scrollbar', className)}>
34
+ <_TOCItems.default {...props} linkClassName={LINK_CLASS_NAME} linkActiveClassName={LINK_ACTIVE_CLASS_NAME} />
55
35
  </div>;
56
36
  }
57
37
 
@@ -12,7 +12,7 @@
12
12
  top: calc(var(--ifm-navbar-height) + 1rem);
13
13
  }
14
14
 
15
- @media only screen and (max-width: 996px) {
15
+ @media (max-width: 996px) {
16
16
  .tableOfContents {
17
17
  display: none;
18
18
  }
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = TOCCollapsible;
7
+
8
+ var _react = _interopRequireDefault(require("react"));
9
+
10
+ var _clsx = _interopRequireDefault(require("clsx"));
11
+
12
+ var _Translate = _interopRequireDefault(require("@docusaurus/Translate"));
13
+
14
+ var _themeCommon = require("@docusaurus/theme-common");
15
+
16
+ var _stylesModule = _interopRequireDefault(require("./styles.module.css"));
17
+
18
+ var _TOCItems = _interopRequireDefault(require("@theme/TOCItems"));
19
+
20
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
+
22
+ /**
23
+ * Copyright (c) Facebook, Inc. and its affiliates.
24
+ *
25
+ * This source code is licensed under the MIT license found in the
26
+ * LICENSE file in the root directory of this source tree.
27
+ */
28
+ function TOCCollapsible({
29
+ toc,
30
+ className,
31
+ minHeadingLevel,
32
+ maxHeadingLevel
33
+ }) {
34
+ const {
35
+ collapsed,
36
+ toggleCollapsed
37
+ } = (0, _themeCommon.useCollapsible)({
38
+ initialState: true
39
+ });
40
+ return <div className={(0, _clsx.default)(_stylesModule.default.tocCollapsible, {
41
+ [_stylesModule.default.tocCollapsibleExpanded]: !collapsed
42
+ }, className)}>
43
+ <button type="button" className={(0, _clsx.default)('clean-btn', _stylesModule.default.tocCollapsibleButton)} onClick={toggleCollapsed}>
44
+ <_Translate.default id="theme.TOCCollapsible.toggleButtonLabel" description="The label used by the button on the collapsible TOC component">
45
+ On this page
46
+ </_Translate.default>
47
+ </button>
48
+
49
+ <_themeCommon.Collapsible lazy className={_stylesModule.default.tocCollapsibleContent} collapsed={collapsed}>
50
+ <_TOCItems.default toc={toc} minHeadingLevel={minHeadingLevel} maxHeadingLevel={maxHeadingLevel} />
51
+ </_themeCommon.Collapsible>
52
+ </div>;
53
+ }
@@ -0,0 +1,50 @@
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
+ .tocCollapsible {
9
+ background-color: var(--ifm-menu-color-background-active);
10
+ border-radius: var(--ifm-global-radius);
11
+ margin: 1rem 0;
12
+ }
13
+
14
+ .tocCollapsibleButton {
15
+ font-size: inherit;
16
+ display: flex;
17
+ justify-content: space-between;
18
+ align-items: center;
19
+ padding: 0.4rem 0.8rem;
20
+ width: 100%;
21
+ }
22
+
23
+ .tocCollapsibleButton:after {
24
+ content: '';
25
+ background: var(--ifm-menu-link-sublist-icon) 50% 50% / 2rem 2rem no-repeat;
26
+ filter: var(--ifm-menu-link-sublist-icon-filter);
27
+ height: 1.25rem;
28
+ width: 1.25rem;
29
+ transform: rotate(180deg);
30
+ transition: transform var(--ifm-transition-fast);
31
+ }
32
+
33
+ .tocCollapsibleContent > ul {
34
+ border-left: none;
35
+ border-top: 1px solid var(--ifm-color-emphasis-300);
36
+ padding: 0.2rem 0;
37
+ font-size: 15px;
38
+ }
39
+
40
+ .tocCollapsibleContent ul li {
41
+ margin: 0.4rem 0.8rem;
42
+ }
43
+
44
+ .tocCollapsibleContent a {
45
+ display: block;
46
+ }
47
+
48
+ .tocCollapsibleExpanded .tocCollapsibleButton:after {
49
+ transform: none;
50
+ }
@@ -7,10 +7,10 @@ exports.default = void 0;
7
7
 
8
8
  var _react = _interopRequireDefault(require("react"));
9
9
 
10
- var _clsx = _interopRequireDefault(require("clsx"));
11
-
12
10
  var _stylesModule = _interopRequireDefault(require("./styles.module.css"));
13
11
 
12
+ var _TOCItems = _interopRequireDefault(require("@theme/TOCItems"));
13
+
14
14
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
15
 
16
16
  /**
@@ -19,33 +19,13 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
19
19
  * This source code is licensed under the MIT license found in the
20
20
  * LICENSE file in the root directory of this source tree.
21
21
  */
22
-
23
- /* eslint-disable jsx-a11y/control-has-associated-label */
24
- function HeadingsInline({
25
- toc,
26
- isChild
27
- }) {
28
- if (!toc.length) {
29
- return null;
30
- }
31
-
32
- return <ul className={isChild ? '' : 'table-of-contents'}>
33
- {toc.map(heading => <li key={heading.id}>
34
- <a href={`#${heading.id}`} // Developer provided the HTML, so assume it's safe.
35
- // eslint-disable-next-line react/no-danger
36
- dangerouslySetInnerHTML={{
37
- __html: heading.value
38
- }} />
39
- <HeadingsInline isChild toc={heading.children} />
40
- </li>)}
41
- </ul>;
42
- }
43
-
44
22
  function TOCInline({
45
- toc
23
+ toc,
24
+ minHeadingLevel,
25
+ maxHeadingLevel
46
26
  }) {
47
- return <div className={(0, _clsx.default)(_stylesModule.default.tableOfContentsInline)}>
48
- <HeadingsInline toc={toc} />
27
+ return <div className={_stylesModule.default.tableOfContentsInline}>
28
+ <_TOCItems.default toc={toc} minHeadingLevel={minHeadingLevel} maxHeadingLevel={maxHeadingLevel} className="table-of-contents" linkClassName={null} />
49
29
  </div>;
50
30
  }
51
31
 
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = TOCItems;
7
+
8
+ var _react = _interopRequireWildcard(require("react"));
9
+
10
+ var _themeCommon = require("@docusaurus/theme-common");
11
+
12
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
13
+
14
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
15
+
16
+ /**
17
+ * Copyright (c) Facebook, Inc. and its affiliates.
18
+ *
19
+ * This source code is licensed under the MIT license found in the
20
+ * LICENSE file in the root directory of this source tree.
21
+ */
22
+ // Recursive component rendering the toc tree
23
+
24
+ /* eslint-disable jsx-a11y/control-has-associated-label */
25
+ function TOCItemList({
26
+ toc,
27
+ className,
28
+ linkClassName,
29
+ isChild
30
+ }) {
31
+ if (!toc.length) {
32
+ return null;
33
+ }
34
+
35
+ return <ul className={isChild ? undefined : className}>
36
+ {toc.map(heading => <li key={heading.id}>
37
+ <a href={`#${heading.id}`} className={linkClassName !== null && linkClassName !== void 0 ? linkClassName : undefined} // Developer provided the HTML, so assume it's safe.
38
+ // eslint-disable-next-line react/no-danger
39
+ dangerouslySetInnerHTML={{
40
+ __html: heading.value
41
+ }} />
42
+ <TOCItemList isChild toc={heading.children} className={className} linkClassName={linkClassName} />
43
+ </li>)}
44
+ </ul>;
45
+ }
46
+
47
+ function TOCItems({
48
+ toc,
49
+ className = 'table-of-contents table-of-contents__left-border',
50
+ linkClassName = 'table-of-contents__link',
51
+ linkActiveClassName = undefined,
52
+ minHeadingLevel: minHeadingLevelOption,
53
+ maxHeadingLevel: maxHeadingLevelOption,
54
+ ...props
55
+ }) {
56
+ const themeConfig = (0, _themeCommon.useThemeConfig)();
57
+ const minHeadingLevel = minHeadingLevelOption !== null && minHeadingLevelOption !== void 0 ? minHeadingLevelOption : themeConfig.tableOfContents.minHeadingLevel;
58
+ const maxHeadingLevel = maxHeadingLevelOption !== null && maxHeadingLevelOption !== void 0 ? maxHeadingLevelOption : themeConfig.tableOfContents.maxHeadingLevel;
59
+ const tocFiltered = (0, _themeCommon.useTOCFilter)({
60
+ toc,
61
+ minHeadingLevel,
62
+ maxHeadingLevel
63
+ });
64
+ const tocHighlightConfig = (0, _react.useMemo)(() => {
65
+ if (linkClassName && linkActiveClassName) {
66
+ return {
67
+ linkClassName,
68
+ linkActiveClassName,
69
+ minHeadingLevel,
70
+ maxHeadingLevel
71
+ };
72
+ }
73
+
74
+ return undefined;
75
+ }, [linkClassName, linkActiveClassName, minHeadingLevel, maxHeadingLevel]);
76
+ (0, _themeCommon.useTOCHighlight)(tocHighlightConfig);
77
+ return <TOCItemList toc={tocFiltered} className={className} linkClassName={linkClassName} {...props} />;
78
+ }
@@ -0,0 +1,123 @@
1
+ "use strict";
2
+
3
+ var _react = _interopRequireDefault(require("react"));
4
+
5
+ var _reactTestRenderer = _interopRequireDefault(require("react-test-renderer"));
6
+
7
+ var _index = _interopRequireDefault(require("../index"));
8
+
9
+ var _TabItem = _interopRequireDefault(require("../../TabItem"));
10
+
11
+ var _UserPreferencesProvider = _interopRequireDefault(require("@theme/UserPreferencesProvider"));
12
+
13
+ var _themeCommon = require("@docusaurus/theme-common");
14
+
15
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
16
+
17
+ /**
18
+ * Copyright (c) Facebook, Inc. and its affiliates.
19
+ *
20
+ * This source code is licensed under the MIT license found in the
21
+ * LICENSE file in the root directory of this source tree.
22
+ */
23
+ describe('Tabs', () => {
24
+ test('Should reject bad Tabs child', () => {
25
+ expect(() => {
26
+ _reactTestRenderer.default.create(<_index.default>
27
+ <div>Naughty</div>
28
+ <_TabItem.default value="good">Good</_TabItem.default>
29
+ </_index.default>);
30
+ }).toThrowErrorMatchingInlineSnapshot(`"Docusaurus error: Bad <Tabs> child <div>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique \\"value\\" prop."`);
31
+ });
32
+ test('Should reject bad Tabs defaultValue', () => {
33
+ expect(() => {
34
+ _reactTestRenderer.default.create(<_index.default defaultValue="bad">
35
+ <_TabItem.default value="v1">Tab 1</_TabItem.default>
36
+ <_TabItem.default value="v2">Tab 2</_TabItem.default>
37
+ </_index.default>);
38
+ }).toThrowErrorMatchingInlineSnapshot(`"Docusaurus error: The <Tabs> has a defaultValue \\"bad\\" but none of its children has the corresponding value. Available values are: v1, v2. If you intend to show no default tab, use defaultValue={null} instead."`);
39
+ });
40
+ test('Should reject duplicate values', () => {
41
+ expect(() => {
42
+ _reactTestRenderer.default.create(<_index.default>
43
+ <_TabItem.default value="v1">Tab 1</_TabItem.default>
44
+ <_TabItem.default value="v2">Tab 2</_TabItem.default>
45
+ <_TabItem.default value="v3">Tab 3</_TabItem.default>
46
+ <_TabItem.default value="v4">Tab 4</_TabItem.default>
47
+ <_TabItem.default value="v1">Tab 5</_TabItem.default>
48
+ <_TabItem.default value="v2">Tab 6</_TabItem.default>
49
+ </_index.default>);
50
+ }).toThrowErrorMatchingInlineSnapshot(`"Docusaurus error: Duplicate values \\"v1, v2\\" found in <Tabs>. Every value needs to be unique."`);
51
+ });
52
+ test('Should accept valid Tabs config', () => {
53
+ expect(() => {
54
+ _reactTestRenderer.default.create(<_themeCommon.ScrollControllerProvider>
55
+ <_UserPreferencesProvider.default>
56
+ <_index.default>
57
+ <_TabItem.default value="v1">Tab 1</_TabItem.default>
58
+ <_TabItem.default value="v2">Tab 2</_TabItem.default>
59
+ </_index.default>
60
+ <_index.default>
61
+ <_TabItem.default value="v1">Tab 1</_TabItem.default>
62
+ <_TabItem.default value="v2" default>
63
+ Tab 2
64
+ </_TabItem.default>
65
+ </_index.default>
66
+ <_index.default defaultValue="v1">
67
+ <_TabItem.default value="v1" label="V1">
68
+ Tab 1
69
+ </_TabItem.default>
70
+ <_TabItem.default value="v2" label="V2">
71
+ Tab 2
72
+ </_TabItem.default>
73
+ </_index.default>
74
+ <_index.default defaultValue="v1" values={[{
75
+ value: 'v1',
76
+ label: 'V1'
77
+ }, {
78
+ value: 'v2',
79
+ label: 'V2'
80
+ }]}>
81
+ <_TabItem.default value="v1">Tab 1</_TabItem.default>
82
+ <_TabItem.default value="v2">Tab 2</_TabItem.default>
83
+ </_index.default>
84
+ <_index.default defaultValue={null} values={[{
85
+ value: 'v1',
86
+ label: 'V1'
87
+ }, {
88
+ value: 'v2',
89
+ label: 'V2'
90
+ }]}>
91
+ <_TabItem.default value="v1">Tab 1</_TabItem.default>
92
+ <_TabItem.default value="v2">Tab 2</_TabItem.default>
93
+ </_index.default>
94
+ <_index.default defaultValue={null}>
95
+ <_TabItem.default value="v1" label="V1">
96
+ Tab 1
97
+ </_TabItem.default>
98
+ <_TabItem.default value="v2" label="V2">
99
+ Tab 2
100
+ </_TabItem.default>
101
+ </_index.default>
102
+ </_UserPreferencesProvider.default>
103
+ </_themeCommon.ScrollControllerProvider>);
104
+ }).not.toThrow(); // TODO Better Jest infrastructure to mock the Layout
105
+ }); // https://github.com/facebook/docusaurus/issues/5729
106
+
107
+ test('Should accept dynamic Tabs with number values', () => {
108
+ expect(() => {
109
+ const tabs = ['Apple', 'Banana', 'Carrot'];
110
+
111
+ _reactTestRenderer.default.create(<_themeCommon.ScrollControllerProvider>
112
+ <_UserPreferencesProvider.default>
113
+ <_index.default values={tabs.map((t, idx) => ({
114
+ label: t,
115
+ value: idx
116
+ }))} defaultValue={0}>
117
+ {tabs.map((t, idx) => <_TabItem.default value={idx}>{t}</_TabItem.default>)}
118
+ </_index.default>
119
+ </_UserPreferencesProvider.default>
120
+ </_themeCommon.ScrollControllerProvider>);
121
+ }).not.toThrow();
122
+ });
123
+ });
@@ -3,12 +3,16 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.default = void 0;
6
+ exports.default = Tabs;
7
7
 
8
8
  var _react = _interopRequireWildcard(require("react"));
9
9
 
10
+ var _useIsBrowser = _interopRequireDefault(require("@docusaurus/useIsBrowser"));
11
+
10
12
  var _useUserPreferencesContext = _interopRequireDefault(require("@theme/hooks/useUserPreferencesContext"));
11
13
 
14
+ var _themeCommon = require("@docusaurus/theme-common");
15
+
12
16
  var _clsx = _interopRequireDefault(require("clsx"));
13
17
 
14
18
  var _stylesModule = _interopRequireDefault(require("./styles.module.css"));
@@ -25,43 +29,66 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
25
29
  * This source code is licensed under the MIT license found in the
26
30
  * LICENSE file in the root directory of this source tree.
27
31
  */
28
- function isInViewport(element) {
29
- const {
30
- top,
31
- left,
32
- bottom,
33
- right
34
- } = element.getBoundingClientRect();
35
- const {
36
- innerHeight,
37
- innerWidth
38
- } = window;
39
- return top >= 0 && right <= innerWidth && bottom <= innerHeight && left >= 0;
32
+ // A very rough duck type, but good enough to guard against mistakes while
33
+ // allowing customization
34
+ function isTabItem(comp) {
35
+ return typeof comp.props.value !== 'undefined';
40
36
  }
41
37
 
42
- const keys = {
43
- left: 37,
44
- right: 39
45
- };
38
+ function TabsComponent(props) {
39
+ var _ref, _children$find, _children$;
46
40
 
47
- function Tabs(props) {
48
41
  const {
49
42
  lazy,
50
43
  block,
51
- defaultValue,
52
- values,
44
+ defaultValue: defaultValueProp,
45
+ values: valuesProp,
53
46
  groupId,
54
47
  className
55
48
  } = props;
49
+
50
+ const children = _react.Children.map(props.children, child => {
51
+ if ((0, _react.isValidElement)(child) && isTabItem(child)) {
52
+ return child;
53
+ } // child.type.name will give non-sensical values in prod because of
54
+ // minification, but we assume it won't throw in prod.
55
+
56
+
57
+ throw new Error(`Docusaurus error: Bad <Tabs> child <${// @ts-expect-error: guarding against unexpected cases
58
+ typeof child.type === 'string' ? child.type : child.type.name}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`);
59
+ });
60
+
61
+ const values = valuesProp !== null && valuesProp !== void 0 ? valuesProp : children.map(({
62
+ props: {
63
+ value,
64
+ label
65
+ }
66
+ }) => ({
67
+ value,
68
+ label
69
+ }));
70
+ const dup = (0, _themeCommon.duplicates)(values, (a, b) => a.value === b.value);
71
+
72
+ if (dup.length > 0) {
73
+ throw new Error(`Docusaurus error: Duplicate values "${dup.map(a => a.value).join(', ')}" found in <Tabs>. Every value needs to be unique.`);
74
+ } // When defaultValueProp is null, don't show a default tab
75
+
76
+
77
+ const defaultValue = defaultValueProp === null ? defaultValueProp : (_ref = defaultValueProp !== null && defaultValueProp !== void 0 ? defaultValueProp : (_children$find = children.find(child => child.props.default)) === null || _children$find === void 0 ? void 0 : _children$find.props.value) !== null && _ref !== void 0 ? _ref : (_children$ = children[0]) === null || _children$ === void 0 ? void 0 : _children$.props.value;
78
+
79
+ if (defaultValue !== null && !values.some(a => a.value === defaultValue)) {
80
+ throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${defaultValue}" but none of its children has the corresponding value. Available values are: ${values.map(a => a.value).join(', ')}. If you intend to show no default tab, use defaultValue={null} instead.`);
81
+ }
82
+
56
83
  const {
57
84
  tabGroupChoices,
58
85
  setTabGroupChoices
59
86
  } = (0, _useUserPreferencesContext.default)();
60
87
  const [selectedValue, setSelectedValue] = (0, _react.useState)(defaultValue);
61
-
62
- const children = _react.Children.toArray(props.children);
63
-
64
88
  const tabRefs = [];
89
+ const {
90
+ blockElementScrollPositionUntilNextRender
91
+ } = (0, _themeCommon.useScrollPositionBlocker)();
65
92
 
66
93
  if (groupId != null) {
67
94
  const relevantTabGroupChoice = tabGroupChoices[groupId];
@@ -72,44 +99,36 @@ function Tabs(props) {
72
99
  }
73
100
 
74
101
  const handleTabChange = event => {
75
- const selectedTab = event.currentTarget;
76
- const selectedTabIndex = tabRefs.indexOf(selectedTab);
77
- const selectedTabValue = values[selectedTabIndex].value;
78
- setSelectedValue(selectedTabValue);
79
-
80
- if (groupId != null) {
81
- setTabGroupChoices(groupId, selectedTabValue);
82
- setTimeout(() => {
83
- if (isInViewport(selectedTab)) {
84
- return;
85
- }
102
+ const newTab = event.currentTarget;
103
+ const newTabIndex = tabRefs.indexOf(newTab);
104
+ const newTabValue = values[newTabIndex].value;
86
105
 
87
- selectedTab.scrollIntoView({
88
- block: 'center',
89
- behavior: 'smooth'
90
- });
91
- selectedTab.classList.add(_stylesModule.default.tabItemActive);
92
- setTimeout(() => selectedTab.classList.remove(_stylesModule.default.tabItemActive), 2000);
93
- }, 150);
106
+ if (newTabValue !== selectedValue) {
107
+ blockElementScrollPositionUntilNextRender(newTab);
108
+ setSelectedValue(newTabValue);
109
+
110
+ if (groupId != null) {
111
+ setTabGroupChoices(groupId, newTabValue);
112
+ }
94
113
  }
95
114
  };
96
115
 
97
116
  const handleKeydown = event => {
98
117
  var _focusElement;
99
118
 
100
- let focusElement;
119
+ let focusElement = null;
101
120
 
102
- switch (event.keyCode) {
103
- case keys.right:
121
+ switch (event.key) {
122
+ case 'ArrowRight':
104
123
  {
105
- const nextTab = tabRefs.indexOf(event.target) + 1;
124
+ const nextTab = tabRefs.indexOf(event.currentTarget) + 1;
106
125
  focusElement = tabRefs[nextTab] || tabRefs[0];
107
126
  break;
108
127
  }
109
128
 
110
- case keys.left:
129
+ case 'ArrowLeft':
111
130
  {
112
- const prevTab = tabRefs.indexOf(event.target) - 1;
131
+ const prevTab = tabRefs.indexOf(event.currentTarget) - 1;
113
132
  focusElement = tabRefs[prevTab] || tabRefs[tabRefs.length - 1];
114
133
  break;
115
134
  }
@@ -131,7 +150,7 @@ function Tabs(props) {
131
150
  }) => <li role="tab" tabIndex={selectedValue === value ? 0 : -1} aria-selected={selectedValue === value} className={(0, _clsx.default)('tabs__item', _stylesModule.default.tabItem, {
132
151
  'tabs__item--active': selectedValue === value
133
152
  })} key={value} ref={tabControl => tabRefs.push(tabControl)} onKeyDown={handleKeydown} onFocus={handleTabChange} onClick={handleTabChange}>
134
- {label}
153
+ {label !== null && label !== void 0 ? label : value}
135
154
  </li>)}
136
155
  </ul>
137
156
 
@@ -146,5 +165,9 @@ function Tabs(props) {
146
165
  </div>;
147
166
  }
148
167
 
149
- var _default = Tabs;
150
- exports.default = _default;
168
+ function Tabs(props) {
169
+ const isBrowser = (0, _useIsBrowser.default)();
170
+ return <TabsComponent // Remount tabs after hydration
171
+ // Temporary fix for https://github.com/facebook/docusaurus/issues/5653
172
+ key={String(isBrowser)} {...props} />;
173
+ }
@@ -8,16 +8,3 @@
8
8
  .tabItem {
9
9
  margin-top: 0 !important;
10
10
  }
11
-
12
- .tabItemActive {
13
- animation: blink 0.5s ease-in-out 5;
14
- }
15
-
16
- @keyframes blink {
17
- 0% {
18
- background-color: var(--ifm-hover-overlay);
19
- }
20
- 100% {
21
- background-color: rgba(0, 0, 0, 0);
22
- }
23
- }
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _react = _interopRequireDefault(require("react"));
9
+
10
+ var _clsx = _interopRequireDefault(require("clsx"));
11
+
12
+ var _Link = _interopRequireDefault(require("@docusaurus/Link"));
13
+
14
+ var _stylesModule = _interopRequireDefault(require("./styles.module.css"));
15
+
16
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
+
18
+ /**
19
+ * Copyright (c) Facebook, Inc. and its affiliates.
20
+ *
21
+ * This source code is licensed under the MIT license found in the
22
+ * LICENSE file in the root directory of this source tree.
23
+ */
24
+ function Tag(props) {
25
+ const {
26
+ permalink,
27
+ name,
28
+ count
29
+ } = props;
30
+ return <_Link.default href={permalink} className={(0, _clsx.default)(_stylesModule.default.tag, {
31
+ [_stylesModule.default.tagRegular]: !count,
32
+ [_stylesModule.default.tagWithCount]: count
33
+ })}>
34
+ {name}
35
+ {count && <span>{count}</span>}
36
+ </_Link.default>;
37
+ }
38
+
39
+ var _default = Tag;
40
+ exports.default = _default;