@redocly/theme 0.1.7 → 0.1.8

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 (375) hide show
  1. package/Footer/Footer.d.ts +3 -0
  2. package/Footer/Footer.js +34 -0
  3. package/Footer/FooterColumn.d.ts +7 -0
  4. package/Footer/FooterColumn.js +38 -0
  5. package/Footer/FooterColumns.d.ts +7 -0
  6. package/Footer/FooterColumns.js +44 -0
  7. package/Footer/FooterCopyright.d.ts +5 -0
  8. package/Footer/FooterCopyright.js +29 -0
  9. package/Footer/index.d.ts +4 -0
  10. package/Footer/index.js +14 -0
  11. package/JsonViewer/JsonViewer.js +1 -1
  12. package/JsonViewer/index.d.ts +1 -0
  13. package/JsonViewer/index.js +1 -0
  14. package/Layout/PageLayout.d.ts +6 -0
  15. package/Layout/PageLayout.js +30 -0
  16. package/Layout/RootLayout.d.ts +7 -0
  17. package/Layout/RootLayout.js +31 -0
  18. package/Layout/index.d.ts +2 -0
  19. package/Layout/index.js +10 -0
  20. package/Logo/Logo.d.ts +1 -6
  21. package/Markdown/Admonition/Admonition.d.ts +9 -0
  22. package/Markdown/Admonition/Admonition.js +39 -0
  23. package/Markdown/CodeSample/CodeSample.d.ts +8 -0
  24. package/Markdown/CodeSample/CodeSample.js +30 -0
  25. package/Markdown/CodeSample/styled.d.ts +5 -0
  26. package/Markdown/CodeSample/styled.js +109 -0
  27. package/Markdown/CodeSample/types.d.ts +9 -0
  28. package/Markdown/CodeSample/types.js +2 -0
  29. package/Markdown/ContentWrapper.d.ts +5 -0
  30. package/Markdown/ContentWrapper.js +21 -0
  31. package/Markdown/Heading/Heading.d.ts +5 -0
  32. package/Markdown/Heading/Heading.js +23 -0
  33. package/Markdown/MarkdownLayout.d.ts +7 -0
  34. package/Markdown/MarkdownLayout.js +23 -0
  35. package/Markdown/Mermaid/Mermaid.d.ts +6 -0
  36. package/Markdown/Mermaid/Mermaid.js +19 -0
  37. package/Markdown/PageWrapper.d.ts +3 -0
  38. package/Markdown/PageWrapper.js +15 -0
  39. package/Markdown/StyledMarkdown.d.ts +8 -0
  40. package/Markdown/StyledMarkdown.js +54 -0
  41. package/Markdown/Tabs/Tab.d.ts +8 -0
  42. package/Markdown/Tabs/Tab.js +35 -0
  43. package/Markdown/Tabs/Tabs.d.ts +10 -0
  44. package/Markdown/Tabs/Tabs.js +43 -0
  45. package/Navbar/Navbar.d.ts +1 -0
  46. package/Navbar/Navbar.js +7 -1
  47. package/Navbar/NavbarItem.js +1 -1
  48. package/Navbar/NavbarMenu.js +4 -1
  49. package/OperationBadge/OperationBadge.d.ts +5 -0
  50. package/OperationBadge/OperationBadge.js +15 -0
  51. package/OperationBadge/index.d.ts +1 -0
  52. package/OperationBadge/index.js +17 -0
  53. package/PageNavigation/NextPageLink.d.ts +2 -0
  54. package/PageNavigation/NextPageLink.js +25 -0
  55. package/PageNavigation/PageNavigation.d.ts +2 -0
  56. package/PageNavigation/PageNavigation.js +31 -0
  57. package/PageNavigation/PreviousPageLink.d.ts +2 -0
  58. package/PageNavigation/PreviousPageLink.js +25 -0
  59. package/Panel/CodePanel.js +6 -6
  60. package/Panel/ContentPanel.js +4 -4
  61. package/Panel/Panel.d.ts +1 -1
  62. package/Panel/Panel.js +3 -3
  63. package/Panel/PanelComponent.d.ts +1 -1
  64. package/Panel/PanelComponent.js +3 -3
  65. package/Panel/index.d.ts +1 -0
  66. package/Panel/index.js +1 -0
  67. package/Search/Autocomplete.d.ts +13 -0
  68. package/Search/Autocomplete.js +79 -0
  69. package/Search/ClearIcon.d.ts +2 -0
  70. package/Search/ClearIcon.js +29 -0
  71. package/Search/Input.d.ts +3 -0
  72. package/Search/Input.js +15 -0
  73. package/Search/Parameters.d.ts +7 -0
  74. package/Search/Parameters.js +42 -0
  75. package/Search/Popover.d.ts +3 -0
  76. package/Search/Popover.js +15 -0
  77. package/Search/Search.d.ts +2 -0
  78. package/Search/Search.js +39 -0
  79. package/Search/SearchIcon.d.ts +2 -0
  80. package/Search/SearchIcon.js +29 -0
  81. package/Search/SearchItem.d.ts +7 -0
  82. package/Search/SearchItem.js +47 -0
  83. package/Search/utils.d.ts +2 -0
  84. package/Search/utils.js +21 -0
  85. package/Sidebar/ApiCallItem.d.ts +8 -0
  86. package/Sidebar/ApiCallItem.js +35 -0
  87. package/Sidebar/ArrowBack.d.ts +5 -0
  88. package/Sidebar/ArrowBack.js +28 -0
  89. package/Sidebar/BackButton.d.ts +6 -0
  90. package/Sidebar/BackButton.js +30 -0
  91. package/Sidebar/Drilldown.d.ts +8 -0
  92. package/Sidebar/Drilldown.js +45 -0
  93. package/Sidebar/DrilldownMenu.d.ts +3 -0
  94. package/Sidebar/DrilldownMenu.js +57 -0
  95. package/Sidebar/DrilldownMenuItem.d.ts +3 -0
  96. package/Sidebar/DrilldownMenuItem.js +31 -0
  97. package/Sidebar/ExternalIcon.d.ts +5 -0
  98. package/Sidebar/ExternalIcon.js +28 -0
  99. package/Sidebar/Menu.d.ts +4 -0
  100. package/Sidebar/Menu.js +14 -0
  101. package/Sidebar/MenuContainer.d.ts +2 -0
  102. package/Sidebar/MenuContainer.js +12 -0
  103. package/Sidebar/MenuGroup.d.ts +9 -0
  104. package/Sidebar/MenuGroup.js +37 -0
  105. package/Sidebar/MenuItem.d.ts +3 -0
  106. package/Sidebar/MenuItem.js +33 -0
  107. package/Sidebar/MenuItemLabel.d.ts +6 -0
  108. package/Sidebar/MenuItemLabel.js +18 -0
  109. package/Sidebar/MenuLink.d.ts +6 -0
  110. package/Sidebar/MenuLink.js +15 -0
  111. package/Sidebar/MenuLinkItem.d.ts +3 -0
  112. package/Sidebar/MenuLinkItem.js +30 -0
  113. package/Sidebar/MobileSidebarButton.d.ts +6 -0
  114. package/Sidebar/MobileSidebarButton.js +20 -0
  115. package/Sidebar/Separator.d.ts +3 -0
  116. package/Sidebar/Separator.js +31 -0
  117. package/Sidebar/SeparatorItem.d.ts +6 -0
  118. package/Sidebar/SeparatorItem.js +13 -0
  119. package/Sidebar/SeparatorLine.d.ts +4 -0
  120. package/Sidebar/SeparatorLine.js +14 -0
  121. package/Sidebar/Sidebar.d.ts +8 -0
  122. package/Sidebar/Sidebar.js +23 -0
  123. package/Sidebar/SidebarLayout.d.ts +7 -0
  124. package/Sidebar/SidebarLayout.js +35 -0
  125. package/Sidebar/types/DrilldownMenuProps.d.ts +6 -0
  126. package/Sidebar/types/DrilldownMenuProps.js +2 -0
  127. package/Sidebar/types/ItemState.d.ts +9 -0
  128. package/Sidebar/types/ItemState.js +2 -0
  129. package/Sidebar/types/MenuItemProps.d.ts +5 -0
  130. package/Sidebar/types/MenuItemProps.js +2 -0
  131. package/Sidebar/types/MenuStyle.d.ts +3 -0
  132. package/Sidebar/types/MenuStyle.js +8 -0
  133. package/Sidebar/types/NavItem.d.ts +26 -0
  134. package/Sidebar/types/NavItem.js +2 -0
  135. package/SourceCode/SourceCode.js +2 -2
  136. package/TableOfContent/TableOfContent.d.ts +9 -0
  137. package/TableOfContent/TableOfContent.js +64 -0
  138. package/globalStyle.js +1 -1
  139. package/hooks/index.d.ts +4 -0
  140. package/hooks/index.js +4 -0
  141. package/hooks/useActiveHeading.d.ts +2 -0
  142. package/hooks/useActiveHeading.js +34 -0
  143. package/hooks/useActiveSectionId.d.ts +3 -0
  144. package/hooks/useActiveSectionId.js +48 -0
  145. package/hooks/useFullHeight.d.ts +2 -0
  146. package/hooks/useFullHeight.js +47 -0
  147. package/hooks/useMobileMenu.d.ts +2 -0
  148. package/hooks/useMobileMenu.js +13 -0
  149. package/hooks/useNavbarHeight.d.ts +3 -0
  150. package/hooks/useNavbarHeight.js +20 -0
  151. package/icons/ShelfIcon/ShelfIcon.js +2 -2
  152. package/index.d.ts +1 -0
  153. package/index.js +1 -0
  154. package/mocks/hooks/usePageData.d.ts +5 -0
  155. package/mocks/hooks/usePageData.js +7 -0
  156. package/mocks/models.d.ts +3 -0
  157. package/mocks/models.js +2 -0
  158. package/mocks/search.d.ts +22 -0
  159. package/mocks/search.js +13 -0
  160. package/mocks/types/index.d.ts +1 -0
  161. package/mocks/types/index.js +2 -0
  162. package/mocks/usePreloadHistory.d.ts +3 -0
  163. package/mocks/usePreloadHistory.js +12 -0
  164. package/package.json +5 -2
  165. package/src/Button/Button.stories.tsx +1 -1
  166. package/src/Button/__tests__/Button.test.tsx +1 -1
  167. package/src/CodeBlock/__tests__/CodeBlock.test.tsx +1 -1
  168. package/src/CopyButton/CopyButton.stories.tsx +1 -1
  169. package/src/CopyButton/CopyButton.tsx +1 -1
  170. package/src/CopyButton/CopyButtonWrapper.tsx +4 -4
  171. package/src/CopyButton/__tests__/CopyButton.test.tsx +1 -1
  172. package/src/CopyButton/__tests__/CopyButtonWrapper.test.tsx +2 -1
  173. package/src/Footer/Footer.tsx +34 -0
  174. package/src/Footer/FooterColumn.tsx +62 -0
  175. package/src/Footer/FooterColumns.tsx +51 -0
  176. package/src/Footer/FooterCopyright.tsx +26 -0
  177. package/src/Footer/index.tsx +4 -0
  178. package/src/Headings/Headings.stories.tsx +1 -1
  179. package/src/Headings/Headings.ts +1 -1
  180. package/src/Headings/__tests__/Headings.test.tsx +1 -1
  181. package/src/JsonViewer/JsonViewer.stories.tsx +1 -1
  182. package/src/JsonViewer/JsonViewer.tsx +6 -7
  183. package/src/JsonViewer/__tests__/JsonViewer.test.tsx +2 -1
  184. package/src/JsonViewer/index.ts +1 -0
  185. package/src/Layout/PageLayout.tsx +34 -0
  186. package/src/Layout/RootLayout.tsx +24 -0
  187. package/src/Layout/index.tsx +2 -0
  188. package/src/Logo/Logo.tsx +1 -7
  189. package/src/Markdown/Admonition/Admonition.tsx +64 -0
  190. package/src/Markdown/CodeSample/CodeSample.tsx +39 -0
  191. package/src/Markdown/CodeSample/styled.ts +289 -0
  192. package/src/Markdown/CodeSample/types.ts +40 -0
  193. package/src/Markdown/ContentWrapper.tsx +20 -0
  194. package/src/Markdown/Heading/Heading.tsx +35 -0
  195. package/src/Markdown/MarkdownLayout.tsx +25 -0
  196. package/src/Markdown/Mermaid/Mermaid.tsx +23 -0
  197. package/src/Markdown/PageWrapper.tsx +9 -0
  198. package/src/Markdown/StyledMarkdown.tsx +312 -0
  199. package/src/Markdown/Tabs/Tab.tsx +37 -0
  200. package/src/Markdown/Tabs/Tabs.tsx +45 -0
  201. package/src/Navbar/Navbar.stories.tsx +0 -10
  202. package/src/Navbar/Navbar.tsx +19 -25
  203. package/src/Navbar/NavbarItem.tsx +1 -1
  204. package/src/Navbar/NavbarMenu.tsx +4 -4
  205. package/src/OperationBadge/OperationBadge.stories.tsx +35 -0
  206. package/src/OperationBadge/OperationBadge.ts +59 -0
  207. package/src/OperationBadge/__tests__/OperationBadge.test.tsx +59 -0
  208. package/src/OperationBadge/__tests__/__snapshots__/OperationBadge.test.tsx.snap +651 -0
  209. package/src/OperationBadge/index.ts +1 -0
  210. package/src/PageNavigation/NextPageLink.tsx +22 -0
  211. package/src/PageNavigation/PageNavigation.tsx +20 -0
  212. package/src/PageNavigation/PreviousPageLink.tsx +22 -0
  213. package/src/Panel/CodePanel.stories.tsx +1 -2
  214. package/src/Panel/CodePanel.ts +8 -7
  215. package/src/Panel/ContentPanel.stories.tsx +1 -2
  216. package/src/Panel/ContentPanel.ts +5 -6
  217. package/src/Panel/Panel.stories.tsx +1 -3
  218. package/src/Panel/Panel.ts +3 -3
  219. package/src/Panel/PanelComponent.tsx +4 -5
  220. package/src/Panel/__tests__/CodePanel.test.tsx +1 -1
  221. package/src/Panel/__tests__/ContentPanel.test.tsx +1 -1
  222. package/src/Panel/__tests__/Panel.test.tsx +1 -2
  223. package/src/Panel/__tests__/__snapshots__/CodePanel.test.tsx.snap +8 -8
  224. package/src/Panel/__tests__/__snapshots__/ContentPanel.test.tsx.snap +22 -22
  225. package/src/Panel/__tests__/__snapshots__/Panel.test.tsx.snap +16 -16
  226. package/src/Panel/index.ts +1 -0
  227. package/src/SamplesPanelControls/SamplesControlButton.stories.tsx +1 -1
  228. package/src/SamplesPanelControls/SamplesPanelControls.ts +1 -1
  229. package/src/Search/Autocomplete.tsx +128 -0
  230. package/src/Search/ClearIcon.tsx +31 -0
  231. package/src/Search/Input.tsx +19 -0
  232. package/src/Search/Parameters.tsx +62 -0
  233. package/src/Search/Popover.tsx +20 -0
  234. package/src/Search/Search.tsx +52 -0
  235. package/src/Search/SearchIcon.tsx +32 -0
  236. package/src/Search/SearchItem.tsx +85 -0
  237. package/src/Search/utils.tsx +19 -0
  238. package/src/Sidebar/ApiCallItem.tsx +33 -0
  239. package/src/Sidebar/ArrowBack.tsx +22 -0
  240. package/src/Sidebar/BackButton.tsx +44 -0
  241. package/src/Sidebar/Drilldown.tsx +46 -0
  242. package/src/Sidebar/DrilldownMenu.tsx +58 -0
  243. package/src/Sidebar/DrilldownMenuItem.tsx +40 -0
  244. package/src/Sidebar/ExternalIcon.tsx +37 -0
  245. package/src/Sidebar/Menu.tsx +11 -0
  246. package/src/Sidebar/MenuContainer.tsx +8 -0
  247. package/src/Sidebar/MenuGroup.tsx +55 -0
  248. package/src/Sidebar/MenuItem.tsx +25 -0
  249. package/src/Sidebar/MenuItemLabel.tsx +41 -0
  250. package/src/Sidebar/MenuLink.tsx +14 -0
  251. package/src/Sidebar/MenuLinkItem.tsx +24 -0
  252. package/src/Sidebar/MobileSidebarButton.tsx +44 -0
  253. package/src/Sidebar/Separator.tsx +17 -0
  254. package/src/Sidebar/SeparatorItem.tsx +14 -0
  255. package/src/Sidebar/SeparatorLine.tsx +9 -0
  256. package/src/Sidebar/Sidebar.tsx +54 -0
  257. package/src/Sidebar/SidebarLayout.tsx +30 -0
  258. package/src/Sidebar/types/DrilldownMenuProps.ts +7 -0
  259. package/src/Sidebar/types/ItemState.ts +11 -0
  260. package/src/Sidebar/types/MenuItemProps.ts +6 -0
  261. package/src/Sidebar/types/MenuStyle.ts +4 -0
  262. package/src/Sidebar/types/NavItem.ts +27 -0
  263. package/src/SidebarLogo/SidebarLogo.stories.tsx +1 -1
  264. package/src/SidebarLogo/__tests__/SidebarLogo.test.tsx +1 -1
  265. package/src/SourceCode/SourceCode.stories.tsx +1 -1
  266. package/src/SourceCode/SourceCode.tsx +7 -3
  267. package/src/SourceCode/__tests__/SourceCode.test.tsx +2 -1
  268. package/src/TableOfContent/TableOfContent.tsx +112 -0
  269. package/src/Tooltip/Tooltip.stories.tsx +1 -1
  270. package/src/Tooltip/Tooltip.tsx +1 -1
  271. package/src/Tooltip/__tests__/Tooltip.test.tsx +1 -1
  272. package/src/globalStyle.ts +10 -34
  273. package/src/hooks/index.ts +4 -0
  274. package/src/hooks/useActiveHeading.ts +46 -0
  275. package/src/hooks/useActiveSectionId.ts +53 -0
  276. package/src/hooks/useFullHeight.ts +47 -0
  277. package/src/hooks/useMobileMenu.ts +11 -0
  278. package/src/hooks/useNavbarHeight.ts +24 -0
  279. package/src/icons/ShelfIcon/ShelfIcon.stories.tsx +1 -1
  280. package/src/icons/ShelfIcon/ShelfIcon.tsx +1 -1
  281. package/src/icons/ShelfIcon/__tests__/ShelfIcon.test.tsx +1 -1
  282. package/src/index.ts +1 -0
  283. package/src/mocks/hooks/usePageData.ts +8 -0
  284. package/src/mocks/models.ts +3 -0
  285. package/src/mocks/search.ts +31 -0
  286. package/src/mocks/types/index.ts +1 -0
  287. package/src/mocks/usePreloadHistory.ts +9 -0
  288. package/src/types/portal/index.d.ts +6 -0
  289. package/src/types/portal/src/client/app/Sidebar/types.d.ts +50 -0
  290. package/src/types/portal/src/client/app/media-css.d.ts +7 -0
  291. package/src/types/portal/src/client/styling/default.d.ts +407 -0
  292. package/src/types/portal/src/client/styling/index.d.ts +14 -0
  293. package/src/types/portal/src/client/styling/resolve.d.ts +1 -0
  294. package/src/types/portal/src/server/constants.d.ts +11 -0
  295. package/src/types/portal/src/server/plugins/markdown/types.d.ts +28 -0
  296. package/src/types/portal/src/server/plugins/nav-utils.d.ts +19 -0
  297. package/src/types/portal/src/server/plugins/portal-config/types.d.ts +23 -0
  298. package/src/types/portal/src/server/plugins/sidebars/index.d.ts +16 -0
  299. package/src/types/portal/src/server/plugins/versions/index.d.ts +15 -0
  300. package/src/types/portal/src/server/plugins/versions/types.d.ts +23 -0
  301. package/src/types/portal/src/server/plugins/versions/utils.d.ts +10 -0
  302. package/src/types/portal/src/server/store.d.ts +101 -0
  303. package/src/types/portal/src/server/utils/async.d.ts +5 -0
  304. package/src/types/portal/src/server/utils/crypto.d.ts +3 -0
  305. package/src/types/portal/src/server/utils/fs.d.ts +3 -0
  306. package/src/types/portal/src/server/utils/index.d.ts +6 -0
  307. package/src/types/portal/src/server/utils/paths.d.ts +16 -0
  308. package/src/types/portal/src/server/utils/reporter/formatter.d.ts +11 -0
  309. package/src/types/portal/src/server/utils/reporter/reporter.d.ts +17 -0
  310. package/src/types/portal/src/server/utils/watcher.d.ts +16 -0
  311. package/src/types/portal/src/server/utils/yaml.d.ts +1 -0
  312. package/src/types/portal/src/shared/constants.d.ts +8 -0
  313. package/src/types/portal/src/shared/types.d.ts +77 -0
  314. package/src/types/portal/src/shared/urls.d.ts +7 -0
  315. package/src/types/portal/src/shared/utils.d.ts +10 -0
  316. package/src/ui/AlertIcon.tsx +110 -0
  317. package/src/ui/Arrow/Arrow.tsx +36 -0
  318. package/src/ui/Background.tsx +16 -0
  319. package/src/ui/Box.tsx +39 -0
  320. package/src/ui/Button.tsx +19 -0
  321. package/src/ui/Dropdown.tsx +132 -0
  322. package/src/ui/Flex.tsx +21 -0
  323. package/src/ui/Jumbotron.tsx +57 -0
  324. package/src/ui/Tiles/ThinTile.tsx +151 -0
  325. package/src/ui/Tiles/TileHeader.ts +13 -0
  326. package/src/ui/Tiles/TileText.tsx +12 -0
  327. package/src/ui/Tiles/WideTile.tsx +138 -0
  328. package/src/ui/Typography.tsx +167 -0
  329. package/src/ui/UniversalLink.tsx +100 -0
  330. package/src/ui/index.tsx +12 -0
  331. package/src/utils/__tests__/ClipboardService.test.ts +1 -1
  332. package/src/utils/__tests__/css-variables.test.ts +1 -1
  333. package/src/utils/__tests__/highlight.test.ts +1 -1
  334. package/src/utils/__tests__/jsonToHtml.test.ts +1 -1
  335. package/src/utils/__tests__/media-css.test.ts +1 -1
  336. package/src/utils/__tests__/theme-helpers.test.ts +1 -1
  337. package/src/utils/getNavbarElement.ts +10 -0
  338. package/src/utils/isUrl.ts +42 -0
  339. package/src/utils/replaceHashInColor.ts +3 -0
  340. package/ui/AlertIcon.d.ts +9 -0
  341. package/ui/AlertIcon.js +45 -0
  342. package/ui/Arrow/Arrow.d.ts +7 -0
  343. package/ui/Arrow/Arrow.js +42 -0
  344. package/ui/Background.d.ts +7 -0
  345. package/ui/Background.js +16 -0
  346. package/ui/Box.d.ts +6 -0
  347. package/ui/Box.js +16 -0
  348. package/ui/Button.d.ts +7 -0
  349. package/ui/Button.js +27 -0
  350. package/ui/Dropdown.d.ts +8 -0
  351. package/ui/Dropdown.js +54 -0
  352. package/ui/Flex.d.ts +10 -0
  353. package/ui/Flex.js +31 -0
  354. package/ui/Jumbotron.d.ts +18 -0
  355. package/ui/Jumbotron.js +44 -0
  356. package/ui/Tiles/ThinTile.d.ts +21 -0
  357. package/ui/Tiles/ThinTile.js +98 -0
  358. package/ui/Tiles/TileHeader.d.ts +5 -0
  359. package/ui/Tiles/TileHeader.js +15 -0
  360. package/ui/Tiles/TileText.d.ts +5 -0
  361. package/ui/Tiles/TileText.js +15 -0
  362. package/ui/Tiles/WideTile.d.ts +7 -0
  363. package/ui/Tiles/WideTile.js +93 -0
  364. package/ui/Typography.d.ts +110 -0
  365. package/ui/Typography.js +137 -0
  366. package/ui/UniversalLink.d.ts +17 -0
  367. package/ui/UniversalLink.js +62 -0
  368. package/ui/index.d.ts +10 -0
  369. package/ui/index.js +30 -0
  370. package/utils/getNavbarElement.d.ts +1 -0
  371. package/utils/getNavbarElement.js +14 -0
  372. package/utils/isUrl.d.ts +12 -0
  373. package/utils/isUrl.js +35 -0
  374. package/utils/replaceHashInColor.d.ts +1 -0
  375. package/utils/replaceHashInColor.js +6 -0
@@ -0,0 +1,54 @@
1
+ import styled from 'styled-components';
2
+
3
+ interface SidebarProps {
4
+ opened?: boolean;
5
+ animate?: boolean;
6
+ }
7
+
8
+ export default styled.aside.attrs(() => ({
9
+ 'data-component-name': 'Sidebar/Sidebar',
10
+ }))<SidebarProps>`
11
+ border-right: 1px solid var(--sidebar-right-line-color);
12
+ position: fixed;
13
+ left: 0;
14
+ right: 0;
15
+ bottom: 0;
16
+ z-index: 2;
17
+ background: var(--sidebar-background-color);
18
+ font-size: var(--sidebar-font-size);
19
+ font-family: var(--sidebar-font-family);
20
+ color: var(--sidebar-text-color);
21
+ top: var(--navbar-height);
22
+ height: calc(100vh - var(--navbar-height));
23
+ display: flex;
24
+ flex-direction: column;
25
+ width: 100%;
26
+ -webkit-font-smoothing: antialiased;
27
+
28
+ ${({ opened, animate }) => `
29
+ opacity: ${opened ? '1' : '0'};
30
+ pointer-events: ${opened ? 'auto' : 'none'};
31
+
32
+ & > * {
33
+ transform: ${opened ? 'translate(0, 0)' : 'translate(0, 40px)'};
34
+ transition: ${animate ? 'transform 0.65s ease, opacity 0.25s ease;' : 'none'};
35
+ }
36
+ `};
37
+
38
+ ${({ theme }) => theme.mediaQueries.medium} {
39
+ position: sticky;
40
+ pointer-events: auto;
41
+ display: flex;
42
+ opacity: 1;
43
+ flex-shrink: 0;
44
+ width: var(--sidebar-width);
45
+
46
+ & > * {
47
+ transform: none;
48
+ }
49
+ }
50
+
51
+ ${({ theme }) => theme.mediaQueries.large} {
52
+ transform: none;
53
+ }
54
+ `;
@@ -0,0 +1,30 @@
1
+ import React from 'react';
2
+ import styled from 'styled-components';
3
+
4
+ import Sidebar from '@theme/Sidebar/Sidebar';
5
+ import { useMobileMenu } from '@theme/hooks/useMobileMenu';
6
+ import MobileSidebarButton from '@theme/Sidebar/MobileSidebarButton';
7
+ import MenuContainer from '@theme/Sidebar/MenuContainer';
8
+
9
+ interface SidebarLayoutProps {
10
+ versions: React.ReactNode;
11
+ menu: React.ReactNode;
12
+ }
13
+
14
+ export default function SidebarLayout({ versions, menu }: SidebarLayoutProps): JSX.Element {
15
+ const [isOpen, setIsOpen] = useMobileMenu();
16
+ const toggleMenu = () => setIsOpen(!isOpen);
17
+
18
+ return (
19
+ <Wrapper data-component-name="Sidebar/SidebarLayout">
20
+ <MobileSidebarButton opened={isOpen} onClick={toggleMenu} />
21
+
22
+ <Sidebar animate={true} opened={isOpen}>
23
+ {versions}
24
+ <MenuContainer>{menu}</MenuContainer>
25
+ </Sidebar>
26
+ </Wrapper>
27
+ );
28
+ }
29
+
30
+ const Wrapper = styled.div``;
@@ -0,0 +1,7 @@
1
+ import ItemState from '@theme/Sidebar/types/ItemState';
2
+
3
+ export default interface DrilldownMenuProps {
4
+ back: () => void;
5
+ item: ItemState;
6
+ prevActiveItem?: ItemState;
7
+ }
@@ -0,0 +1,11 @@
1
+ import NavItem from '@theme/Sidebar/types/NavItem';
2
+ import { MenuStyle } from '@theme/Sidebar/types/MenuStyle';
3
+
4
+ interface ItemState extends NavItem {
5
+ items: ItemState[];
6
+ active: boolean;
7
+ hasActiveSubItem: boolean;
8
+ menuStyle?: MenuStyle;
9
+ }
10
+
11
+ export default ItemState;
@@ -0,0 +1,6 @@
1
+ import ItemState from '@theme/Sidebar/types/ItemState';
2
+
3
+ export default interface MenuItemProps {
4
+ item: ItemState;
5
+ activeItem?: ItemState;
6
+ }
@@ -0,0 +1,4 @@
1
+ //TODO: make default export
2
+ export enum MenuStyle {
3
+ Drilldown = 'drilldown',
4
+ }
@@ -0,0 +1,27 @@
1
+ import { MenuStyle } from '@theme/Sidebar/types/MenuStyle';
2
+
3
+ export default interface NavItem {
4
+ label?: string;
5
+ sublabel?: string;
6
+ icon?: string;
7
+ link?: string;
8
+ type?: string;
9
+ httpVerb?: string;
10
+ expanded?: string;
11
+ selectFirstItemOnExpand?: boolean;
12
+ pageId?: string;
13
+ redocPrevLink?: string;
14
+ redocPrevLabel?: string;
15
+ redocNextLink?: string;
16
+ redocNextLabel?: string;
17
+ redocFakePage?: boolean;
18
+ redocInfoPageId?: string;
19
+ target?: string;
20
+ external?: boolean;
21
+ items?: NavItem[];
22
+ permission?: string;
23
+ menuStyle?: MenuStyle;
24
+ separatorLine?: boolean;
25
+ version?: string;
26
+ default?: boolean;
27
+ }
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import { ComponentStory, ComponentMeta } from '@storybook/react';
3
3
 
4
- import { SidebarLogo } from './SidebarLogo';
4
+ import { SidebarLogo } from '@theme/SidebarLogo';
5
5
 
6
6
  export default {
7
7
  title: 'SidebarLogo',
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import { render } from '@testing-library/react';
3
3
 
4
- import { SidebarLogo } from '../SidebarLogo';
4
+ import { SidebarLogo } from '@theme/SidebarLogo';
5
5
 
6
6
  describe('SidebarLogo', () => {
7
7
  it('renders', () => {
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import { ComponentStory, ComponentMeta } from '@storybook/react';
3
3
 
4
- import { SourceCode } from './SourceCode';
4
+ import { SourceCode } from '@theme/SourceCode';
5
5
 
6
6
  export default {
7
7
  title: 'SourceCode',
@@ -1,8 +1,12 @@
1
1
  import React from 'react';
2
2
 
3
- import { highlight } from '../utils/highlight';
4
- import { SampleControls, SampleControlsWrap, PreformattedCodeBlock } from '../SamplesPanelControls';
5
- import { CopyButtonWrapper } from '../CopyButton';
3
+ import { highlight } from '@theme/utils';
4
+ import {
5
+ SampleControls,
6
+ SampleControlsWrap,
7
+ PreformattedCodeBlock,
8
+ } from '@theme/SamplesPanelControls';
9
+ import { CopyButtonWrapper } from '@theme/CopyButton';
6
10
 
7
11
  export interface SourceCodeProps {
8
12
  lang: string;
@@ -1,8 +1,9 @@
1
1
  import React from 'react';
2
2
 
3
- import { SourceCode } from '../SourceCode';
4
3
  import { renderWithTheme } from '../../../tests/utils';
5
4
 
5
+ import { SourceCode } from '@theme/SourceCode';
6
+
6
7
  describe('SourceCode', () => {
7
8
  it('renders without copy button', () => {
8
9
  const { container } = renderWithTheme(
@@ -0,0 +1,112 @@
1
+ import React, { useRef } from 'react';
2
+ import styled from 'styled-components';
3
+
4
+ import { useFullHeight } from '@theme/hooks/useFullHeight';
5
+ import { useActiveHeading } from '@theme/hooks/useActiveHeading';
6
+ import { MdHeading } from '@theme/types/portal';
7
+
8
+ interface TableOfContentProps {
9
+ headings?: Array<MdHeading | null> | null | undefined;
10
+ contentWrapper: HTMLDivElement | null;
11
+ tocMaxDepth: number;
12
+ }
13
+
14
+ export default function TableOfContent(props: TableOfContentProps): JSX.Element | null {
15
+ const { headings, tocMaxDepth } = props;
16
+
17
+ const sidebar = useRef<HTMLDivElement | null>(null);
18
+ useFullHeight(sidebar);
19
+ const activeHeadingId = useActiveHeading(props.contentWrapper);
20
+
21
+ if (headings && headings.length === 1 && headings[0]?.depth === 1) {
22
+ return null;
23
+ }
24
+ if (!headings?.length) {
25
+ return null;
26
+ }
27
+
28
+ return (
29
+ <>
30
+ {headings && (
31
+ <TableOfContentMenu data-component-name="TableOfContent/TableOfContent">
32
+ <TableOfContentItems ref={sidebar}>
33
+ <TocHeader>On this page</TocHeader>
34
+ {headings.map((heading: MdHeading | null, idx: number) => {
35
+ // TODO: not sure about !heading
36
+ if (!heading) {
37
+ return null;
38
+ }
39
+ if (idx === 0 && heading.depth === 1) {
40
+ return null;
41
+ }
42
+ if (heading.depth && heading.depth > tocMaxDepth) {
43
+ return null;
44
+ }
45
+ const href = '#' + heading.id;
46
+ return (
47
+ <MenuItem
48
+ key={href}
49
+ depth={heading.depth || 0}
50
+ href={href}
51
+ className={activeHeadingId === heading.id ? 'active' : ''}
52
+ dangerouslySetInnerHTML={{ __html: heading.value || '' }}
53
+ data-cy={`toc-${heading.value}`}
54
+ />
55
+ );
56
+ })}
57
+ </TableOfContentItems>
58
+ </TableOfContentMenu>
59
+ )}
60
+ </>
61
+ );
62
+ }
63
+
64
+ const TocHeader = styled.div`
65
+ font-size: 0.8em;
66
+ padding: 10px 15px;
67
+ font-weight: bold;
68
+ text-transform: uppercase;
69
+ `;
70
+
71
+ const MenuItem = styled.a<{ depth: number }>`
72
+ display: block;
73
+ color: var(--color-text-main);
74
+ cursor: pointer;
75
+ font-size: 0.8em;
76
+ padding: 10px 15px;
77
+ padding-left: ${({ depth }) => (depth - 1) * 15}px;
78
+ transition: background-color 0.3s, color 0.3s;
79
+ text-decoration: none;
80
+ word-break: break-word;
81
+ font-family: var(--font-family-h);
82
+ :hover,
83
+ &.active {
84
+ color: var(--sidebar-text-active-color);
85
+ background-color: var(--sidebar-text-active-background-color);
86
+ }
87
+ :empty {
88
+ padding: 0;
89
+ }
90
+ `;
91
+
92
+ const TableOfContentMenu = styled.aside`
93
+ font-size: 1rem;
94
+ background-color: transparent;
95
+ flex-shrink: 0;
96
+ display: none !important;
97
+ font-family: var(--font-family-primary);
98
+
99
+ ${({ theme }) => theme.mediaQueries.medium} {
100
+ width: var(--toc-width);
101
+ display: block !important;
102
+ }
103
+ `;
104
+
105
+ const TableOfContentItems = styled.div`
106
+ position: sticky;
107
+ top: calc(var(--navbar-height) + 20px);
108
+ max-height: calc(100vh - var(--navbar-height) - 20px);
109
+ border-left: 1px solid var(--color-border-light);
110
+ overflow-y: auto;
111
+ width: var(--toc-width); ;
112
+ `;
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import { ComponentStory, ComponentMeta } from '@storybook/react';
3
3
 
4
- import { Tooltip } from './Tooltip';
4
+ import { Tooltip } from '@theme/Tooltip';
5
5
 
6
6
  export default {
7
7
  title: 'Tooltip',
@@ -2,7 +2,7 @@ import type { PropsWithChildren } from 'react';
2
2
  import React, { useCallback, useEffect, memo } from 'react';
3
3
  import styled, { css } from 'styled-components';
4
4
 
5
- import { useControl } from '../hooks';
5
+ import { useControl } from '@theme/hooks';
6
6
 
7
7
  export interface TooltipProps {
8
8
  tip: string;
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import { render, fireEvent } from '@testing-library/react';
3
3
 
4
- import { Tooltip } from '../Tooltip';
4
+ import { Tooltip } from '@theme/Tooltip';
5
5
 
6
6
  describe('Tooltip', () => {
7
7
  it('renders closed', () => {
@@ -129,6 +129,11 @@ export const GlobalStyle = createGlobalStyle`
129
129
  --sidebar-spacing-horizontal: var(--sidebar-spacing-unit);
130
130
  --sidebar-spacing-vertical: var(--sidebar-spacing-unit);
131
131
 
132
+ --sidebar-margin-left: calc(var(--sidebar-spacing-unit) * 2);
133
+ --sidebar-spacing-offset-top: calc(var(--sidebar-spacing-unit) * 2);
134
+ --sidebar-spacing-offset-left: calc(var(--sidebar-spacing-unit) * 2);
135
+ --sidebar-spacing-offset-nesting: calc(var(--sidebar-spacing-unit) * 2);
136
+
132
137
  --sidebar-word-break: 'inherit';
133
138
  --sidebar-separator-label-color: var(--sidebar-item-color);
134
139
  --sidebar-separator-line-color: #dadada;
@@ -309,7 +314,7 @@ export const GlobalStyle = createGlobalStyle`
309
314
  --panels-background-color: #fff;
310
315
 
311
316
  --samples-panel-gap: 20px;
312
- --samples-panel-width: 37.5%;
317
+ --samples-panel-width: 50%;
313
318
  --samples-panel-block-background-color: #fff;
314
319
  --samples-panel-background-color: #52606d;
315
320
  --samples-panel-callback-background-color: var(--samples-panel-callback-background-color);
@@ -371,7 +376,9 @@ export const GlobalStyle = createGlobalStyle`
371
376
 
372
377
  --field-name-font-size: var(--code-font-size);
373
378
  --field-name-font-family: var(--code-font-family);
374
- --field-enum-background-color: var(--inline-code-background-color);
379
+ --field-example-color: var(--color-content);
380
+ --field-example-background-color: var(--inline-code-background-color);
381
+ --field-constraint-color: var(--color-content);
375
382
  --field-constraint-background-color: var(--inline-code-background-color);
376
383
 
377
384
  /*
@@ -413,38 +420,7 @@ export const GlobalStyle = createGlobalStyle`
413
420
  /* Floating action button */
414
421
  --fab-color: #0065FB;
415
422
  --fab-background-color: #f2f2f2;
416
-
417
-
418
- /**
419
- * Sidebar
420
- * */
421
- --sidebar-spacing-unit: 8px;
422
- --sidebar-margin-left: calc(var(--sidebar-spacing-unit) * 2);
423
- --sidebar-padding-horizontal: var(--sidebar-spacing-unit);
424
- --sidebar-padding-vertical: var(--sidebar-spacing-unit);
425
-
426
- --sidebar-spacing-padding-vertical: var(--sidebar-spacing-unit);
427
- --sidebar-spacing-padding-horizontal: var(--sidebar-spacing-unit);
428
- --sidebar-spacing-offset-top: calc(var(--sidebar-spacing-unit) * 2);
429
- --sidebar-spacing-offset-left: calc(var(--sidebar-spacing-unit) * 2);
430
- --sidebar-spacing-offset-nesting: calc(var(--sidebar-spacing-unit) * 2);
431
-
432
- --sidebar-chevron-size: var(--sidebar-spacing-unit);
433
- --sidebar-chevron-color: var(--sidebar-text-color);
434
-
435
- --sidebar-border-radius: 4px;
436
- --sidebar-background-color: #fff;
437
- --sidebar-font-size: var(--font-size-base);
438
- --sidebar-font-family: var(--font-family-primary);
439
- --sidebar-right-line-color: var(--color-border-light);
440
- --sidebar-text-color: var(--color-text-main);
441
- --sidebar-text-active-color: var(--sidebar-text-color);
442
- --sidebar-text-active-background-color: var(--color-border-light);
443
- --sidebar-width: 285px;
444
-
445
- --sidebar-separator-line-color: #dadada;
446
- --sidebar-separator-label-color: var(--sidebar-text-color);
447
-
423
+
448
424
  /**
449
425
  * Portal Logo
450
426
  * */
@@ -1,3 +1,7 @@
1
1
  export * from './useControl';
2
2
  export * from './useMount';
3
3
  export * from './useUnmount';
4
+ export * from './useActiveHeading';
5
+ export * from './useActiveSectionId';
6
+ export * from './useFullHeight';
7
+ export * from './useNavbarHeight';
@@ -0,0 +1,46 @@
1
+ import { useState, useMemo, useCallback, useEffect } from 'react';
2
+
3
+ export type UseActiveHeadingReturnType = string | undefined;
4
+
5
+ export function useActiveHeading(contentElement: Element | null): UseActiveHeadingReturnType {
6
+ const [heading, setHeading] = useState<string | undefined>(undefined);
7
+
8
+ const headings: NodeListOf<HTMLElement> | null = useMemo(
9
+ () => contentElement && contentElement.querySelectorAll<HTMLElement>('.heading-anchor'),
10
+ [contentElement],
11
+ );
12
+
13
+ const handler = useCallback(
14
+ // throttle(
15
+ () => {
16
+ if (!headings) {
17
+ return;
18
+ }
19
+
20
+ for (let i = 0; i < headings.length; i++) {
21
+ if (headings[i].offsetTop > window.scrollY) {
22
+ const newHeading = i === 0 ? undefined : headings[i - 1].getAttribute('id') || undefined;
23
+ setHeading(newHeading);
24
+ return;
25
+ }
26
+ }
27
+ },
28
+ [headings],
29
+ );
30
+
31
+ useEffect(() => {
32
+ if (typeof window === 'undefined' || !headings || !headings.length) {
33
+ return undefined;
34
+ }
35
+
36
+ window.addEventListener('scroll', handler, {
37
+ capture: false,
38
+ });
39
+
40
+ handler();
41
+
42
+ return () => window.removeEventListener('scroll', handler);
43
+ }, [handler, headings]);
44
+
45
+ return heading;
46
+ }
@@ -0,0 +1,53 @@
1
+ import { useEffect, useState, useMemo } from 'react';
2
+ import throttle from 'lodash.throttle';
3
+
4
+ import { useNavbarHeight } from '@theme/hooks/useNavbarHeight';
5
+ import type { MenuProps } from '@theme/types/portal';
6
+
7
+ export type UseActiveSectionIdReturnType = string;
8
+
9
+ export function useActiveSectionId(
10
+ location: MenuProps['location'],
11
+ hasOverviewPage: boolean,
12
+ ): UseActiveSectionIdReturnType {
13
+ const [itemId, setItemId] = useState<string>('');
14
+ const navbarHeight = useNavbarHeight(location);
15
+ const scrollListener = useMemo(
16
+ () =>
17
+ throttle(() => {
18
+ const sections = document.querySelectorAll('[data-section-id]');
19
+ if (sections.length < 2) {
20
+ setItemId('');
21
+ return;
22
+ }
23
+ for (let i = 0; i < sections.length; i++) {
24
+ const section = sections[i];
25
+ const rect = section.getBoundingClientRect();
26
+ if (rect.y < navbarHeight + 5 && rect.bottom > navbarHeight + 5) {
27
+ // use small padding 5px to account for rounding
28
+ setItemId(section.getAttribute('data-section-id') || '');
29
+ return;
30
+ }
31
+ }
32
+ if (hasOverviewPage) {
33
+ setItemId('');
34
+ } else {
35
+ setItemId((sections[0] && sections[0].getAttribute('data-section-id')) || '');
36
+ }
37
+ }, 150),
38
+ [navbarHeight, hasOverviewPage],
39
+ );
40
+
41
+ useEffect(() => {
42
+ window.addEventListener('scroll', scrollListener, { capture: false });
43
+ setTimeout(() => {
44
+ scrollListener();
45
+ }, 0);
46
+
47
+ return () => {
48
+ window.removeEventListener('scroll', scrollListener); // TODO: add throttle
49
+ };
50
+ }, [location, navbarHeight, scrollListener]);
51
+
52
+ return itemId;
53
+ }
@@ -0,0 +1,47 @@
1
+ import { useCallback, useEffect, MutableRefObject, useMemo } from 'react';
2
+ import throttle from 'lodash.throttle';
3
+
4
+ export function useFullHeight(element: MutableRefObject<HTMLElement | null>): void {
5
+ const handler = useCallback(() => {
6
+ if (!element.current) {
7
+ return;
8
+ }
9
+
10
+ const footer = document.querySelector('footer');
11
+ if (!footer) {
12
+ return;
13
+ }
14
+
15
+ const elementTop = element.current.getBoundingClientRect().top;
16
+ const footerOffset = footer.offsetTop - window.scrollY - elementTop;
17
+ if (footerOffset > window.innerHeight) {
18
+ element.current.style.maxHeight = `${window.innerHeight - elementTop}px`;
19
+ } else {
20
+ element.current.style.maxHeight = `${footerOffset}px`;
21
+ }
22
+ }, [element]);
23
+
24
+ const throttledHandler = useMemo(() => throttle(handler, 150), [handler]);
25
+
26
+ useEffect(() => {
27
+ if (typeof window === 'undefined' || !element.current) {
28
+ return () => {
29
+ // nope
30
+ };
31
+ }
32
+
33
+ window.addEventListener('scroll', throttledHandler, {
34
+ capture: false,
35
+ });
36
+ window.addEventListener('resize', throttledHandler, {
37
+ capture: false,
38
+ });
39
+
40
+ handler();
41
+
42
+ return () => {
43
+ window.removeEventListener('scroll', throttledHandler);
44
+ window.removeEventListener('resize', throttledHandler);
45
+ };
46
+ }, [throttledHandler, element, handler]);
47
+ }
@@ -0,0 +1,11 @@
1
+ import { Dispatch, SetStateAction, useEffect, useState } from 'react';
2
+ import { useHistory } from 'react-router-dom';
3
+
4
+ export function useMobileMenu(initialState = false): [boolean, Dispatch<SetStateAction<boolean>>] {
5
+ const { location } = useHistory();
6
+ const [isOpen, setIsOpen] = useState(initialState);
7
+
8
+ useEffect(() => setIsOpen(false), [location.pathname]);
9
+
10
+ return [isOpen, setIsOpen];
11
+ }
@@ -0,0 +1,24 @@
1
+ import { useEffect, useState } from 'react';
2
+ import type { Location } from 'history';
3
+
4
+ import { getNavbarElement } from '@theme/utils/getNavbarElement';
5
+
6
+ export type UseNavbarHeightReturnType = number;
7
+
8
+ export function useNavbarHeight(location: Location): UseNavbarHeightReturnType {
9
+ const [height, setHeight] = useState(0);
10
+
11
+ useEffect(() => {
12
+ const navbar = getNavbarElement();
13
+ setHeight((navbar && navbar.clientHeight) || 0);
14
+ }, [location.pathname]);
15
+
16
+ useEffect(() => {
17
+ window.requestAnimationFrame(() => {
18
+ const navbar = getNavbarElement();
19
+ setHeight((navbar && navbar.clientHeight) || 0);
20
+ });
21
+ }, []);
22
+
23
+ return height;
24
+ }
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import { Story, ComponentMeta } from '@storybook/react';
3
3
 
4
- import { ShelfIcon, ShelfIconProps } from './ShelfIcon';
4
+ import { ShelfIcon, ShelfIconProps } from '@theme/icons/ShelfIcon';
5
5
 
6
6
  export default {
7
7
  title: 'Icons/ShelfIcon',
@@ -1,7 +1,7 @@
1
1
  import * as React from 'react';
2
2
  import styled, { css } from 'styled-components';
3
3
 
4
- import { getCssColorVariable } from '../../utils/css-variables';
4
+ import { getCssColorVariable } from '@theme/utils';
5
5
 
6
6
  const directionMap = {
7
7
  right: '0deg',
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import { render } from '@testing-library/react';
3
3
 
4
- import { ShelfIcon } from '../ShelfIcon';
4
+ import { ShelfIcon } from '@theme/icons/ShelfIcon';
5
5
 
6
6
  describe('ShelfIcon', () => {
7
7
  it('renders right', () => {
package/src/index.ts CHANGED
@@ -12,3 +12,4 @@ export * from './icons';
12
12
  export * from './hooks';
13
13
  export * from './utils';
14
14
  export * from './globalStyle';
15
+ export * from './OperationBadge';
@@ -0,0 +1,8 @@
1
+ import type { ResolvedNavLinkItem } from '@theme/types/portal';
2
+
3
+ export function usePageData(): {
4
+ prevPage: ResolvedNavLinkItem | null;
5
+ nextPage: ResolvedNavLinkItem | null;
6
+ } {
7
+ return { prevPage: null, nextPage: null };
8
+ }
@@ -0,0 +1,3 @@
1
+ export type ActiveItem<T> = T;
2
+ export type SearchDocument = any;
3
+ export type OperationParameter = any;