@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
@@ -0,0 +1,70 @@
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
+ :root {
9
+ --docusaurus-tag-list-border: var(--ifm-color-emphasis-300);
10
+ }
11
+
12
+ .tag {
13
+ border: 1px solid var(--docusaurus-tag-list-border);
14
+ transition: border var(--ifm-transition-fast);
15
+ }
16
+
17
+ .tag:hover {
18
+ --docusaurus-tag-list-border: var(--ifm-link-color);
19
+ text-decoration: none;
20
+ }
21
+
22
+ .tagRegular {
23
+ border-radius: 0.5rem;
24
+ padding: 0.3rem 0.5rem;
25
+ font-size: 90%;
26
+ }
27
+
28
+ .tagWithCount {
29
+ display: flex;
30
+ align-items: center;
31
+ position: relative;
32
+ padding: 0 0.5rem 0 1rem;
33
+ border-left: 0;
34
+ }
35
+
36
+ .tagWithCount:before,
37
+ .tagWithCount:after {
38
+ content: '';
39
+ position: absolute;
40
+ top: 50%;
41
+ border: 1px solid var(--docusaurus-tag-list-border);
42
+ transition: inherit;
43
+ }
44
+
45
+ .tagWithCount:before {
46
+ right: 100%;
47
+ transform: translate(50%, -50%) rotate(-45deg);
48
+ width: 1.18rem;
49
+ height: 1.18rem;
50
+ border-right: 0;
51
+ border-bottom: 0;
52
+ }
53
+
54
+ .tagWithCount:after {
55
+ left: 0;
56
+ transform: translateY(-50%);
57
+ width: 0.5rem;
58
+ height: 0.5rem;
59
+ border-radius: 50%;
60
+ }
61
+
62
+ .tagWithCount span {
63
+ background: var(--ifm-color-secondary);
64
+ color: var(--ifm-color-black);
65
+ font-size: 0.7rem;
66
+ line-height: 1.2;
67
+ border-radius: var(--ifm-global-radius);
68
+ padding: 0.1rem 0.4rem;
69
+ margin-left: 0.3rem;
70
+ }
@@ -0,0 +1,48 @@
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 _Tag = _interopRequireDefault(require("@theme/Tag"));
11
+
12
+ var _themeCommon = require("@docusaurus/theme-common");
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 TagLetterEntryItem({
25
+ letterEntry
26
+ }) {
27
+ return <article>
28
+ <h2>{letterEntry.letter}</h2>
29
+ <ul className="padding--none">
30
+ {letterEntry.tags.map(tag => <li key={tag.permalink} className={_stylesModule.default.tag}>
31
+ <_Tag.default {...tag} />
32
+ </li>)}
33
+ </ul>
34
+ <hr />
35
+ </article>;
36
+ }
37
+
38
+ function TagsListByLetter({
39
+ tags
40
+ }) {
41
+ const letterList = (0, _themeCommon.listTagsByLetters)(tags);
42
+ return <section className="margin-vert--lg">
43
+ {letterList.map(letterEntry => <TagLetterEntryItem key={letterEntry.letter} letterEntry={letterEntry} />)}
44
+ </section>;
45
+ }
46
+
47
+ var _default = TagsListByLetter;
48
+ exports.default = _default;
@@ -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
+ .tag {
9
+ display: inline-block;
10
+ margin: 0.5rem 0.5rem 0 1rem;
11
+ }
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = TagsListInline;
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 _Tag = _interopRequireDefault(require("@theme/Tag"));
15
+
16
+ var _stylesModule = _interopRequireDefault(require("./styles.module.css"));
17
+
18
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
+
20
+ /**
21
+ * Copyright (c) Facebook, Inc. and its affiliates.
22
+ *
23
+ * This source code is licensed under the MIT license found in the
24
+ * LICENSE file in the root directory of this source tree.
25
+ */
26
+ function TagsListInline({
27
+ tags
28
+ }) {
29
+ return <>
30
+ <b>
31
+ <_Translate.default id="theme.tags.tagsListLabel" description="The label alongside a tag list">
32
+ Tags:
33
+ </_Translate.default>
34
+ </b>
35
+ <ul className={(0, _clsx.default)(_stylesModule.default.tags, 'padding--none', 'margin-left--sm')}>
36
+ {tags.map(({
37
+ label,
38
+ permalink: tagPermalink
39
+ }) => <li key={tagPermalink} className={_stylesModule.default.tag}>
40
+ <_Tag.default name={label} permalink={tagPermalink} />
41
+ </li>)}
42
+ </ul>
43
+ </>;
44
+ }
@@ -0,0 +1,15 @@
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
+ .tags {
9
+ display: inline;
10
+ }
11
+
12
+ .tag {
13
+ margin: 0 0.4rem 0.5rem 0;
14
+ display: inline-block;
15
+ }
@@ -9,7 +9,7 @@ var _react = _interopRequireDefault(require("react"));
9
9
 
10
10
  var _clsx = _interopRequireDefault(require("clsx"));
11
11
 
12
- var _useDocusaurusContext = _interopRequireDefault(require("@docusaurus/useDocusaurusContext"));
12
+ var _useIsBrowser = _interopRequireDefault(require("@docusaurus/useIsBrowser"));
13
13
 
14
14
  var _useThemeContext = _interopRequireDefault(require("@theme/hooks/useThemeContext"));
15
15
 
@@ -24,9 +24,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
24
24
  * LICENSE file in the root directory of this source tree.
25
25
  */
26
26
  const ThemedImage = props => {
27
- const {
28
- isClient
29
- } = (0, _useDocusaurusContext.default)();
27
+ const isBrowser = (0, _useIsBrowser.default)();
30
28
  const {
31
29
  isDarkTheme
32
30
  } = (0, _useThemeContext.default)();
@@ -36,7 +34,8 @@ const ThemedImage = props => {
36
34
  alt = '',
37
35
  ...propsRest
38
36
  } = props;
39
- const renderedSourceNames = isClient ? isDarkTheme ? ['dark'] : ['light'] : // We need to render both images on the server to avoid flash
37
+ const clientThemes = isDarkTheme ? ['dark'] : ['light'];
38
+ const renderedSourceNames = isBrowser ? clientThemes : // We need to render both images on the server to avoid flash
40
39
  // See https://github.com/facebook/docusaurus/pull/3730
41
40
  ['light', 'dark'];
42
41
  return <>
@@ -9,12 +9,10 @@ var _react = _interopRequireWildcard(require("react"));
9
9
 
10
10
  var _themeCommon = require("@docusaurus/theme-common");
11
11
 
12
- var _useDocusaurusContext = _interopRequireDefault(require("@docusaurus/useDocusaurusContext"));
12
+ var _useIsBrowser = _interopRequireDefault(require("@docusaurus/useIsBrowser"));
13
13
 
14
14
  var _clsx = _interopRequireDefault(require("clsx"));
15
15
 
16
- require("./styles.css");
17
-
18
16
  var _stylesModule = _interopRequireDefault(require("./styles.module.css"));
19
17
 
20
18
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -32,14 +30,14 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
32
30
  const Dark = ({
33
31
  icon,
34
32
  style
35
- }) => <span className={(0, _clsx.default)(_stylesModule.default.toggle, _stylesModule.default.dark)} style={style}>
33
+ }) => <span className={(0, _clsx.default)(_stylesModule.default.toggleIcon, _stylesModule.default.dark)} style={style}>
36
34
  {icon}
37
35
  </span>;
38
36
 
39
37
  const Light = ({
40
38
  icon,
41
39
  style
42
- }) => <span className={(0, _clsx.default)(_stylesModule.default.toggle, _stylesModule.default.light)} style={style}>
40
+ }) => <span className={(0, _clsx.default)(_stylesModule.default.toggleIcon, _stylesModule.default.light)} style={style}>
43
41
  {icon}
44
42
  </span>; // Based on react-toggle (https://github.com/aaronshaf/react-toggle/).
45
43
 
@@ -54,22 +52,31 @@ const Toggle = (0, _react.memo)(({
54
52
  const [checked, setChecked] = (0, _react.useState)(defaultChecked);
55
53
  const [focused, setFocused] = (0, _react.useState)(false);
56
54
  const inputRef = (0, _react.useRef)(null);
57
- return <div className={(0, _clsx.default)('react-toggle', className, {
58
- 'react-toggle--checked': checked,
59
- 'react-toggle--focus': focused,
60
- 'react-toggle--disabled': disabled
55
+ return <div className={(0, _clsx.default)(_stylesModule.default.toggle, className, {
56
+ [_stylesModule.default.toggleChecked]: checked,
57
+ [_stylesModule.default.toggleFocused]: focused,
58
+ [_stylesModule.default.toggleDisabled]: disabled
61
59
  })}>
62
- <div className="react-toggle-track" role="button" tabIndex={-1} onClick={() => {
60
+ {
61
+ /* eslint-disable-next-line jsx-a11y/click-events-have-key-events */
62
+ }
63
+ <div className={_stylesModule.default.toggleTrack} role="button" tabIndex={-1} onClick={() => {
63
64
  var _inputRef$current;
64
65
 
65
66
  return (_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 ? void 0 : _inputRef$current.click();
66
67
  }}>
67
- <div className="react-toggle-track-check">{icons.checked}</div>
68
- <div className="react-toggle-track-x">{icons.unchecked}</div>
69
- <div className="react-toggle-thumb" />
68
+ <div className={_stylesModule.default.toggleTrackCheck}>{icons.checked}</div>
69
+ <div className={_stylesModule.default.toggleTrackX}>{icons.unchecked}</div>
70
+ <div className={_stylesModule.default.toggleTrackThumb} />
70
71
  </div>
71
72
 
72
- <input ref={inputRef} checked={checked} type="checkbox" className="react-toggle-screenreader-only" aria-label="Switch between dark and light mode" onChange={onChange} onClick={() => setChecked(!checked)} onFocus={() => setFocused(true)} onBlur={() => setFocused(false)} />
73
+ <input ref={inputRef} checked={checked} type="checkbox" className={_stylesModule.default.toggleScreenReader} aria-label="Switch between dark and light mode" onChange={onChange} onClick={() => setChecked(!checked)} onFocus={() => setFocused(true)} onBlur={() => setFocused(false)} onKeyDown={e => {
74
+ if (e.key === 'Enter') {
75
+ var _inputRef$current2;
76
+
77
+ (_inputRef$current2 = inputRef.current) === null || _inputRef$current2 === void 0 ? void 0 : _inputRef$current2.click();
78
+ }
79
+ }} />
73
80
  </div>;
74
81
  });
75
82
 
@@ -84,10 +91,8 @@ function _default(props) {
84
91
  }
85
92
  }
86
93
  } = (0, _themeCommon.useThemeConfig)();
87
- const {
88
- isClient
89
- } = (0, _useDocusaurusContext.default)();
90
- return <Toggle disabled={!isClient} icons={{
94
+ const isBrowser = (0, _useIsBrowser.default)();
95
+ return <Toggle disabled={!isBrowser} icons={{
91
96
  checked: <Dark icon={darkIcon} style={darkIconStyle} />,
92
97
  unchecked: <Light icon={lightIcon} style={lightIconStyle} />
93
98
  }} {...props} />;
@@ -6,6 +6,97 @@
6
6
  */
7
7
 
8
8
  .toggle {
9
+ touch-action: pan-x;
10
+ position: relative;
11
+ cursor: pointer;
12
+ user-select: none;
13
+ -webkit-tap-highlight-color: transparent;
14
+ }
15
+
16
+ .toggleScreenReader {
17
+ border: 0;
18
+ clip: rect(0 0 0 0);
19
+ height: 1px;
20
+ margin: -1px;
21
+ overflow: hidden;
22
+ position: absolute;
23
+ width: 1px;
24
+ }
25
+
26
+ .toggleDisabled {
27
+ cursor: not-allowed;
28
+ }
29
+
30
+ .toggleTrack {
31
+ width: 50px;
32
+ height: 24px;
33
+ border-radius: 30px;
34
+ background-color: #4d4d4d;
35
+ transition: all 0.2s ease;
36
+ }
37
+
38
+ .toggleTrackCheck {
39
+ position: absolute;
40
+ width: 14px;
41
+ height: 10px;
42
+ top: 0px;
43
+ bottom: 0px;
44
+ margin: auto 0;
45
+ left: 8px;
46
+ opacity: 0;
47
+ transition: opacity 0.25s ease;
48
+ }
49
+
50
+ [data-theme='dark'] .toggle .toggleTrackCheck,
51
+ .toggleChecked .toggleTrackCheck {
52
+ opacity: 1;
53
+ transition: opacity 0.25s ease;
54
+ }
55
+
56
+ .toggleTrackX {
57
+ position: absolute;
58
+ width: 10px;
59
+ height: 10px;
60
+ top: 0px;
61
+ bottom: 0px;
62
+ margin: auto 0;
63
+ right: 10px;
64
+ opacity: 1;
65
+ transition: opacity 0.25s ease;
66
+ }
67
+
68
+ [data-theme='dark'] .toggle .toggleTrackX,
69
+ .toggleChecked .toggleTrackX {
70
+ opacity: 0;
71
+ }
72
+
73
+ .toggleTrackThumb {
74
+ position: absolute;
75
+ top: 1px;
76
+ left: 1px;
77
+ width: 22px;
78
+ height: 22px;
79
+ border: 1px solid #4d4d4d;
80
+ border-radius: 50%;
81
+ background-color: #fafafa;
82
+ transition: all 0.25s ease;
83
+ }
84
+
85
+ [data-theme='dark'] .toggle .toggleTrackThumb,
86
+ .toggleChecked .toggleTrackThumb {
87
+ left: 27px;
88
+ }
89
+
90
+ .toggleFocused .toggleTrackThumb,
91
+ .toggle:hover .toggleTrackThumb {
92
+ box-shadow: 0px 0px 2px 3px var(--ifm-color-primary);
93
+ }
94
+
95
+ .toggle:active:not(.toggleDisabled) .toggleTrackThumb {
96
+ box-shadow: 0px 0px 5px 5px var(--ifm-color-primary);
97
+ }
98
+
99
+ .toggleIcon {
9
100
  align-items: center;
10
101
  display: flex;
11
102
  height: 10px;
@@ -9,8 +9,6 @@ var _react = _interopRequireDefault(require("react"));
9
9
 
10
10
  var _useTabGroupChoice = _interopRequireDefault(require("@theme/hooks/useTabGroupChoice"));
11
11
 
12
- var _useAnnouncementBar = _interopRequireDefault(require("@theme/hooks/useAnnouncementBar"));
13
-
14
12
  var _UserPreferencesContext = _interopRequireDefault(require("@theme/UserPreferencesContext"));
15
13
 
16
14
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -26,15 +24,9 @@ function UserPreferencesProvider(props) {
26
24
  tabGroupChoices,
27
25
  setTabGroupChoices
28
26
  } = (0, _useTabGroupChoice.default)();
29
- const {
30
- isAnnouncementBarClosed,
31
- closeAnnouncementBar
32
- } = (0, _useAnnouncementBar.default)();
33
27
  return <_UserPreferencesContext.default.Provider value={{
34
28
  tabGroupChoices,
35
- setTabGroupChoices,
36
- isAnnouncementBarClosed,
37
- closeAnnouncementBar
29
+ setTabGroupChoices
38
30
  }}>
39
31
  {props.children}
40
32
  </_UserPreferencesContext.default.Provider>;
@@ -7,14 +7,8 @@ exports.default = void 0;
7
7
 
8
8
  var _react = require("react");
9
9
 
10
- var _router = require("@docusaurus/router");
11
-
12
- var _useScrollPosition = _interopRequireDefault(require("@theme/hooks/useScrollPosition"));
13
-
14
10
  var _themeCommon = require("@docusaurus/theme-common");
15
11
 
16
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
-
18
12
  /**
19
13
  * Copyright (c) Facebook, Inc. and its affiliates.
20
14
  *
@@ -22,40 +16,33 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
22
16
  * LICENSE file in the root directory of this source tree.
23
17
  */
24
18
  const useHideableNavbar = hideOnScroll => {
25
- const location = (0, _router.useLocation)();
26
19
  const [isNavbarVisible, setIsNavbarVisible] = (0, _react.useState)(hideOnScroll);
27
20
  const isFocusedAnchor = (0, _react.useRef)(false);
28
- const [navbarHeight, setNavbarHeight] = (0, _react.useState)(0);
21
+ const navbarHeight = (0, _react.useRef)(0);
29
22
  const navbarRef = (0, _react.useCallback)(node => {
30
23
  if (node !== null) {
31
- setNavbarHeight(node.getBoundingClientRect().height);
24
+ navbarHeight.current = node.getBoundingClientRect().height;
32
25
  }
33
26
  }, []);
34
- (0, _useScrollPosition.default)(({
35
- scrollY: scrollTop
36
- }, {
37
- scrollY: lastScrollTop
38
- }) => {
27
+ (0, _themeCommon.useScrollPosition)((currentPosition, lastPosition) => {
39
28
  if (!hideOnScroll) {
40
29
  return;
41
30
  }
42
31
 
43
- if (scrollTop < navbarHeight) {
32
+ const scrollTop = currentPosition.scrollY; // It needed for mostly to handle rubber band scrolling
33
+
34
+ if (scrollTop < navbarHeight.current) {
44
35
  setIsNavbarVisible(true);
45
36
  return;
46
37
  }
47
38
 
48
39
  if (isFocusedAnchor.current) {
49
40
  isFocusedAnchor.current = false;
50
- setIsNavbarVisible(false);
51
41
  return;
52
42
  }
53
43
 
54
- if (lastScrollTop && scrollTop === 0) {
55
- setIsNavbarVisible(true);
56
- }
57
-
58
- const documentHeight = document.documentElement.scrollHeight - navbarHeight;
44
+ const lastScrollTop = lastPosition === null || lastPosition === void 0 ? void 0 : lastPosition.scrollY;
45
+ const documentHeight = document.documentElement.scrollHeight - navbarHeight.current;
59
46
  const windowHeight = window.innerHeight;
60
47
 
61
48
  if (lastScrollTop && scrollTop >= lastScrollTop) {
@@ -63,25 +50,20 @@ const useHideableNavbar = hideOnScroll => {
63
50
  } else if (scrollTop + windowHeight < documentHeight) {
64
51
  setIsNavbarVisible(true);
65
52
  }
66
- }, [navbarHeight, isFocusedAnchor]);
67
- (0, _themeCommon.useLocationChange)(locationChangeEvent => {
68
- if (!hideOnScroll || locationChangeEvent.location.hash) {
69
- return;
70
- }
71
-
72
- setIsNavbarVisible(true);
73
53
  });
74
- (0, _react.useEffect)(() => {
54
+ (0, _themeCommon.useLocationChange)(locationChangeEvent => {
75
55
  if (!hideOnScroll) {
76
56
  return;
77
57
  }
78
58
 
79
- if (!location.hash) {
59
+ if (locationChangeEvent.location.hash) {
60
+ isFocusedAnchor.current = true;
61
+ setIsNavbarVisible(false);
80
62
  return;
81
63
  }
82
64
 
83
- isFocusedAnchor.current = true;
84
- }, [location.hash]);
65
+ setIsNavbarVisible(true);
66
+ });
85
67
  return {
86
68
  navbarRef,
87
69
  isNavbarVisible
@@ -25,14 +25,12 @@ const useTabGroupChoice = () => {
25
25
  (0, _react.useEffect)(() => {
26
26
  try {
27
27
  const localStorageChoices = {};
28
-
29
- for (const storageKey of (0, _themeCommon.listStorageKeys)()) {
28
+ (0, _themeCommon.listStorageKeys)().forEach(storageKey => {
30
29
  if (storageKey.startsWith(TAB_CHOICE_PREFIX)) {
31
30
  const groupId = storageKey.substring(TAB_CHOICE_PREFIX.length);
32
31
  localStorageChoices[groupId] = (0, _themeCommon.createStorageSlot)(storageKey).get();
33
32
  }
34
- }
35
-
33
+ });
36
34
  setChoices(localStorageChoices);
37
35
  } catch (err) {
38
36
  console.error(err);
@@ -76,7 +76,7 @@ const useTheme = () => {
76
76
  } catch (err) {
77
77
  console.error(err);
78
78
  }
79
- }, [setTheme]);
79
+ }, [disableSwitch, setTheme]);
80
80
  (0, _react.useEffect)(() => {
81
81
  if (disableSwitch && !respectPrefersColorScheme) {
82
82
  return;
@@ -87,7 +87,7 @@ const useTheme = () => {
87
87
  }) => {
88
88
  setTheme(matches ? themes.dark : themes.light);
89
89
  });
90
- }, []);
90
+ }, [disableSwitch, respectPrefersColorScheme]);
91
91
  return {
92
92
  isDarkTheme: theme === themes.dark,
93
93
  setLightTheme,
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.default = exports.windowSizes = void 0;
6
+ exports.default = void 0;
7
7
 
8
8
  var _react = require("react");
9
9
 
@@ -17,36 +17,49 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
17
17
  * This source code is licensed under the MIT license found in the
18
18
  * LICENSE file in the root directory of this source tree.
19
19
  */
20
- const desktopThresholdWidth = 996;
21
20
  const windowSizes = {
22
21
  desktop: 'desktop',
23
- mobile: 'mobile'
22
+ mobile: 'mobile',
23
+ // This "ssr" value is very important to handle hydration FOUC / layout shifts
24
+ // You have to handle server-rendering explicitly on the call-site
25
+ // On the server, you may need to render BOTH the mobile/desktop elements (and hide one of them with mediaquery)
26
+ // We don't return "undefined" on purpose, to make it more explicit
27
+ ssr: 'ssr'
24
28
  };
25
- exports.windowSizes = windowSizes;
29
+ const DesktopThresholdWidth = 996;
26
30
 
27
- function useWindowSize() {
28
- const isClient = _ExecutionEnvironment.default.canUseDOM;
31
+ function getWindowSize() {
32
+ if (!_ExecutionEnvironment.default.canUseDOM) {
33
+ return windowSizes.ssr;
34
+ }
29
35
 
30
- function getSize() {
31
- if (!isClient) {
32
- return undefined;
33
- }
36
+ return window.innerWidth > DesktopThresholdWidth ? windowSizes.desktop : windowSizes.mobile;
37
+ } // Simulate the SSR window size in dev, so that potential hydration FOUC/layout shift problems can be seen in dev too!
34
38
 
35
- return window.innerWidth > desktopThresholdWidth ? windowSizes.desktop : windowSizes.mobile;
36
- }
37
39
 
38
- const [windowSize, setWindowSize] = (0, _react.useState)(getSize);
39
- (0, _react.useEffect)(() => {
40
- if (!isClient) {
41
- return undefined;
40
+ const DevSimulateSSR = process.env.NODE_ENV === 'development' && true; // This hook returns an enum value on purpose!
41
+ // We don't want it to return the actual width value, for resize perf reasons
42
+ // We only want to re-render once a breakpoint is crossed
43
+
44
+ function useWindowSize() {
45
+ const [windowSize, setWindowSize] = (0, _react.useState)(() => {
46
+ if (DevSimulateSSR) {
47
+ return 'ssr';
42
48
  }
43
49
 
44
- function handleResize() {
45
- setWindowSize(getSize());
50
+ return getWindowSize();
51
+ });
52
+ (0, _react.useEffect)(() => {
53
+ function updateWindowSize() {
54
+ setWindowSize(getWindowSize());
46
55
  }
47
56
 
48
- window.addEventListener('resize', handleResize);
49
- return () => window.removeEventListener('resize', handleResize);
57
+ const timeout = DevSimulateSSR ? window.setTimeout(updateWindowSize, 1000) : undefined;
58
+ window.addEventListener('resize', updateWindowSize);
59
+ return () => {
60
+ window.removeEventListener('resize', updateWindowSize);
61
+ clearTimeout(timeout);
62
+ };
50
63
  }, []);
51
64
  return windowSize;
52
65
  }
@@ -21,11 +21,12 @@ const prismIncludeLanguages = PrismObject => {
21
21
  if (_ExecutionEnvironment.default.canUseDOM) {
22
22
  const {
23
23
  themeConfig: {
24
- prism: {
25
- additionalLanguages = []
26
- } = {}
24
+ prism = {}
27
25
  }
28
26
  } = _docusaurus.default;
27
+ const {
28
+ additionalLanguages = []
29
+ } = prism;
29
30
  window.Prism = PrismObject;
30
31
  additionalLanguages.forEach(lang => {
31
32
  require(`prismjs/components/prism-${lang}`); // eslint-disable-line