@docusaurus/theme-classic 2.0.0-beta.12faed89d → 2.0.0-beta.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (349) hide show
  1. package/README.md +1 -1
  2. package/lib/admonitions.css +35 -0
  3. package/lib/deps.d.ts +13 -0
  4. package/lib/index.js +16 -15
  5. package/lib/prism-include-languages.js +9 -5
  6. package/{lib-next/types.d.ts → lib/theme-classic.d.ts} +338 -156
  7. package/lib/translations.js +16 -7
  8. package/lib/types.d.ts +0 -629
  9. package/lib/validateThemeConfig.js +232 -248
  10. package/lib-next/theme/Admonition/index.js +101 -0
  11. package/lib-next/theme/AnnouncementBar/index.js +7 -12
  12. package/lib-next/theme/AnnouncementBar/styles.module.css +23 -32
  13. package/lib-next/theme/BackToTopButton/index.js +131 -0
  14. package/lib-next/theme/BackToTopButton/styles.module.css +42 -0
  15. package/lib-next/theme/BlogArchivePage/index.js +80 -0
  16. package/lib-next/theme/BlogLayout/index.js +40 -0
  17. package/lib-next/theme/BlogListPage/index.js +17 -25
  18. package/lib-next/theme/BlogPostAuthor/index.js +46 -0
  19. package/{lib/theme/MDXPage → lib-next/theme/BlogPostAuthor}/styles.module.css +4 -2
  20. package/lib-next/theme/BlogPostAuthors/index.js +34 -0
  21. package/{lib/theme/IconExternalLink → lib-next/theme/BlogPostAuthors}/styles.module.css +3 -4
  22. package/lib-next/theme/BlogPostItem/index.js +79 -86
  23. package/lib-next/theme/BlogPostPage/index.js +70 -35
  24. package/lib-next/theme/BlogSidebar/index.js +11 -13
  25. package/lib-next/theme/BlogSidebar/styles.module.css +2 -2
  26. package/lib-next/theme/BlogTagsListPage/index.js +14 -55
  27. package/lib-next/theme/BlogTagsPostsPage/index.js +29 -39
  28. package/lib-next/theme/CodeBlock/index.js +23 -149
  29. package/lib-next/theme/CodeBlock/styles.module.css +12 -9
  30. package/lib-next/theme/Details/index.js +20 -0
  31. package/lib-next/theme/Details/styles.module.css +13 -0
  32. package/lib-next/theme/DocCard/index.js +80 -0
  33. package/lib-next/theme/DocCard/styles.module.css +43 -0
  34. package/lib-next/theme/DocCardList/index.js +19 -0
  35. package/lib-next/theme/DocCategoryGeneratedIndexPage/index.js +49 -0
  36. package/lib-next/theme/DocCategoryGeneratedIndexPage/styles.module.css +18 -0
  37. package/lib-next/theme/DocItem/index.js +30 -59
  38. package/lib-next/theme/DocItem/styles.module.css +2 -11
  39. package/lib-next/theme/DocItemFooter/index.js +79 -0
  40. package/{lib/theme/DocSidebarItem → lib-next/theme/DocItemFooter}/styles.module.css +8 -5
  41. package/lib-next/theme/DocPage/index.js +46 -23
  42. package/lib-next/theme/DocPaginator/index.js +5 -33
  43. package/lib-next/theme/DocPaginatorNavLink/index.js +36 -0
  44. package/lib-next/theme/DocSidebar/index.js +37 -43
  45. package/lib-next/theme/DocSidebarItem/index.js +115 -65
  46. package/lib-next/theme/DocSidebarItem/styles.module.css +4 -0
  47. package/lib-next/theme/DocTagDocListPage/index.js +89 -0
  48. package/lib-next/theme/DocTagsListPage/index.js +38 -0
  49. package/lib-next/theme/DocVersionBadge/index.js +27 -0
  50. package/lib-next/theme/DocVersionBanner/index.js +28 -14
  51. package/lib-next/theme/EditThisPage/index.js +6 -1
  52. package/lib-next/theme/ErrorPageContent.js +35 -0
  53. package/lib-next/theme/Footer/index.js +90 -39
  54. package/lib-next/theme/Heading/index.js +24 -29
  55. package/lib-next/theme/Heading/styles.css +5 -6
  56. package/lib-next/theme/Heading/styles.module.css +9 -5
  57. package/lib-next/theme/IconArrow/index.js +2 -2
  58. package/lib-next/theme/IconClose/index.js +23 -0
  59. package/lib-next/theme/IconEdit/index.js +2 -2
  60. package/lib-next/theme/IconExternalLink/index.js +2 -2
  61. package/lib-next/theme/IconLanguage/index.js +2 -2
  62. package/lib-next/theme/IconMenu/index.js +2 -2
  63. package/lib-next/theme/LastUpdated/index.js +3 -2
  64. package/lib-next/theme/Layout/index.js +3 -1
  65. package/lib-next/theme/LayoutHead/index.js +18 -23
  66. package/lib-next/theme/LayoutProviders/index.js +8 -5
  67. package/lib-next/theme/Logo/index.js +25 -21
  68. package/lib-next/theme/MDXComponents/index.js +34 -7
  69. package/{lib/theme/hooks → lib-next/theme/MDXComponents}/styles.css +3 -2
  70. package/lib-next/theme/MDXPage/index.js +10 -2
  71. package/lib-next/theme/Navbar/index.js +62 -34
  72. package/lib-next/theme/Navbar/styles.module.css +3 -39
  73. package/lib-next/theme/NavbarItem/DefaultNavbarItem.js +45 -143
  74. package/lib-next/theme/NavbarItem/DocNavbarItem.js +7 -7
  75. package/lib-next/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +31 -19
  76. package/lib-next/theme/NavbarItem/DropdownNavbarItem.js +158 -0
  77. package/lib-next/theme/NavbarItem/{LocaleDropdownNavbarItem.js → LocaleDropdownNavbarItem/index.js} +4 -12
  78. package/lib-next/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +11 -0
  79. package/lib-next/theme/NavbarItem/index.js +25 -12
  80. package/lib-next/theme/{SearchMetadatas → SearchMetadata}/index.js +1 -1
  81. package/lib-next/theme/Seo/index.js +11 -7
  82. package/lib-next/theme/TOC/index.js +12 -36
  83. package/lib-next/theme/TOC/styles.module.css +1 -1
  84. package/lib-next/theme/TOCCollapsible/index.js +13 -4
  85. package/lib-next/theme/TOCCollapsible/styles.module.css +1 -0
  86. package/lib-next/theme/TOCInline/index.js +10 -28
  87. package/lib-next/theme/TOCItems/index.js +85 -0
  88. package/lib-next/theme/Tabs/__tests__/index.test.js +142 -0
  89. package/lib-next/theme/Tabs/index.js +103 -48
  90. package/lib-next/theme/Tabs/styles.module.css +0 -13
  91. package/lib-next/theme/Tag/index.js +27 -0
  92. package/lib-next/theme/Tag/styles.module.css +70 -0
  93. package/lib-next/theme/TagsListByLetter/index.js +42 -0
  94. package/lib-next/theme/TagsListByLetter/styles.module.css +11 -0
  95. package/lib-next/theme/TagsListInline/index.js +31 -0
  96. package/lib-next/theme/TagsListInline/styles.module.css +15 -0
  97. package/lib-next/theme/ThemeProvider/index.js +10 -7
  98. package/lib-next/theme/ThemedImage/index.js +5 -5
  99. package/lib-next/theme/Toggle/index.js +34 -37
  100. package/lib-next/theme/Toggle/styles.module.css +91 -3
  101. package/lib-next/theme/UserPreferencesProvider/index.js +9 -6
  102. package/lib-next/theme/hooks/useHideableNavbar.js +31 -44
  103. package/lib-next/theme/hooks/useTheme.js +4 -5
  104. package/lib-next/theme/hooks/useWindowSize.js +2 -6
  105. package/lib-next/theme/prism-include-languages.js +2 -1
  106. package/package.json +26 -24
  107. package/src/admonitions.css +35 -0
  108. package/src/deps.d.ts +13 -0
  109. package/src/index.ts +23 -20
  110. package/{lib-next/prism-include-languages.js → src/prism-include-languages.ts} +0 -0
  111. package/src/theme/Admonition/index.tsx +106 -0
  112. package/src/theme/AnnouncementBar/index.tsx +8 -12
  113. package/src/theme/AnnouncementBar/styles.module.css +23 -32
  114. package/src/theme/BackToTopButton/index.tsx +142 -0
  115. package/src/theme/BackToTopButton/styles.module.css +42 -0
  116. package/src/theme/BlogArchivePage/index.tsx +91 -0
  117. package/src/theme/BlogLayout/index.tsx +44 -0
  118. package/src/theme/BlogListPage/index.tsx +18 -25
  119. package/src/theme/BlogPostAuthor/index.tsx +49 -0
  120. package/{lib/theme/IconEdit → src/theme/BlogPostAuthor}/styles.module.css +4 -3
  121. package/src/theme/BlogPostAuthors/index.tsx +39 -0
  122. package/src/theme/BlogPostAuthors/styles.module.css +11 -0
  123. package/src/theme/BlogPostItem/index.tsx +70 -80
  124. package/src/theme/BlogPostPage/index.tsx +72 -35
  125. package/src/theme/BlogSidebar/index.tsx +11 -13
  126. package/src/theme/BlogSidebar/styles.module.css +2 -2
  127. package/src/theme/BlogTagsListPage/index.tsx +14 -57
  128. package/src/theme/BlogTagsPostsPage/index.tsx +29 -39
  129. package/src/theme/CodeBlock/index.tsx +27 -151
  130. package/src/theme/CodeBlock/styles.module.css +12 -9
  131. package/src/theme/Details/index.tsx +24 -0
  132. package/src/theme/Details/styles.module.css +13 -0
  133. package/src/theme/DocCard/index.tsx +100 -0
  134. package/src/theme/DocCard/styles.module.css +43 -0
  135. package/src/theme/DocCardList/index.tsx +27 -0
  136. package/src/theme/DocCategoryGeneratedIndexPage/index.tsx +53 -0
  137. package/src/theme/DocCategoryGeneratedIndexPage/styles.module.css +18 -0
  138. package/src/theme/DocItem/index.tsx +30 -60
  139. package/src/theme/DocItem/styles.module.css +2 -11
  140. package/src/theme/DocItemFooter/index.tsx +91 -0
  141. package/{lib/theme/BlogPostItem → src/theme/DocItemFooter}/styles.module.css +8 -8
  142. package/src/theme/DocPage/index.tsx +44 -22
  143. package/src/theme/DocPaginator/index.tsx +5 -33
  144. package/src/theme/DocPaginatorNavLink/index.tsx +38 -0
  145. package/src/theme/DocSidebar/index.tsx +38 -39
  146. package/src/theme/DocSidebarItem/index.tsx +108 -49
  147. package/src/theme/DocSidebarItem/styles.module.css +4 -0
  148. package/src/theme/DocTagDocListPage/index.tsx +89 -0
  149. package/src/theme/DocTagsListPage/index.tsx +41 -0
  150. package/src/theme/DocVersionBadge/index.tsx +30 -0
  151. package/src/theme/DocVersionBanner/index.tsx +48 -21
  152. package/src/theme/EditThisPage/index.tsx +6 -1
  153. package/src/theme/ErrorPageContent.tsx +41 -0
  154. package/src/theme/Footer/index.tsx +103 -42
  155. package/src/theme/Heading/index.tsx +24 -31
  156. package/src/theme/Heading/styles.css +5 -6
  157. package/src/theme/Heading/styles.module.css +9 -5
  158. package/src/theme/IconArrow/index.tsx +2 -2
  159. package/src/theme/IconClose/index.tsx +26 -0
  160. package/src/theme/IconEdit/index.tsx +2 -2
  161. package/src/theme/IconExternalLink/index.tsx +2 -5
  162. package/src/theme/IconLanguage/index.tsx +2 -6
  163. package/src/theme/IconMenu/index.tsx +3 -3
  164. package/src/theme/LastUpdated/index.tsx +3 -2
  165. package/src/theme/Layout/index.tsx +3 -1
  166. package/src/theme/LayoutHead/index.tsx +18 -17
  167. package/src/theme/LayoutProviders/index.tsx +8 -5
  168. package/src/theme/Logo/index.tsx +21 -17
  169. package/src/theme/MDXComponents/index.tsx +39 -5
  170. package/src/theme/MDXComponents/styles.css +11 -0
  171. package/src/theme/MDXPage/index.tsx +10 -2
  172. package/src/theme/Navbar/index.tsx +62 -35
  173. package/src/theme/Navbar/styles.module.css +3 -39
  174. package/src/theme/NavbarItem/DefaultNavbarItem.tsx +42 -149
  175. package/src/theme/NavbarItem/DocNavbarItem.tsx +12 -16
  176. package/src/theme/NavbarItem/DocsVersionDropdownNavbarItem.tsx +33 -21
  177. package/src/theme/NavbarItem/DocsVersionNavbarItem.tsx +7 -3
  178. package/src/theme/NavbarItem/DropdownNavbarItem.tsx +180 -0
  179. package/src/theme/NavbarItem/{LocaleDropdownNavbarItem.tsx → LocaleDropdownNavbarItem/index.tsx} +8 -9
  180. package/src/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +11 -0
  181. package/src/theme/NavbarItem/index.tsx +41 -16
  182. package/src/theme/{SearchMetadatas → SearchMetadata}/index.tsx +2 -2
  183. package/src/theme/Seo/index.tsx +7 -4
  184. package/src/theme/TOC/index.tsx +13 -35
  185. package/src/theme/TOC/styles.module.css +1 -1
  186. package/src/theme/TOCCollapsible/index.tsx +13 -4
  187. package/src/theme/TOCCollapsible/styles.module.css +1 -0
  188. package/src/theme/TOCInline/index.tsx +13 -32
  189. package/src/theme/TOCItems/index.tsx +96 -0
  190. package/src/theme/Tabs/index.tsx +110 -54
  191. package/src/theme/Tabs/styles.module.css +0 -13
  192. package/src/theme/Tag/index.tsx +31 -0
  193. package/src/theme/Tag/styles.module.css +70 -0
  194. package/src/theme/TagsListByLetter/index.tsx +45 -0
  195. package/src/theme/TagsListByLetter/styles.module.css +11 -0
  196. package/src/theme/TagsListInline/index.tsx +35 -0
  197. package/src/theme/TagsListInline/styles.module.css +15 -0
  198. package/src/theme/ThemeProvider/index.tsx +6 -2
  199. package/src/theme/ThemedImage/index.tsx +5 -5
  200. package/src/theme/Toggle/index.tsx +36 -43
  201. package/src/theme/Toggle/styles.module.css +91 -3
  202. package/src/theme/UserPreferencesProvider/index.tsx +9 -6
  203. package/src/theme/hooks/useHideableNavbar.ts +32 -45
  204. package/src/theme/hooks/useTabGroupChoice.ts +2 -2
  205. package/src/theme/hooks/useTheme.ts +4 -5
  206. package/src/theme/hooks/useWindowSize.ts +2 -7
  207. package/src/theme/prism-include-languages.ts +3 -2
  208. package/src/theme-classic.d.ts +822 -0
  209. package/src/translations.ts +41 -23
  210. package/src/types.d.ts +0 -629
  211. package/src/{validateThemeConfig.js → validateThemeConfig.ts} +160 -100
  212. package/babel.config.js +0 -35
  213. package/codeTranslations/README.md +0 -20
  214. package/codeTranslations/ar.json +0 -56
  215. package/codeTranslations/base.json +0 -110
  216. package/codeTranslations/bn.json +0 -56
  217. package/codeTranslations/da.json +0 -56
  218. package/codeTranslations/de.json +0 -56
  219. package/codeTranslations/es.json +0 -56
  220. package/codeTranslations/fa.json +0 -56
  221. package/codeTranslations/fil.json +0 -56
  222. package/codeTranslations/fr.json +0 -56
  223. package/codeTranslations/he.json +0 -56
  224. package/codeTranslations/hi.json +0 -56
  225. package/codeTranslations/ja.json +0 -56
  226. package/codeTranslations/ko.json +0 -56
  227. package/codeTranslations/pl.json +0 -56
  228. package/codeTranslations/pt-BR.json +0 -56
  229. package/codeTranslations/pt-PT.json +0 -56
  230. package/codeTranslations/ru.json +0 -56
  231. package/codeTranslations/tr.json +0 -56
  232. package/codeTranslations/vi.json +0 -56
  233. package/codeTranslations/zh-Hans.json +0 -56
  234. package/codeTranslations/zh-Hant.json +0 -56
  235. package/lib/__tests__/__snapshots__/translations.test.ts.snap +0 -116
  236. package/lib/__tests__/translations.test.js +0 -112
  237. package/lib/__tests__/validateThemeConfig.test.js +0 -333
  238. package/lib/theme/AnnouncementBar/index.js +0 -72
  239. package/lib/theme/AnnouncementBar/styles.module.css +0 -72
  240. package/lib/theme/BlogListPage/index.js +0 -71
  241. package/lib/theme/BlogListPaginator/index.js +0 -63
  242. package/lib/theme/BlogPostItem/index.js +0 -161
  243. package/lib/theme/BlogPostPage/index.js +0 -69
  244. package/lib/theme/BlogPostPaginator/index.js +0 -64
  245. package/lib/theme/BlogSidebar/index.js +0 -51
  246. package/lib/theme/BlogSidebar/styles.module.css +0 -44
  247. package/lib/theme/BlogTagsListPage/index.js +0 -76
  248. package/lib/theme/BlogTagsPostsPage/index.js +0 -100
  249. package/lib/theme/CodeBlock/index.js +0 -253
  250. package/lib/theme/CodeBlock/styles.module.css +0 -68
  251. package/lib/theme/DocItem/index.js +0 -138
  252. package/lib/theme/DocItem/styles.module.css +0 -31
  253. package/lib/theme/DocPage/index.js +0 -139
  254. package/lib/theme/DocPage/styles.module.css +0 -85
  255. package/lib/theme/DocPaginator/index.js +0 -63
  256. package/lib/theme/DocSidebar/index.js +0 -133
  257. package/lib/theme/DocSidebar/styles.module.css +0 -106
  258. package/lib/theme/DocSidebarItem/index.js +0 -175
  259. package/lib/theme/DocVersionBanner/index.js +0 -128
  260. package/lib/theme/EditThisPage/index.js +0 -31
  261. package/lib/theme/Footer/index.js +0 -115
  262. package/lib/theme/Footer/styles.module.css +0 -15
  263. package/lib/theme/Heading/index.js +0 -76
  264. package/lib/theme/Heading/styles.css +0 -23
  265. package/lib/theme/Heading/styles.module.css +0 -15
  266. package/lib/theme/IconArrow/index.js +0 -28
  267. package/lib/theme/IconEdit/index.js +0 -34
  268. package/lib/theme/IconExternalLink/index.js +0 -30
  269. package/lib/theme/IconLanguage/index.js +0 -29
  270. package/lib/theme/IconMenu/index.js +0 -30
  271. package/lib/theme/LastUpdated/index.js +0 -61
  272. package/lib/theme/Layout/index.js +0 -64
  273. package/lib/theme/Layout/styles.css +0 -27
  274. package/lib/theme/LayoutHead/index.js +0 -144
  275. package/lib/theme/LayoutProviders/index.js +0 -38
  276. package/lib/theme/Logo/index.js +0 -60
  277. package/lib/theme/MDXComponents/index.js +0 -65
  278. package/lib/theme/MDXPage/index.js +0 -66
  279. package/lib/theme/Navbar/index.js +0 -248
  280. package/lib/theme/Navbar/styles.module.css +0 -63
  281. package/lib/theme/NavbarItem/DefaultNavbarItem.js +0 -210
  282. package/lib/theme/NavbarItem/DocNavbarItem.js +0 -63
  283. package/lib/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +0 -76
  284. package/lib/theme/NavbarItem/DocsVersionNavbarItem.js +0 -43
  285. package/lib/theme/NavbarItem/LocaleDropdownNavbarItem.js +0 -72
  286. package/lib/theme/NavbarItem/SearchNavbarItem.js +0 -28
  287. package/lib/theme/NavbarItem/index.js +0 -54
  288. package/lib/theme/NotFound.js +0 -57
  289. package/lib/theme/SearchBar.js +0 -15
  290. package/lib/theme/SearchMetadatas/index.js +0 -33
  291. package/lib/theme/Seo/index.js +0 -49
  292. package/lib/theme/SkipToContent/index.js +0 -71
  293. package/lib/theme/SkipToContent/styles.module.css +0 -14
  294. package/lib/theme/TOC/index.js +0 -60
  295. package/lib/theme/TOC/styles.module.css +0 -23
  296. package/lib/theme/TOCCollapsible/index.js +0 -51
  297. package/lib/theme/TOCCollapsible/styles.module.css +0 -49
  298. package/lib/theme/TOCInline/index.js +0 -53
  299. package/lib/theme/TOCInline/styles.module.css +0 -12
  300. package/lib/theme/TabItem/index.js +0 -32
  301. package/lib/theme/Tabs/index.js +0 -150
  302. package/lib/theme/Tabs/styles.module.css +0 -23
  303. package/lib/theme/ThemeContext.js +0 -21
  304. package/lib/theme/ThemeProvider/index.js +0 -38
  305. package/lib/theme/ThemedImage/index.js +0 -49
  306. package/lib/theme/ThemedImage/styles.module.css +0 -18
  307. package/lib/theme/Toggle/index.js +0 -94
  308. package/lib/theme/Toggle/styles.css +0 -103
  309. package/lib/theme/Toggle/styles.module.css +0 -17
  310. package/lib/theme/UserPreferencesContext.js +0 -18
  311. package/lib/theme/UserPreferencesProvider/index.js +0 -36
  312. package/lib/theme/hooks/useContextualSearchFilters.js +0 -47
  313. package/lib/theme/hooks/useDocs.js +0 -18
  314. package/lib/theme/hooks/useHideableNavbar.js +0 -92
  315. package/lib/theme/hooks/useKeyboardNavigation.js +0 -45
  316. package/lib/theme/hooks/useLocationHash.js +0 -28
  317. package/lib/theme/hooks/useLockBodyScroll.js +0 -26
  318. package/lib/theme/hooks/usePrismTheme.js +0 -36
  319. package/lib/theme/hooks/useScrollPosition.js +0 -49
  320. package/lib/theme/hooks/useTOCHighlight.js +0 -87
  321. package/lib/theme/hooks/useTabGroupChoice.js +0 -51
  322. package/lib/theme/hooks/useTheme.js +0 -99
  323. package/lib/theme/hooks/useThemeContext.js +0 -31
  324. package/lib/theme/hooks/useUserPreferencesContext.js +0 -31
  325. package/lib/theme/hooks/useWindowSize.js +0 -73
  326. package/lib/theme/prism-include-languages.js +0 -39
  327. package/lib-next/__tests__/__snapshots__/translations.test.ts.snap +0 -116
  328. package/lib-next/__tests__/translations.test.js +0 -128
  329. package/lib-next/__tests__/validateThemeConfig.test.js +0 -333
  330. package/lib-next/index.js +0 -221
  331. package/lib-next/theme/Toggle/styles.css +0 -103
  332. package/lib-next/theme/hooks/useContextualSearchFilters.js +0 -41
  333. package/lib-next/theme/hooks/useLocationHash.js +0 -20
  334. package/lib-next/theme/hooks/useScrollPosition.js +0 -38
  335. package/lib-next/theme/hooks/useTOCHighlight.js +0 -84
  336. package/lib-next/translations.js +0 -145
  337. package/lib-next/validateThemeConfig.js +0 -319
  338. package/src/__tests__/__snapshots__/translations.test.ts.snap +0 -116
  339. package/src/__tests__/translations.test.ts +0 -116
  340. package/src/__tests__/validateThemeConfig.test.js +0 -333
  341. package/src/prism-include-languages.js +0 -11
  342. package/src/theme/Toggle/styles.css +0 -103
  343. package/src/theme/hooks/useContextualSearchFilters.ts +0 -52
  344. package/src/theme/hooks/useLocationHash.ts +0 -25
  345. package/src/theme/hooks/useScrollPosition.ts +0 -45
  346. package/src/theme/hooks/useTOCHighlight.ts +0 -98
  347. package/tsconfig.json +0 -12
  348. package/update-code-translations.js +0 -242
  349. package/update-code-translations.test.js +0 -33
@@ -5,91 +5,26 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
 
8
- import React, {useEffect, useState, useRef} from 'react';
8
+ import React, {useEffect, useState} from 'react';
9
9
  import clsx from 'clsx';
10
10
  import Highlight, {defaultProps, Language} from 'prism-react-renderer';
11
11
  import copy from 'copy-text-to-clipboard';
12
- import rangeParser from 'parse-numeric-range';
12
+ import Translate, {translate} from '@docusaurus/Translate';
13
+ import {
14
+ useThemeConfig,
15
+ parseCodeBlockTitle,
16
+ parseLanguage,
17
+ parseLines,
18
+ ThemeClassNames,
19
+ } from '@docusaurus/theme-common';
13
20
  import usePrismTheme from '@theme/hooks/usePrismTheme';
14
21
  import type {Props} from '@theme/CodeBlock';
15
- import Translate, {translate} from '@docusaurus/Translate';
16
22
 
17
23
  import styles from './styles.module.css';
18
24
 
19
- import {useThemeConfig, parseCodeBlockTitle} from '@docusaurus/theme-common';
20
-
21
- const highlightLinesRangeRegex = /{([\d,-]+)}/;
22
- const getHighlightDirectiveRegex = (
23
- languages = ['js', 'jsBlock', 'jsx', 'python', 'html'],
24
- ) => {
25
- // supported types of comments
26
- const comments = {
27
- js: {
28
- start: '\\/\\/',
29
- end: '',
30
- },
31
- jsBlock: {
32
- start: '\\/\\*',
33
- end: '\\*\\/',
34
- },
35
- jsx: {
36
- start: '\\{\\s*\\/\\*',
37
- end: '\\*\\/\\s*\\}',
38
- },
39
- python: {
40
- start: '#',
41
- end: '',
42
- },
43
- html: {
44
- start: '<!--',
45
- end: '-->',
46
- },
47
- };
48
- // supported directives
49
- const directives = [
50
- 'highlight-next-line',
51
- 'highlight-start',
52
- 'highlight-end',
53
- ].join('|');
54
- // to be more reliable, the opening and closing comment must match
55
- const commentPattern = languages
56
- .map(
57
- (lang) =>
58
- `(?:${comments[lang].start}\\s*(${directives})\\s*${comments[lang].end})`,
59
- )
60
- .join('|');
61
- // white space is allowed, but otherwise it should be on it's own line
62
- return new RegExp(`^\\s*(?:${commentPattern})\\s*$`);
63
- };
64
- // select comment styles based on language
65
- const highlightDirectiveRegex = (lang) => {
66
- switch (lang) {
67
- case 'js':
68
- case 'javascript':
69
- case 'ts':
70
- case 'typescript':
71
- return getHighlightDirectiveRegex(['js', 'jsBlock']);
72
-
73
- case 'jsx':
74
- case 'tsx':
75
- return getHighlightDirectiveRegex(['js', 'jsBlock', 'jsx']);
76
-
77
- case 'html':
78
- return getHighlightDirectiveRegex(['js', 'jsBlock', 'html']);
79
-
80
- case 'python':
81
- case 'py':
82
- return getHighlightDirectiveRegex(['python']);
83
-
84
- default:
85
- // all comment types
86
- return getHighlightDirectiveRegex();
87
- }
88
- };
89
-
90
25
  export default function CodeBlock({
91
26
  children,
92
- className: languageClassName,
27
+ className: blockClassName,
93
28
  metastring,
94
29
  title,
95
30
  }: Props): JSX.Element {
@@ -112,78 +47,16 @@ export default function CodeBlock({
112
47
  // so we probably don't need to parse the metastring
113
48
  // (note: title="xyz" => title prop still has the quotes)
114
49
  const codeBlockTitle = parseCodeBlockTitle(metastring) || title;
115
-
116
- const button = useRef(null);
117
- let highlightLines: number[] = [];
118
-
119
50
  const prismTheme = usePrismTheme();
120
51
 
121
52
  // In case interleaved Markdown (e.g. when using CodeBlock as standalone component).
122
- const content = Array.isArray(children) ? children.join('') : children;
123
-
124
- if (metastring && highlightLinesRangeRegex.test(metastring)) {
125
- // Tested above
126
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
127
- const highlightLinesRange = metastring.match(highlightLinesRangeRegex)![1];
128
- highlightLines = rangeParser(highlightLinesRange).filter((n) => n > 0);
129
- }
130
-
131
- let language =
132
- languageClassName &&
133
- // Force Prism's language union type to `any` because it does not contain all available languages
134
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
135
- ((languageClassName.replace(/language-/, '') as Language) as any);
136
-
137
- if (!language && prism.defaultLanguage) {
138
- language = prism.defaultLanguage;
139
- }
53
+ const content = Array.isArray(children)
54
+ ? children.join('')
55
+ : (children as string);
140
56
 
141
- // only declaration OR directive highlight can be used for a block
142
- let code = content.replace(/\n$/, '');
143
- if (highlightLines.length === 0 && language !== undefined) {
144
- let range = '';
145
- const directiveRegex = highlightDirectiveRegex(language);
146
- // go through line by line
147
- const lines = content.replace(/\n$/, '').split('\n');
148
- let blockStart;
149
- // loop through lines
150
- for (let index = 0; index < lines.length; ) {
151
- const line = lines[index];
152
- // adjust for 0-index
153
- const lineNumber = index + 1;
154
- const match = line.match(directiveRegex);
155
- if (match !== null) {
156
- const directive = match
157
- .slice(1)
158
- .reduce(
159
- (final: string | undefined, item) => final || item,
160
- undefined,
161
- );
162
- switch (directive) {
163
- case 'highlight-next-line':
164
- range += `${lineNumber},`;
165
- break;
166
-
167
- case 'highlight-start':
168
- blockStart = lineNumber;
169
- break;
170
-
171
- case 'highlight-end':
172
- range += `${blockStart}-${lineNumber - 1},`;
173
- break;
174
-
175
- default:
176
- break;
177
- }
178
- lines.splice(index, 1);
179
- } else {
180
- // lines without directives are unchanged
181
- index += 1;
182
- }
183
- }
184
- highlightLines = rangeParser(range);
185
- code = lines.join('\n');
186
- }
57
+ const language =
58
+ parseLanguage(blockClassName) ?? (prism.defaultLanguage as Language);
59
+ const {highlightLines, code} = parseLines(content, metastring, language);
187
60
 
188
61
  const handleCopyCode = () => {
189
62
  copy(code);
@@ -200,7 +73,12 @@ export default function CodeBlock({
200
73
  code={code}
201
74
  language={language}>
202
75
  {({className, style, tokens, getLineProps, getTokenProps}) => (
203
- <div className={styles.codeBlockContainer}>
76
+ <div
77
+ className={clsx(
78
+ styles.codeBlockContainer,
79
+ blockClassName,
80
+ ThemeClassNames.common.codeBlock,
81
+ )}>
204
82
  {codeBlockTitle && (
205
83
  <div style={style} className={styles.codeBlockTitle}>
206
84
  {codeBlockTitle}
@@ -210,19 +88,17 @@ export default function CodeBlock({
210
88
  <pre
211
89
  /* eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex */
212
90
  tabIndex={0}
213
- className={clsx(className, styles.codeBlock, 'thin-scrollbar', {
214
- [styles.codeBlockWithTitle]: codeBlockTitle,
215
- })}
91
+ className={clsx(className, styles.codeBlock, 'thin-scrollbar')}
216
92
  style={style}>
217
93
  <code className={styles.codeBlockLines}>
218
94
  {tokens.map((line, i) => {
219
- if (line.length === 1 && line[0].content === '') {
220
- line[0].content = '\n'; // eslint-disable-line no-param-reassign
95
+ if (line.length === 1 && line[0].content === '\n') {
96
+ line[0].content = '';
221
97
  }
222
98
 
223
99
  const lineProps = getLineProps({line, key: i});
224
100
 
225
- if (highlightLines.includes(i + 1)) {
101
+ if (highlightLines.includes(i)) {
226
102
  lineProps.className += ' docusaurus-highlight-code-line';
227
103
  }
228
104
 
@@ -231,6 +107,7 @@ export default function CodeBlock({
231
107
  {line.map((token, key) => (
232
108
  <span key={key} {...getTokenProps({token, key})} />
233
109
  ))}
110
+ <br />
234
111
  </span>
235
112
  );
236
113
  })}
@@ -238,7 +115,6 @@ export default function CodeBlock({
238
115
  </pre>
239
116
 
240
117
  <button
241
- ref={button}
242
118
  type="button"
243
119
  aria-label={translate({
244
120
  id: 'theme.CodeBlock.copyButtonAriaLabel',
@@ -7,6 +7,8 @@
7
7
 
8
8
  .codeBlockContainer {
9
9
  margin-bottom: var(--ifm-leading);
10
+ border-radius: var(--ifm-global-radius);
11
+ box-shadow: var(--ifm-global-shadow-lw);
10
12
  }
11
13
 
12
14
  .codeBlockContent {
@@ -16,23 +18,25 @@
16
18
  }
17
19
 
18
20
  .codeBlockTitle {
19
- border-top-left-radius: var(--ifm-global-radius);
20
- border-top-right-radius: var(--ifm-global-radius);
21
21
  border-bottom: 1px solid var(--ifm-color-emphasis-300);
22
22
  font-size: var(--ifm-code-font-size);
23
23
  font-weight: 500;
24
24
  padding: 0.75rem var(--ifm-pre-padding);
25
+ border-top-left-radius: var(--ifm-global-radius);
26
+ border-top-right-radius: var(--ifm-global-radius);
25
27
  }
26
28
 
27
- .codeBlock {
28
- padding: 0;
29
- }
30
-
31
- .codeBlockWithTitle {
29
+ .codeBlockTitle + .codeBlockContent .codeBlock {
32
30
  border-top-left-radius: 0;
33
31
  border-top-right-radius: 0;
34
32
  }
35
33
 
34
+ .codeBlock {
35
+ margin: 0;
36
+ padding: 0;
37
+ border-radius: var(--ifm-global-radius);
38
+ }
39
+
36
40
  .copyButton {
37
41
  background: rgba(0, 0, 0, 0.3);
38
42
  border-radius: var(--ifm-global-radius);
@@ -54,11 +58,10 @@
54
58
 
55
59
  .codeBlockLines {
56
60
  font: inherit;
61
+ /*rtl:ignore*/
57
62
  float: left;
58
63
  min-width: 100%;
59
64
  padding: var(--ifm-pre-padding);
60
- display: flex;
61
- flex-direction: column;
62
65
  }
63
66
 
64
67
  @media print {
@@ -0,0 +1,24 @@
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
+ import React from 'react';
9
+ import clsx from 'clsx';
10
+ import {Details as DetailsGeneric} from '@docusaurus/theme-common';
11
+ import type {Props} from '@theme/Details';
12
+ import styles from './styles.module.css';
13
+
14
+ // Should we have a custom details/summary comp in Infima instead of reusing alert classes?
15
+ const InfimaClasses = 'alert alert--info';
16
+
17
+ export default function Details({...props}: Props): JSX.Element {
18
+ return (
19
+ <DetailsGeneric
20
+ {...props}
21
+ className={clsx(InfimaClasses, styles.details, props.className)}
22
+ />
23
+ );
24
+ }
@@ -0,0 +1,13 @@
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
+ .details {
9
+ --docusaurus-details-decoration-color: var(--ifm-alert-border-color);
10
+ --docusaurus-details-transition: transform var(--ifm-transition-fast) ease;
11
+ margin: 0 0 var(--ifm-spacing-vertical);
12
+ border: 1px solid var(--ifm-alert-border-color);
13
+ }
@@ -0,0 +1,100 @@
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
+ import React, {ReactNode} from 'react';
9
+ import Link from '@docusaurus/Link';
10
+ import {
11
+ PropSidebarItemCategory,
12
+ PropSidebarItemLink,
13
+ } from '@docusaurus/plugin-content-docs';
14
+ import type {Props} from '@theme/DocCard';
15
+ import {findFirstCategoryLink, useDocById} from '@docusaurus/theme-common';
16
+ import clsx from 'clsx';
17
+ import styles from './styles.module.css';
18
+ import isInternalUrl from '@docusaurus/isInternalUrl';
19
+
20
+ function CardContainer({
21
+ href,
22
+ children,
23
+ }: {
24
+ href?: string;
25
+ children: ReactNode;
26
+ }): JSX.Element {
27
+ const className = clsx(
28
+ 'card margin-bottom--lg padding--lg',
29
+ styles.cardContainer,
30
+ href && styles.cardContainerLink,
31
+ );
32
+ return href ? (
33
+ <Link href={href} className={className}>
34
+ {children}
35
+ </Link>
36
+ ) : (
37
+ <div className={className}>{children}</div>
38
+ );
39
+ }
40
+
41
+ function CardLayout({
42
+ href,
43
+ icon,
44
+ title,
45
+ description,
46
+ }: {
47
+ href?: string;
48
+ icon: ReactNode;
49
+ title: string;
50
+ description?: string;
51
+ }): JSX.Element {
52
+ return (
53
+ <CardContainer href={href}>
54
+ <h2 className={clsx('text--truncate', styles.cardTitle)} title={title}>
55
+ {icon} {title}
56
+ </h2>
57
+ <div
58
+ className={clsx('text--truncate', styles.cardDescription)}
59
+ title={description}>
60
+ {description}
61
+ </div>
62
+ </CardContainer>
63
+ );
64
+ }
65
+
66
+ function CardCategory({item}: {item: PropSidebarItemCategory}): JSX.Element {
67
+ const href = findFirstCategoryLink(item);
68
+ return (
69
+ <CardLayout
70
+ href={href}
71
+ icon="🗃️"
72
+ title={item.label}
73
+ description={`${item.items.length} items`}
74
+ />
75
+ );
76
+ }
77
+
78
+ function CardLink({item}: {item: PropSidebarItemLink}): JSX.Element {
79
+ const icon = isInternalUrl(item.href) ? '📄️' : '🔗';
80
+ const doc = useDocById(item.docId ?? undefined);
81
+ return (
82
+ <CardLayout
83
+ href={item.href}
84
+ icon={icon}
85
+ title={item.label}
86
+ description={doc?.description}
87
+ />
88
+ );
89
+ }
90
+
91
+ export default function DocCard({item}: Props): JSX.Element {
92
+ switch (item.type) {
93
+ case 'link':
94
+ return <CardLink item={item} />;
95
+ case 'category':
96
+ return <CardCategory item={item} />;
97
+ default:
98
+ throw new Error(`unknown item type ${JSON.stringify(item)}`);
99
+ }
100
+ }
@@ -0,0 +1,43 @@
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
+ .cardContainer {
9
+ height: 8rem;
10
+
11
+ color: var(--ifm-color-emphasis-800);
12
+ --ifm-link-color: var(--ifm-color-emphasis-800);
13
+ --ifm-link-hover-color: var(--ifm-color-emphasis-800);
14
+ --ifm-link-hover-decoration: none;
15
+
16
+ /* box-shadow: var(--ifm-global-shadow-lw); */
17
+ box-shadow: 0 1.5px 3px 0 rgba(0, 0, 0, 0.15);
18
+ border: 1px solid var(--ifm-color-emphasis-200);
19
+ transition: box-shadow var(--ifm-transition-fast) ease,
20
+ background-color var(--ifm-transition-fast) ease;
21
+ }
22
+
23
+ .cardContainer.cardContainerLink:hover {
24
+ /* box-shadow: var(--ifm-global-shadow-md); */
25
+ box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2);
26
+ }
27
+ html[data-theme='dark'] .cardContainer.cardContainerLink:hover {
28
+ --ifm-card-background-color: #2d2d2d; /* original, non-hovered color is #242526 */
29
+ }
30
+
31
+ .cardContainer:not(.cardContainerLink) {
32
+ cursor: not-allowed;
33
+ }
34
+
35
+ .cardTitle {
36
+ font-size: 1.2rem;
37
+ min-height: 1.2rem;
38
+ }
39
+
40
+ .cardDescription {
41
+ font-size: 0.8rem;
42
+ min-height: 0.8rem;
43
+ }
@@ -0,0 +1,27 @@
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
+ import React from 'react';
9
+
10
+ import DocCard from '@theme/DocCard';
11
+ import {PropSidebarItem} from '@docusaurus/plugin-content-docs';
12
+
13
+ export default function DocCardList({
14
+ items,
15
+ }: {
16
+ items: PropSidebarItem[];
17
+ }): JSX.Element {
18
+ return (
19
+ <div className="row">
20
+ {items.map((item, index) => (
21
+ <article key={index} className="col col--6">
22
+ <DocCard item={item} />
23
+ </article>
24
+ ))}
25
+ </div>
26
+ );
27
+ }
@@ -0,0 +1,53 @@
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
+ import React from 'react';
9
+ import {useCurrentSidebarCategory} from '@docusaurus/theme-common';
10
+ import type {Props} from '@theme/DocCategoryGeneratedIndexPage';
11
+ import DocCardList from '@theme/DocCardList';
12
+ import DocPaginator from '@theme/DocPaginator';
13
+ import Seo from '@theme/Seo';
14
+ import DocVersionBanner from '@theme/DocVersionBanner';
15
+ import DocVersionBadge from '@theme/DocVersionBadge';
16
+ import {MainHeading} from '@theme/Heading';
17
+
18
+ import styles from './styles.module.css';
19
+
20
+ export default function DocCategoryGeneratedIndexPage({
21
+ categoryGeneratedIndex,
22
+ }: Props): JSX.Element {
23
+ const category = useCurrentSidebarCategory();
24
+ return (
25
+ <>
26
+ <Seo
27
+ title={categoryGeneratedIndex.title}
28
+ description={categoryGeneratedIndex.description}
29
+ />
30
+ <div className={styles.generatedIndexPage}>
31
+ <DocVersionBanner />
32
+ <DocVersionBadge />
33
+ <header>
34
+ <MainHeading className={styles.title}>
35
+ {categoryGeneratedIndex.title}
36
+ </MainHeading>
37
+ {categoryGeneratedIndex.description && (
38
+ <p>{categoryGeneratedIndex.description}</p>
39
+ )}
40
+ </header>
41
+ <main className="margin-top--lg">
42
+ <DocCardList items={category.items} />
43
+ </main>
44
+ <footer className="margin-top--lg">
45
+ <DocPaginator
46
+ previous={categoryGeneratedIndex.navigation.previous}
47
+ next={categoryGeneratedIndex.navigation.next}
48
+ />
49
+ </footer>
50
+ </div>
51
+ </>
52
+ );
53
+ }
@@ -0,0 +1,18 @@
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
+ @media (min-width: 997px) {
9
+ .generatedIndexPage {
10
+ max-width: 75% !important;
11
+ }
12
+ }
13
+
14
+ /* Duplicated from .markdown h1 */
15
+ .title {
16
+ --ifm-h1-font-size: 3rem;
17
+ margin-bottom: calc(1.25 * var(--ifm-leading));
18
+ }