@redocly/theme 0.18.2 → 0.18.3-patch.1

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 (420) hide show
  1. package/lib/I18n/LanguagePicker.d.ts +7 -2
  2. package/lib/I18n/LanguagePicker.js +11 -3
  3. package/lib/I18n/index.d.ts +1 -0
  4. package/lib/I18n/index.js +15 -0
  5. package/lib/I18n/styledVariables.d.ts +1 -0
  6. package/lib/I18n/styledVariables.js +39 -0
  7. package/lib/components/Breadcrumbs/Breadcrumb.d.ts +1 -0
  8. package/lib/components/Breadcrumbs/Breadcrumb.js +4 -3
  9. package/lib/components/Breadcrumbs/Breadcrumbs.js +9 -2
  10. package/lib/components/Breadcrumbs/index.d.ts +1 -0
  11. package/lib/components/Breadcrumbs/index.js +1 -0
  12. package/lib/components/Breadcrumbs/styledVariables.d.ts +1 -0
  13. package/lib/components/Breadcrumbs/styledVariables.js +19 -0
  14. package/lib/components/Button/Button.d.ts +6 -3
  15. package/lib/components/Button/Button.js +41 -41
  16. package/lib/components/Button/index.d.ts +1 -0
  17. package/lib/components/Button/index.js +1 -0
  18. package/lib/components/Button/styledVariables.d.ts +1 -0
  19. package/lib/components/Button/styledVariables.js +107 -0
  20. package/lib/components/Catalog/Catalog.d.ts +1 -0
  21. package/lib/components/Catalog/Catalog.js +100 -97
  22. package/lib/components/Catalog/CatalogCard.js +73 -58
  23. package/lib/components/Catalog/index.d.ts +4 -3
  24. package/lib/components/Catalog/index.js +4 -3
  25. package/lib/components/Catalog/styledVariables.d.ts +1 -0
  26. package/lib/components/Catalog/styledVariables.js +96 -0
  27. package/lib/components/Catalog/useCatalog.js +12 -1
  28. package/lib/components/CodeBlock/CodeBlockContainer.js +38 -10
  29. package/lib/components/CodeBlock/CodeBlockControlButton.d.ts +3 -4
  30. package/lib/components/CodeBlock/CodeBlockControlButton.js +5 -19
  31. package/lib/components/CodeBlock/CodeBlockControls.js +14 -7
  32. package/lib/components/CodeBlock/index.d.ts +1 -0
  33. package/lib/components/CodeBlock/index.js +1 -0
  34. package/lib/components/CodeBlock/styledVariables.d.ts +1 -0
  35. package/lib/components/CodeBlock/styledVariables.js +92 -0
  36. package/lib/components/ColorModeSwitcher/ColorModeSwitcher.js +2 -1
  37. package/lib/components/Dropdown/Dropdown.d.ts +9 -3
  38. package/lib/components/Dropdown/Dropdown.js +7 -4
  39. package/lib/components/Dropdown/index.d.ts +1 -0
  40. package/lib/components/Dropdown/index.js +1 -0
  41. package/lib/components/Dropdown/styledVariables.d.ts +1 -0
  42. package/lib/components/Dropdown/styledVariables.js +30 -0
  43. package/lib/components/EditPageButton/EditPageButton.js +7 -2
  44. package/lib/components/Feedback/Comment.js +5 -0
  45. package/lib/components/Feedback/Feedback.js +13 -3
  46. package/lib/components/Feedback/Rating.js +5 -1
  47. package/lib/components/Feedback/Reasons.js +6 -1
  48. package/lib/components/Feedback/Sentiment.js +11 -2
  49. package/lib/components/Feedback/Thumbs.js +4 -4
  50. package/lib/components/Filter/Filter.js +104 -78
  51. package/lib/components/Filter/FilterContent.d.ts +11 -0
  52. package/lib/components/Filter/FilterContent.js +59 -0
  53. package/lib/components/Filter/FilterPopover.d.ts +11 -0
  54. package/lib/components/Filter/FilterPopover.js +109 -0
  55. package/lib/components/Filter/FilterTag.d.ts +7 -0
  56. package/lib/components/Filter/FilterTag.js +33 -0
  57. package/lib/components/Filter/FilterTags.d.ts +7 -0
  58. package/lib/components/Filter/FilterTags.js +29 -0
  59. package/lib/components/Filter/index.d.ts +2 -0
  60. package/lib/components/Filter/index.js +2 -0
  61. package/lib/components/Filter/styledVariables.d.ts +1 -0
  62. package/lib/components/Filter/styledVariables.js +112 -0
  63. package/lib/components/Footer/CustomFooterNavItem.js +1 -1
  64. package/lib/components/Footer/Footer.d.ts +4 -3
  65. package/lib/components/Footer/Footer.js +27 -10
  66. package/lib/components/Footer/FooterColumn.d.ts +3 -3
  67. package/lib/components/Footer/FooterColumn.js +54 -63
  68. package/lib/components/Footer/FooterColumns.js +6 -4
  69. package/lib/components/Footer/FooterCopyright.js +11 -6
  70. package/lib/components/Footer/index.d.ts +1 -0
  71. package/lib/components/Footer/index.js +1 -0
  72. package/lib/components/Footer/styledVariables.d.ts +1 -0
  73. package/lib/components/Footer/styledVariables.js +61 -0
  74. package/lib/components/Image/Image.d.ts +9 -0
  75. package/lib/components/Image/Image.js +31 -0
  76. package/lib/components/Image/index.d.ts +1 -0
  77. package/lib/components/{Tags → Image}/index.js +1 -1
  78. package/lib/components/JsonViewer/JsonViewer.js +2 -2
  79. package/lib/components/LastUpdated/index.d.ts +1 -0
  80. package/lib/components/{OperationBadge → LastUpdated}/index.js +1 -1
  81. package/lib/components/LastUpdated/styledVariables.d.ts +1 -0
  82. package/lib/components/LastUpdated/styledVariables.js +11 -0
  83. package/lib/components/Markdown/MarkdownWrapper.js +2 -4
  84. package/lib/components/Markdown/Mermaid.js +1 -1
  85. package/lib/components/Markdown/index.d.ts +1 -0
  86. package/lib/components/Markdown/index.js +1 -0
  87. package/lib/components/Markdown/styledVariables.d.ts +2 -0
  88. package/lib/components/Markdown/styledVariables.js +221 -0
  89. package/lib/components/Menu/Menu.js +5 -7
  90. package/lib/components/Menu/MenuGroup.js +12 -7
  91. package/lib/components/Menu/MenuItemLabel.js +9 -13
  92. package/lib/components/Menu/MenuLinkItem.js +2 -1
  93. package/lib/components/Menu/MobileMenu.js +20 -25
  94. package/lib/components/Menu/MobileMenuGroup.js +1 -1
  95. package/lib/components/Menu/index.d.ts +1 -0
  96. package/lib/components/Menu/index.js +1 -0
  97. package/lib/components/Menu/styledVariables.d.ts +2 -0
  98. package/lib/components/Menu/styledVariables.js +101 -0
  99. package/lib/components/Navbar/Navbar.js +10 -11
  100. package/lib/components/Navbar/NavbarItem.d.ts +1 -1
  101. package/lib/components/Navbar/NavbarItem.js +14 -6
  102. package/lib/components/Navbar/NavbarMenu.js +2 -2
  103. package/lib/components/Navbar/index.d.ts +1 -0
  104. package/lib/components/Navbar/index.js +1 -0
  105. package/lib/components/Navbar/styledVariables.d.ts +1 -0
  106. package/lib/components/Navbar/styledVariables.js +43 -0
  107. package/lib/components/NavbarLogo/NavbarLogo.d.ts +4 -1
  108. package/lib/components/NavbarLogo/NavbarLogo.js +14 -5
  109. package/lib/components/NavbarLogo/index.d.ts +1 -0
  110. package/lib/components/NavbarLogo/index.js +1 -0
  111. package/lib/components/NavbarLogo/styledVariables.d.ts +1 -0
  112. package/lib/components/NavbarLogo/styledVariables.js +18 -0
  113. package/lib/components/OpenApiDocs/DevOnboardingTryItSecurity.js +2 -2
  114. package/lib/components/OpenApiDocs/Dropdown.js +3 -3
  115. package/lib/components/Panel/PanelHeader.js +1 -0
  116. package/lib/components/Panel/PanelHeaderTitle.js +0 -4
  117. package/lib/components/Panel/index.d.ts +1 -0
  118. package/lib/components/Panel/index.js +1 -0
  119. package/lib/components/Panel/styledVariables.d.ts +2 -0
  120. package/lib/components/Panel/styledVariables.js +481 -0
  121. package/lib/components/Product/index.d.ts +1 -0
  122. package/lib/components/Product/index.js +1 -0
  123. package/lib/components/Product/styledVariables.d.ts +2 -0
  124. package/lib/components/Product/styledVariables.js +41 -0
  125. package/lib/components/Profile/LoginLink.js +5 -3
  126. package/lib/components/{Navbar → Profile}/MobileUserProfile.js +18 -26
  127. package/lib/components/Profile/Profile.js +3 -22
  128. package/lib/components/Profile/UserProfile.js +25 -9
  129. package/lib/components/Profile/UserProfileData.d.ts +9 -0
  130. package/lib/components/Profile/UserProfileData.js +35 -0
  131. package/lib/components/Profile/index.d.ts +1 -0
  132. package/lib/components/Profile/index.js +15 -0
  133. package/lib/components/Profile/styledVariables.d.ts +2 -0
  134. package/lib/components/Profile/styledVariables.js +55 -0
  135. package/lib/components/Search/CancelSearch.js +2 -14
  136. package/lib/components/Search/ProductTag.js +8 -8
  137. package/lib/components/Search/RecentSearches.js +5 -5
  138. package/lib/components/Search/Search.js +0 -2
  139. package/lib/components/Search/SearchIcon.js +2 -2
  140. package/lib/components/Search/SearchItem.js +14 -17
  141. package/lib/components/Search/SearchTrigger.js +4 -5
  142. package/lib/components/Search/ShortcutKey.js +1 -5
  143. package/lib/components/Search/SuggestedPages.js +3 -3
  144. package/lib/components/Search/index.d.ts +1 -0
  145. package/lib/components/Search/index.js +1 -0
  146. package/lib/components/Search/styledVariables.d.ts +1 -0
  147. package/lib/components/Search/styledVariables.js +98 -0
  148. package/lib/components/Select/Select.d.ts +10 -3
  149. package/lib/components/Select/Select.js +9 -6
  150. package/lib/components/Select/index.d.ts +1 -0
  151. package/lib/components/Select/index.js +1 -0
  152. package/lib/components/Select/styledVariables.d.ts +1 -0
  153. package/lib/components/Select/styledVariables.js +33 -0
  154. package/lib/components/Separator/Separator.js +11 -3
  155. package/lib/components/Separator/SeparatorItem.js +5 -9
  156. package/lib/components/Separator/SeparatorLine.js +7 -3
  157. package/lib/components/Sidebar/ApiCallItem.d.ts +2 -6
  158. package/lib/components/Sidebar/ApiCallItem.js +17 -13
  159. package/lib/components/Sidebar/FooterWrapper.js +3 -4
  160. package/lib/components/Sidebar/HeaderWrapper.js +2 -2
  161. package/lib/components/Sidebar/SidebarLayout.js +2 -1
  162. package/lib/components/Sidebar/VersionPicker.d.ts +1 -1
  163. package/lib/components/Sidebar/index.d.ts +1 -0
  164. package/lib/components/Sidebar/index.js +1 -0
  165. package/lib/components/Sidebar/styledVariables.d.ts +2 -0
  166. package/lib/components/Sidebar/styledVariables.js +215 -0
  167. package/lib/components/Sidebar/types.d.ts +1 -0
  168. package/lib/components/SidebarActions/CollapseSidebarButton.js +41 -1
  169. package/lib/components/SidebarActions/SidebarActions.js +15 -3
  170. package/lib/components/SidebarActions/styled.js +29 -21
  171. package/lib/components/TableOfContent/TableOfContent.js +4 -4
  172. package/lib/components/TableOfContent/index.d.ts +1 -0
  173. package/lib/components/TableOfContent/index.js +1 -0
  174. package/lib/components/TableOfContent/styledVariables.d.ts +1 -0
  175. package/lib/components/TableOfContent/styledVariables.js +46 -0
  176. package/lib/components/Tabs/Tab.js +1 -1
  177. package/lib/components/Tabs/Tabs.js +1 -1
  178. package/lib/components/Tag/Tag.d.ts +17 -0
  179. package/lib/components/Tag/Tag.js +39 -0
  180. package/lib/components/Tag/index.d.ts +2 -0
  181. package/lib/components/Tag/index.js +19 -0
  182. package/lib/components/Tag/styledVariables.d.ts +1 -0
  183. package/lib/components/Tag/styledVariables.js +130 -0
  184. package/lib/components/Tiles/ThinTile.js +7 -5
  185. package/lib/components/Tiles/TileText.js +1 -1
  186. package/lib/components/Tiles/WideTile.js +10 -8
  187. package/lib/components/Tooltip/index.d.ts +1 -0
  188. package/lib/components/Tooltip/index.js +1 -0
  189. package/lib/components/Tooltip/styledVariables.d.ts +1 -0
  190. package/lib/components/Tooltip/styledVariables.js +21 -0
  191. package/lib/components/Typography/SectionHeader.js +2 -2
  192. package/lib/components/Typography/Typography.js +1 -1
  193. package/lib/components/index.d.ts +1 -2
  194. package/lib/components/index.js +1 -2
  195. package/lib/config.d.ts +84 -2
  196. package/lib/config.js +16 -2
  197. package/lib/globalStyle.js +599 -1982
  198. package/lib/icons/ArrowIcon/ArrowIcon.js +1 -1
  199. package/lib/icons/CheckboxIcon/CheckboxIcon.d.ts +6 -0
  200. package/lib/icons/CheckboxIcon/CheckboxIcon.js +28 -0
  201. package/lib/icons/CheckboxIcon/index.d.ts +1 -0
  202. package/lib/icons/CheckboxIcon/index.js +6 -0
  203. package/lib/icons/CollapseIcon/CollapseIcon.d.ts +1 -1
  204. package/lib/icons/CollapseIcon/CollapseIcon.js +5 -5
  205. package/lib/icons/ColorModeIcon/ColorModeIcon.js +1 -1
  206. package/lib/icons/CopyIcon/CopyIcon.d.ts +1 -2
  207. package/lib/icons/CopyIcon/CopyIcon.js +4 -4
  208. package/lib/icons/DeselectIcon/DeselectIcon.d.ts +1 -1
  209. package/lib/icons/DeselectIcon/DeselectIcon.js +5 -5
  210. package/lib/icons/ErrorIcon/ErrorIcon.d.ts +4 -0
  211. package/lib/icons/ErrorIcon/ErrorIcon.js +14 -0
  212. package/lib/icons/ErrorIcon/index.d.ts +1 -0
  213. package/lib/icons/ErrorIcon/index.js +18 -0
  214. package/lib/icons/ExpandIcon/ExpandIcon.d.ts +1 -2
  215. package/lib/icons/ExpandIcon/ExpandIcon.js +5 -5
  216. package/lib/icons/FileIcon/FileIcon.d.ts +1 -2
  217. package/lib/icons/FileIcon/FileIcon.js +2 -2
  218. package/lib/icons/LanguageIcon/LanguageIcon.d.ts +4 -0
  219. package/lib/icons/LanguageIcon/LanguageIcon.js +14 -0
  220. package/lib/icons/LanguageIcon/index.d.ts +1 -0
  221. package/lib/icons/LanguageIcon/index.js +18 -0
  222. package/lib/icons/PlusIcon/PlusIcon.d.ts +5 -0
  223. package/lib/icons/PlusIcon/PlusIcon.js +16 -0
  224. package/lib/icons/PlusIcon/index.d.ts +1 -0
  225. package/lib/icons/PlusIcon/index.js +18 -0
  226. package/lib/icons/PointingArrowIcon/PointingArrowIcon.d.ts +4 -0
  227. package/lib/icons/PointingArrowIcon/PointingArrowIcon.js +15 -0
  228. package/lib/icons/PointingArrowIcon/index.d.ts +1 -0
  229. package/lib/icons/PointingArrowIcon/index.js +18 -0
  230. package/lib/icons/ReportIcon/ReportIcon.d.ts +1 -2
  231. package/lib/icons/ReportIcon/ReportIcon.js +3 -3
  232. package/lib/icons/SelectIcon/SelectIcon.d.ts +1 -2
  233. package/lib/icons/SelectIcon/SelectIcon.js +5 -5
  234. package/lib/icons/index.d.ts +4 -0
  235. package/lib/icons/index.js +4 -0
  236. package/lib/layouts/Forbidden.js +4 -0
  237. package/lib/layouts/NotFound.js +4 -0
  238. package/lib/types/portal/src/shared/types/nav.d.ts +5 -0
  239. package/lib/ui/ArrowBack.js +0 -1
  240. package/lib/ui/Burger.js +1 -1
  241. package/lib/ui/Dropdown.js +7 -7
  242. package/lib/ui/Jumbotron.js +1 -1
  243. package/lib/ui/darkColors.js +217 -84
  244. package/lib/utils/index.d.ts +1 -0
  245. package/lib/utils/index.js +1 -0
  246. package/lib/utils/tags-parser.d.ts +1 -0
  247. package/lib/utils/tags-parser.js +10 -0
  248. package/package.json +2 -2
  249. package/src/I18n/LanguagePicker.tsx +29 -4
  250. package/src/I18n/index.ts +1 -0
  251. package/src/I18n/styledVariables.ts +36 -0
  252. package/src/components/Breadcrumbs/Breadcrumb.tsx +10 -3
  253. package/src/components/Breadcrumbs/Breadcrumbs.tsx +14 -2
  254. package/src/components/Breadcrumbs/index.ts +1 -0
  255. package/src/components/Breadcrumbs/styledVariables.ts +16 -0
  256. package/src/components/Button/Button.tsx +53 -47
  257. package/src/components/Button/index.ts +1 -0
  258. package/src/components/Button/styledVariables.ts +104 -0
  259. package/src/components/Catalog/Catalog.tsx +124 -117
  260. package/src/components/Catalog/CatalogCard.tsx +86 -60
  261. package/src/components/Catalog/index.ts +4 -0
  262. package/src/components/Catalog/styledVariables.ts +93 -0
  263. package/src/components/Catalog/useCatalog.ts +13 -1
  264. package/src/components/CodeBlock/CodeBlockContainer.tsx +17 -9
  265. package/src/components/CodeBlock/CodeBlockControlButton.tsx +6 -19
  266. package/src/components/CodeBlock/CodeBlockControls.tsx +14 -6
  267. package/src/components/CodeBlock/index.ts +1 -0
  268. package/src/components/CodeBlock/styledVariables.ts +89 -0
  269. package/src/components/ColorModeSwitcher/ColorModeSwitcher.tsx +3 -1
  270. package/src/components/Dropdown/Dropdown.tsx +14 -5
  271. package/src/components/Dropdown/index.ts +1 -0
  272. package/src/components/Dropdown/styledVariables.ts +27 -0
  273. package/src/components/EditPageButton/EditPageButton.tsx +7 -2
  274. package/src/components/Feedback/Comment.tsx +5 -0
  275. package/src/components/Feedback/Feedback.tsx +13 -3
  276. package/src/components/Feedback/Rating.tsx +5 -1
  277. package/src/components/Feedback/Reasons.tsx +6 -1
  278. package/src/components/Feedback/Sentiment.tsx +15 -2
  279. package/src/components/Feedback/Thumbs.tsx +4 -4
  280. package/src/components/Filter/Filter.tsx +130 -94
  281. package/src/components/Filter/FilterContent.tsx +86 -0
  282. package/src/components/Filter/FilterPopover.tsx +140 -0
  283. package/src/components/Filter/FilterTag.tsx +37 -0
  284. package/src/components/Filter/FilterTags.tsx +39 -0
  285. package/src/components/Filter/index.ts +2 -0
  286. package/src/components/Filter/styledVariables.ts +109 -0
  287. package/src/components/Footer/CustomFooterNavItem.tsx +1 -1
  288. package/src/components/Footer/Footer.tsx +32 -10
  289. package/src/components/Footer/FooterColumn.tsx +81 -62
  290. package/src/components/Footer/FooterColumns.tsx +6 -4
  291. package/src/components/Footer/FooterCopyright.tsx +13 -7
  292. package/src/components/Footer/index.ts +1 -0
  293. package/src/components/Footer/styledVariables.ts +58 -0
  294. package/src/components/Image/Image.tsx +47 -0
  295. package/src/components/Image/index.ts +1 -0
  296. package/src/components/JsonViewer/JsonViewer.tsx +2 -2
  297. package/src/components/LastUpdated/index.ts +1 -0
  298. package/src/components/LastUpdated/styledVariables.ts +8 -0
  299. package/src/components/Markdown/MarkdownWrapper.tsx +2 -4
  300. package/src/components/Markdown/Mermaid.tsx +1 -1
  301. package/src/components/Markdown/index.ts +1 -0
  302. package/src/components/Markdown/styledVariables.ts +219 -0
  303. package/src/components/Menu/Menu.tsx +5 -7
  304. package/src/components/Menu/MenuGroup.tsx +15 -7
  305. package/src/components/Menu/MenuItemLabel.tsx +9 -13
  306. package/src/components/Menu/MenuLinkItem.tsx +6 -1
  307. package/src/components/Menu/MobileMenu.tsx +20 -25
  308. package/src/components/Menu/MobileMenuGroup.tsx +1 -1
  309. package/src/components/Menu/index.ts +1 -0
  310. package/src/components/Menu/styledVariables.ts +99 -0
  311. package/src/components/Navbar/Navbar.tsx +10 -11
  312. package/src/components/Navbar/NavbarItem.tsx +16 -4
  313. package/src/components/Navbar/NavbarMenu.tsx +2 -2
  314. package/src/components/Navbar/index.ts +1 -0
  315. package/src/components/Navbar/styledVariables.ts +40 -0
  316. package/src/components/NavbarLogo/NavbarLogo.tsx +25 -10
  317. package/src/components/NavbarLogo/index.ts +1 -0
  318. package/src/components/NavbarLogo/styledVariables.ts +15 -0
  319. package/src/components/OpenApiDocs/DevOnboardingTryItSecurity.tsx +1 -2
  320. package/src/components/OpenApiDocs/Dropdown.tsx +3 -3
  321. package/src/components/Panel/PanelHeader.ts +1 -0
  322. package/src/components/Panel/PanelHeaderTitle.ts +0 -4
  323. package/src/components/Panel/index.ts +1 -0
  324. package/src/components/Panel/styledVariables.ts +479 -0
  325. package/src/components/Product/index.ts +1 -0
  326. package/src/components/Product/styledVariables.ts +39 -0
  327. package/src/components/Profile/LoginLink.tsx +9 -3
  328. package/src/components/{Navbar → Profile}/MobileUserProfile.tsx +24 -31
  329. package/src/components/Profile/Profile.tsx +1 -24
  330. package/src/components/Profile/UserProfile.tsx +25 -9
  331. package/src/components/Profile/UserProfileData.tsx +40 -0
  332. package/src/components/Profile/index.ts +1 -0
  333. package/src/components/Profile/styledVariables.ts +53 -0
  334. package/src/components/Search/CancelSearch.tsx +2 -15
  335. package/src/components/Search/ProductTag.tsx +8 -8
  336. package/src/components/Search/RecentSearches.tsx +5 -5
  337. package/src/components/Search/Search.tsx +0 -2
  338. package/src/components/Search/SearchIcon.tsx +10 -5
  339. package/src/components/Search/SearchItem.tsx +26 -31
  340. package/src/components/Search/SearchTrigger.tsx +4 -5
  341. package/src/components/Search/ShortcutKey.tsx +1 -5
  342. package/src/components/Search/SuggestedPages.tsx +3 -3
  343. package/src/components/Search/index.ts +1 -0
  344. package/src/components/Search/styledVariables.ts +95 -0
  345. package/src/components/Select/Select.tsx +20 -7
  346. package/src/components/Select/index.ts +1 -0
  347. package/src/components/Select/styledVariables.ts +30 -0
  348. package/src/components/Separator/Separator.tsx +17 -3
  349. package/src/components/Separator/SeparatorItem.tsx +5 -9
  350. package/src/components/Separator/SeparatorLine.tsx +7 -3
  351. package/src/components/Sidebar/ApiCallItem.tsx +17 -13
  352. package/src/components/Sidebar/FooterWrapper.tsx +3 -4
  353. package/src/components/Sidebar/HeaderWrapper.tsx +2 -2
  354. package/src/components/Sidebar/SidebarLayout.tsx +6 -1
  355. package/src/components/Sidebar/index.ts +1 -0
  356. package/src/components/Sidebar/styledVariables.ts +213 -0
  357. package/src/components/Sidebar/types.ts +1 -0
  358. package/src/components/SidebarActions/CollapseSidebarButton.tsx +22 -2
  359. package/src/components/SidebarActions/SidebarActions.tsx +18 -3
  360. package/src/components/SidebarActions/styled.tsx +29 -30
  361. package/src/components/TableOfContent/TableOfContent.tsx +4 -3
  362. package/src/components/TableOfContent/index.ts +1 -0
  363. package/src/components/TableOfContent/styledVariables.ts +43 -0
  364. package/src/components/Tabs/Tab.tsx +1 -1
  365. package/src/components/Tabs/Tabs.tsx +1 -1
  366. package/src/components/Tag/Tag.tsx +63 -0
  367. package/src/components/Tag/index.ts +2 -0
  368. package/src/components/Tag/styledVariables.ts +127 -0
  369. package/src/components/Tiles/ThinTile.tsx +7 -5
  370. package/src/components/Tiles/TileText.tsx +1 -1
  371. package/src/components/Tiles/WideTile.tsx +10 -8
  372. package/src/components/Tooltip/index.ts +1 -0
  373. package/src/components/Tooltip/styledVariables.ts +18 -0
  374. package/src/components/Typography/SectionHeader.ts +2 -2
  375. package/src/components/Typography/Typography.ts +1 -1
  376. package/src/components/index.ts +1 -2
  377. package/src/config.ts +20 -2
  378. package/src/globalStyle.ts +595 -1999
  379. package/src/icons/ArrowIcon/ArrowIcon.tsx +1 -1
  380. package/src/icons/CheckboxIcon/CheckboxIcon.tsx +64 -0
  381. package/src/icons/CheckboxIcon/index.ts +1 -0
  382. package/src/icons/CollapseIcon/CollapseIcon.tsx +5 -5
  383. package/src/icons/ColorModeIcon/ColorModeIcon.tsx +1 -1
  384. package/src/icons/CopyIcon/CopyIcon.tsx +4 -5
  385. package/src/icons/DeselectIcon/DeselectIcon.tsx +5 -5
  386. package/src/icons/ErrorIcon/ErrorIcon.tsx +15 -0
  387. package/src/icons/ErrorIcon/index.ts +1 -0
  388. package/src/icons/ExpandIcon/ExpandIcon.tsx +5 -6
  389. package/src/icons/FileIcon/FileIcon.tsx +2 -3
  390. package/src/icons/LanguageIcon/LanguageIcon.tsx +15 -0
  391. package/src/icons/LanguageIcon/index.ts +1 -0
  392. package/src/icons/PlusIcon/PlusIcon.tsx +25 -0
  393. package/src/icons/PlusIcon/index.ts +1 -0
  394. package/src/icons/PointingArrowIcon/PointingArrowIcon.tsx +16 -0
  395. package/src/icons/PointingArrowIcon/index.ts +1 -0
  396. package/src/icons/ReportIcon/ReportIcon.tsx +3 -4
  397. package/src/icons/SelectIcon/SelectIcon.tsx +5 -6
  398. package/src/icons/index.ts +4 -0
  399. package/src/layouts/Forbidden.tsx +4 -0
  400. package/src/layouts/NotFound.tsx +4 -0
  401. package/src/types/portal/src/shared/types/nav.ts +5 -0
  402. package/src/ui/ArrowBack.tsx +0 -1
  403. package/src/ui/Burger.tsx +1 -1
  404. package/src/ui/Dropdown.tsx +7 -7
  405. package/src/ui/Jumbotron.tsx +1 -1
  406. package/src/ui/darkColors.tsx +217 -84
  407. package/src/utils/index.ts +1 -0
  408. package/src/utils/tags-parser.ts +8 -0
  409. package/lib/components/OperationBadge/OperationBadge.d.ts +0 -6
  410. package/lib/components/OperationBadge/OperationBadge.js +0 -68
  411. package/lib/components/OperationBadge/index.d.ts +0 -1
  412. package/lib/components/Tags/Tags.d.ts +0 -5
  413. package/lib/components/Tags/Tags.js +0 -32
  414. package/lib/components/Tags/index.d.ts +0 -1
  415. package/src/components/Catalog/index.tsx +0 -3
  416. package/src/components/OperationBadge/OperationBadge.ts +0 -62
  417. package/src/components/OperationBadge/index.ts +0 -1
  418. package/src/components/Tags/Tags.tsx +0 -36
  419. package/src/components/Tags/index.ts +0 -1
  420. /package/lib/components/{Navbar → Profile}/MobileUserProfile.d.ts +0 -0
@@ -0,0 +1,140 @@
1
+ import React from 'react';
2
+ import styled from 'styled-components';
3
+ import { Filter, FilterControls } from '@theme';
4
+
5
+ import { FilterContent, FilterItems } from '@theme/components/Filter/FilterContent';
6
+ import { useTranslate } from '@portal/hooks';
7
+ import type { ResolvedFilter } from '@theme/types/portal/src/shared/types/catalog';
8
+
9
+ interface FilterPopoverProps {
10
+ setIsAddingFilter: (value: boolean) => void;
11
+ filters: ResolvedFilter[];
12
+ }
13
+
14
+ export function FilterPopover({ setIsAddingFilter, filters }: FilterPopoverProps) {
15
+ const [filterTerm, setFilterTerm] = React.useState('');
16
+ const filteredFilters = filters
17
+ .map((filter) => {
18
+ const options = filter.options.filter((option) => option.value.includes(filterTerm));
19
+ return options.length
20
+ ? {
21
+ ...filter,
22
+ filteredOptions: options,
23
+ }
24
+ : null;
25
+ })
26
+ .filter(Boolean) as ResolvedFilter[];
27
+
28
+ const translationKeys = {
29
+ placeholder: 'theme.catalog.filters.placeholder',
30
+ done: 'theme.catalog.filters.done',
31
+ };
32
+ const { translate } = useTranslate();
33
+
34
+ return (
35
+ <FilterPopoverWrapper>
36
+ <FilterPopoverHeader>
37
+ <FilterPopoverHeaderLabel>Add Filter</FilterPopoverHeaderLabel>
38
+ <FilterPopoverHeaderButton onClick={() => setIsAddingFilter(false)}>
39
+ {translate(translationKeys.placeholder, 'Done')}
40
+ </FilterPopoverHeaderButton>
41
+ </FilterPopoverHeader>
42
+ <FilterContent
43
+ setFilterTerm={setFilterTerm}
44
+ filters={filters}
45
+ filterTerm={filterTerm}
46
+ isMobile
47
+ />
48
+ <FilterControls>
49
+ <StyledInput
50
+ placeholder={translate(translationKeys.placeholder, 'Type to filter...')}
51
+ value={filterTerm}
52
+ onChange={(e) => setFilterTerm(e.target.value)}
53
+ />
54
+ </FilterControls>
55
+ <FilterItems>
56
+ {filteredFilters.map((filter, idx) => (
57
+ <Filter filter={filter} key={filter.property + '-' + idx} />
58
+ ))}
59
+ </FilterItems>
60
+ </FilterPopoverWrapper>
61
+ );
62
+ }
63
+
64
+ const FilterPopoverWrapper = styled.aside<{ isActiveInMobileMode?: boolean }>`
65
+ position: absolute;
66
+ top: 0;
67
+ z-index: var(--z-index-popover);
68
+ height: 100vh;
69
+ overflow: auto;
70
+ transition: height 0.2s ease-in-out;
71
+ width: 100%;
72
+ background-color: var(--filter-popover-background-color);
73
+ display: block;
74
+
75
+ ${({ theme }) => theme.mediaQueries.small} {
76
+ display: none;
77
+ }
78
+ `;
79
+
80
+ const FilterPopoverHeader = styled.div`
81
+ height: var(--navbar-height);
82
+ padding: var(--filter-popover-header-padding);
83
+ display: grid;
84
+ align-items: center;
85
+ grid-template-columns: 1fr 1fr 1fr;
86
+ border-bottom: 1px solid var(--filter-popover-header-border-color);
87
+ background-color: var(--filter-popover-header-background-color);
88
+ `;
89
+
90
+ const FilterPopoverHeaderLabel = styled.div`
91
+ color: var(--filter-popover-header-label-color);
92
+ justify-self: center;
93
+ grid-column-start: 2;
94
+ font-size: var(--filter-popover-header-label-font-size);
95
+ font-weight: var(--filter-popover-header-label-font-weight);
96
+ `;
97
+
98
+ const FilterPopoverHeaderButton = styled.div.attrs({
99
+ 'data-cy': 'FilterPopover/DoneButton',
100
+ })`
101
+ color: var(--filter-popover-header-button-color);
102
+ justify-self: end;
103
+ font-size: var(--filter-popover-header-button-font-size);
104
+ font-weight: var(--filter-popover-header-button-font-weight);
105
+ height: var(--filter-popover-header-button-height);
106
+ line-height: var(--filter-popover-header-button-height);
107
+ `;
108
+
109
+ export const StyledInput = styled.input.attrs({ 'data-cy': 'FilterPopover/Input' })`
110
+ border: var(--filter-input-border);
111
+ min-width: var(--filter-input-min-width);
112
+ width: 100%;
113
+ outline: none;
114
+ padding: var(--filter-input-padding);
115
+ border-radius: var(--filter-input-border-radius);
116
+ background-color: var(--filter-input-background-color);
117
+ color: var(--filter-input-color);
118
+ font-family: var(--filter-input-font-family);
119
+ font-size: var(--filter-input-font-size);
120
+ line-height: var(--filter-input-line-height);
121
+
122
+ &::placeholder {
123
+ opacity: var(--filter-input-placeholder-opacity);
124
+ color: var(--filter-input-placeholder-color);
125
+ }
126
+
127
+ &:hover {
128
+ color: var(--filter-input-hover-color);
129
+ border: var(--filter-input-hover-border);
130
+ }
131
+
132
+ &:focus {
133
+ color: var(--filter-input-focus-color);
134
+ border: var(--filter-input-focus-border);
135
+ }
136
+
137
+ &:-webkit-autofill {
138
+ background-color: var(--filter-input-background-color);
139
+ }
140
+ `;
@@ -0,0 +1,37 @@
1
+ import React from 'react';
2
+ import styled from 'styled-components';
3
+
4
+ import { ClearIcon } from '@theme/components/Search/ClearIcon';
5
+
6
+ interface FilterTagProps {
7
+ label: string;
8
+ onClick: () => void;
9
+ }
10
+
11
+ export function FilterTag({ label, onClick }: FilterTagProps) {
12
+ return (
13
+ <TagWrapper onClick={onClick}>
14
+ <TagLabel>{label}</TagLabel>
15
+ <ClearIcon />
16
+ </TagWrapper>
17
+ );
18
+ }
19
+
20
+ const TagWrapper = styled.div.attrs({ 'data-cy': 'Filter/FilterTag' })`
21
+ display: flex;
22
+ align-items: center;
23
+ white-space: nowrap;
24
+ cursor: pointer;
25
+ color: var(--filter-tag-color);
26
+ border-radius: var(--filter-tag-border-radius);
27
+ border: 1px solid var(--filter-tag-border-color);
28
+ background-color: var(--filter-tag-background-color);
29
+ padding: var(--filter-tag-padding);
30
+ font-size: var(--filter-tag-font-size);
31
+ font-weight: var(--filter-tag-font-weight);
32
+ margin: var(--filter-tag-margin);
33
+ `;
34
+
35
+ const TagLabel = styled.div`
36
+ margin: var(--filter-tag-label-margin);
37
+ `;
@@ -0,0 +1,39 @@
1
+ import React from 'react';
2
+ import styled from 'styled-components';
3
+
4
+ import type { ResolvedFilter } from '@theme/types/portal/src/shared/types/catalog';
5
+ import { FilterTag } from '@theme/components/Filter/FilterTag';
6
+
7
+ interface FilterTagsProps {
8
+ filters: ResolvedFilter[];
9
+ }
10
+
11
+ export function FilterTags({ filters }: FilterTagsProps) {
12
+ const selectedFilters: { filter: ResolvedFilter; selectedOption: string }[] = [];
13
+ filters.forEach((filter: ResolvedFilter & { selectedOptions: any }) => {
14
+ if (filter.selectedOptions?.size) {
15
+ for (let selectedOption of filter.selectedOptions) {
16
+ selectedFilters.push({
17
+ filter,
18
+ selectedOption,
19
+ });
20
+ }
21
+ }
22
+ });
23
+
24
+ return (
25
+ <FilterTagsWrapper>
26
+ {selectedFilters.map(({ filter, selectedOption }) => (
27
+ <FilterTag
28
+ key={`${filter.title}: ${selectedOption}`}
29
+ onClick={() => filter.toggleOption(selectedOption)}
30
+ label={`${filter.title}: ${selectedOption}`}
31
+ />
32
+ ))}
33
+ </FilterTagsWrapper>
34
+ );
35
+ }
36
+
37
+ const FilterTagsWrapper = styled.div`
38
+ display: flex;
39
+ `;
@@ -1 +1,3 @@
1
1
  export * from '@theme/components/Filter/Filter';
2
+ export * from '@theme/components/Filter/FilterContent';
3
+ export * from '@theme/components/Filter/styledVariables';
@@ -0,0 +1,109 @@
1
+ import { css } from 'styled-components';
2
+
3
+ export const filter = css`
4
+ /* === Filter === */
5
+ /**
6
+ * @tokens Filters
7
+ */
8
+ --filter-group-padding: var(--spacing-base) 0 0 0;
9
+
10
+ --filter-title-font-weight: var(--font-weight-bold);
11
+ --filter-title-font-size: var(--font-size-base);
12
+ --filter-title-margin: 0 0 var(--spacing-xxs) 0;
13
+
14
+ --filter-option-font-weight: var(--font-weight-regular);
15
+ --filter-option-font-size: var(--font-size-base);
16
+ --filter-option-margin: var(--spacing-xs) 0 0 0;
17
+
18
+ --filter-option-label-font-size: var(--font-size-base);
19
+ --filter-option-label-font-weight: var(--font-weight-regular);
20
+ --filter-option-label-margin: 0 var(--spacing-xs) 0 0;
21
+ --filter-option-label-color: var(--text-secondary);
22
+
23
+ --filter-option-count-height: 14px;
24
+ --filter-option-count-color: var(--text-description);
25
+ --filter-option-count-font-size: var(--spacing-sm);
26
+ --filter-option-count-font-weight: var(--font-weight-regular);
27
+ --filter-option-count-padding: 0px var(--spacing-xxs);
28
+ --filter-option-count-border-radius: var(--spacing-sm);
29
+ --filter-option-count-border-color: 1px solid var(--border-secondary);
30
+ --filter-option-count-background-color: var(--bg-raised);
31
+
32
+ --filter-content-border-color: var(--border-secondary);
33
+ --filter-content-items-padding: 0 var(--mobile-catalog-filter-padding-horizontal);
34
+ --filter-content-clear-button-margin: var(--spacing-base) auto 0 auto;
35
+ --filter-content-clear-button-width: calc(var(--spacing-unit) * 40);
36
+ --filter-controls-background-color: var(--bg-base);
37
+
38
+ --filter-popover-background-color: var(--bg-base);
39
+ --filter-popover-header-padding: var(--mobile-catalog-filter-padding-vertical) var(--mobile-catalog-filter-padding-horizontal);
40
+ --filter-popover-header-border-color: var(--border-secondary);
41
+ --filter-popover-header-background-color: var(--navbar-background-color);
42
+ --filter-popover-header-label-color: var(--navbar-text-color);
43
+ --filter-popover-header-label-font-size: var(--font-size-lg);
44
+ --filter-popover-header-label-font-weight: var(--font-weight-bold);
45
+ --filter-popover-header-button-color: var(--navbar-text-color);
46
+ --filter-popover-header-button-height: var(--control-height-base);
47
+ --filter-popover-header-button-font-size: var(--font-size-base);
48
+ --filter-popover-header-button-font-weight: var(--font-weight-regular);
49
+
50
+ --filter-tags-wrapper-padding: var(--spacing-xs) 0 var(--spacing-base) var(--spacing-base);
51
+ --filter-tag-color: var(--text-primary);
52
+ --filter-tag-border-radius: var(--spacing-sm);
53
+ --filter-tag-border-color: var(--border-primary);
54
+ --filter-tag-background-color: var(--bg-raised);
55
+ --filter-tag-padding: 0 var(--spacing-xs);
56
+ --filter-tag-font-size: var(--font-size-sm);
57
+ --filter-tag-font-weight: var(--font-weight-regular);
58
+ --filter-tag-margin: 0 var(--spacing-xxs) 0 0;
59
+ --filter-tag-label-margin: 0 var(--spacing-xxs) 0 0;
60
+
61
+ --filter-input-border: 1px solid var(--border-primary);
62
+ --filter-input-min-width: 200px;
63
+ --filter-input-padding: var(--input-padding);
64
+ --filter-input-border-radius: var(--input-border-radius);
65
+ --filter-input-background-color: var(--input-background-color);
66
+ --filter-input-color: var(--text-secondary);
67
+ --filter-input-font-family: var(--font-family-base);
68
+ --filter-input-font-size: var(--font-size-base);
69
+ --filter-input-line-height: var(--input-line-height);
70
+ --filter-input-placeholder-opacity: 0.6;
71
+ --filter-input-placeholder-color: var(--text-placeholder);
72
+ --filter-input-hover-color: var(--text-primary);
73
+ --filter-input-hover-border: 1px solid var(--border-primary);
74
+ --filter-input-focus-color: var(--text-primary);
75
+ --filter-input-focus-border: 1px solid var(--border-primary);
76
+
77
+ --filter-add-button-margin: 0 var(--spacing-sm) 0 0;
78
+ --filter-add-button-padding: 0;
79
+ --filter-add-button-font-size: var(--font-size-base);
80
+ --filter-add-button-font-weight: var(--font-weight-regular);
81
+
82
+ --filter-select-min-height: var(--control-height-base);
83
+ --filter-select-color: var(--text-primary);
84
+ --filter-select-border-color: var(--border-primary);
85
+ --filter-select-border-radius: calc(var(--spacing-unit) * 1.5);
86
+ --filter-select-padding: 0;
87
+ --filter-select-hover-border-color: var(--text-primary);
88
+ --filter-select-option-margin: 0;
89
+
90
+ --filter-date-picker-color: var(--text-primary);
91
+ --filter-date-picker-margin: 0 0 var(--spacing-xxs) 0;
92
+ --filter-date-picker-gap: var(--spacing-xs);
93
+ --filter-date-picker-width: 50px;
94
+ --filter-date-picker-tile-background: var(--color-blue-2);
95
+ --filter-date-picker-tile-color: var(--text-primary);
96
+ --filter-date-picker-tile-hover-background: var(--color-blue-3);
97
+ --filter-date-picker-tile-hover-color: var(--text-primary);
98
+ --filter-date-picker-input-width: var(--spacing-md);
99
+ --filter-date-picker-invalid-input-background: var(--bg-raised);
100
+ --filter-date-picker-button-padding: var(--spacing-xxs);
101
+ --filter-date-picker-icon-stroke: var(--text-secondary);
102
+ --filter-date-picker-icon-width: var(--spacing-sm);
103
+ --filter-date-picker-hover-icon-stroke: var(--text-primary);
104
+ --filter-date-picker-wrapper-border-color: var(--border-primary);
105
+ --filter-date-picker-wrapper-radius: calc(var(--spacing-unit) * 1.5);
106
+ --filter-date-picker-wrapper-padding: calc(var(--spacing-xxs) / 2) var(--spacing-xs);
107
+
108
+ // @tokens End
109
+ `;
@@ -25,7 +25,7 @@ const FooterItem = styled.li`
25
25
  display: inline-block;
26
26
  text-align: center;
27
27
  line-height: var(--line-height-base);
28
- font-size: var(--navbar-item-font-size);
28
+ font-size: var(--navbar-font-size);
29
29
  margin: calc(var(--spacing-unit) * 2) calc(var(--spacing-unit) * 3);
30
30
  font-weight: var(--font-weight-regular);
31
31
  `;
@@ -5,13 +5,15 @@ import { FooterColumns } from '@theme/components/Footer/FooterColumns';
5
5
  import { FooterCopyright } from '@theme/components/Footer/FooterCopyright';
6
6
  import { isEmptyArray } from '@theme/utils';
7
7
  import { useThemeConfig } from '@theme/hooks';
8
- import type { ResolvedNavItem } from '@theme/types/portal';
8
+ import type { LogoConfig, ResolvedNavItem } from '@theme/types/portal';
9
+ import { Flex } from '@theme/ui';
10
+ import { LogoContainer, NavbarLogo } from '@theme/components/NavbarLogo';
9
11
 
10
12
  export function Footer(): JSX.Element | null {
11
- const { footer } = useThemeConfig() || {};
13
+ const { footer, logo } = useThemeConfig() || {};
12
14
  const { items, copyrightText } = footer || {};
13
15
 
14
- if (isEmptyArray(items) || !copyrightText || footer?.hide) {
16
+ if (isEmptyArray(items) || footer?.hide) {
15
17
  return null;
16
18
  }
17
19
 
@@ -19,38 +21,58 @@ export function Footer(): JSX.Element | null {
19
21
  <FooterPresentationalComponent
20
22
  items={items as ResolvedNavItem[]}
21
23
  copyrightText={copyrightText}
24
+ logo={logo}
22
25
  />
23
26
  );
24
27
  }
25
28
 
26
29
  interface FooterPresentationalComponentProps {
27
30
  items: ResolvedNavItem[];
28
- copyrightText: string;
31
+ copyrightText?: string;
32
+ logo?: LogoConfig;
29
33
  className?: string;
30
34
  }
31
35
 
32
36
  export function FooterPresentationalComponent({
33
37
  items,
34
38
  copyrightText,
39
+ logo,
35
40
  className,
36
41
  }: FooterPresentationalComponentProps): JSX.Element | null {
37
42
  return (
38
43
  <FooterContainer data-component-name="Footer/Footer" className={className}>
39
- <FooterColumns columns={items as ResolvedNavItem[]} />
40
- <FooterCopyright copyrightText={copyrightText} />
44
+ <ColumnsSection>
45
+ {logo && <NavbarLogo logo={logo as Pick<LogoConfig, 'image' | 'link' | 'altText'>} />}
46
+ <FooterColumns columns={items as ResolvedNavItem[]} />
47
+ </ColumnsSection>
48
+ {copyrightText && <FooterCopyright copyrightText={copyrightText} />}
41
49
  </FooterContainer>
42
50
  );
43
51
  }
44
52
 
53
+ const ColumnsSection = styled(Flex)`
54
+ flex-direction: column;
55
+
56
+ ${({ theme }) => theme.mediaQueries.small} {
57
+ flex-direction: row;
58
+ }
59
+ `;
60
+
45
61
  const FooterContainer = styled.footer`
62
+ padding: var(--mobile-footer-padding-vertical) var(--mobile-footer-padding-horizontal);
63
+ border-top: 1px solid var(--footer-border-color);
46
64
  font-size: var(--footer-font-size);
47
65
  flex-shrink: 0;
48
66
  background-color: var(--footer-background-color);
49
67
  color: var(--footer-text-color);
50
- font-family: var(--footer-font-family);
51
68
  font-weight: var(--footer-font-weight);
52
- a,
53
- a:hover {
54
- color: var(--footer-text-color);
69
+
70
+ ${LogoContainer} {
71
+ display: var(--footer-logo-display);
72
+ margin: 0 var(--footer-logo-margin-right) var(--footer-logo-margin-bottom) 0;
73
+ }
74
+
75
+ ${({ theme }) => theme.mediaQueries.small} {
76
+ padding: var(--footer-padding-vertical) var(--footer-padding-horizontal);
55
77
  }
56
78
  `;
@@ -1,9 +1,11 @@
1
1
  import React from 'react';
2
- import styled, { css } from 'styled-components';
2
+ import styled from 'styled-components';
3
3
 
4
4
  import { Link } from '@portal/Link';
5
5
  import type { ResolvedNavItem } from '@theme/types/portal';
6
6
  import { useTranslate } from '@portal/hooks';
7
+ import { Image } from '@theme/components/Image/Image';
8
+ import { telemetry } from '@portal/telemetry';
7
9
 
8
10
  interface FooterColumnProps {
9
11
  column: ResolvedNavItem;
@@ -12,51 +14,58 @@ interface FooterColumnProps {
12
14
 
13
15
  export function FooterColumn({ column, className }: FooterColumnProps): JSX.Element {
14
16
  const { translate } = useTranslate();
15
- const hasIcon = column.items ? column.items.some((item) => !!item.icon) : false;
17
+ const { items = [] } = column;
18
+
19
+ const iconsOnly = items.every((item) => item.label === item.link && (item.icon || item.srcSet));
16
20
 
17
21
  return (
18
22
  <FooterColumnContainer data-component-name="Footer/FooterColumn" className={className}>
19
- <FooterColumnTitle withIconPadding={hasIcon}>
20
- {translate(column.labelTranslationKey, column.label)}
21
- </FooterColumnTitle>
22
- {column?.items?.map((columnItem, columnItemIndex) => {
23
- if (columnItem.type === 'error') {
24
- return null;
25
- }
26
-
27
- return columnItem.type === 'separator' ? (
28
- <FooterSeparator key={columnItem.label + '_' + columnItemIndex}>
29
- {translate(columnItem.labelTranslationKey, columnItem.label)}
30
- </FooterSeparator>
31
- ) : (
32
- <FooterLink
33
- key={columnItemIndex}
34
- to={columnItem.link}
35
- external={columnItem.external}
36
- target={columnItem.target}
37
- data-cy={columnItem.label}
38
- >
39
- <FooterLinkIcon url={columnItem.icon} withIconPadding={hasIcon} />
40
- {translate(columnItem.labelTranslationKey, columnItem.label)}
41
- </FooterLink>
42
- );
43
- })}
23
+ <FooterColumnTitle>{translate(column.labelTranslationKey, column.label)}</FooterColumnTitle>
24
+ <FooterColumnItems iconsOnly={iconsOnly}>
25
+ {items?.map((columnItem, columnItemIndex) => {
26
+ if (columnItem.type === 'error') {
27
+ return null;
28
+ }
29
+
30
+ return columnItem.type === 'separator' ? (
31
+ <FooterSeparator key={columnItem.label + '_' + columnItemIndex}>
32
+ {translate(columnItem.labelTranslationKey, columnItem.label)}
33
+ </FooterSeparator>
34
+ ) : (
35
+ <FooterLink
36
+ key={columnItemIndex}
37
+ to={columnItem.link}
38
+ external={columnItem.external}
39
+ target={columnItem.target}
40
+ data-cy={columnItem.label}
41
+ iconsOnly={iconsOnly}
42
+ onClick={() => telemetry.send('footer_item_clicked', {})}
43
+ >
44
+ {columnItem.icon || columnItem.srcSet ? (
45
+ <FooterLinkIcon>
46
+ <Image src={columnItem.icon} srcSet={columnItem.srcSet} />
47
+ </FooterLinkIcon>
48
+ ) : null}
49
+ {!iconsOnly && translate(columnItem.labelTranslationKey, columnItem.label)}
50
+ </FooterLink>
51
+ );
52
+ })}
53
+ </FooterColumnItems>
44
54
  </FooterColumnContainer>
45
55
  );
46
56
  }
47
57
 
48
- const FooterColumnTitle = styled.p<{ withIconPadding: boolean }>`
58
+ const FooterColumnTitle = styled.p`
49
59
  display: inline-block;
50
60
  font-weight: var(--footer-title-font-weight);
51
61
  font-size: var(--footer-title-font-size);
52
- margin-bottom: var(--footer-title-margin-vertical);
53
- ${({ withIconPadding }) =>
54
- withIconPadding &&
55
- css`
56
- padding-left: calc(var(--footer-item-icon-width) + var(--footer-item-icon-margin-right));
57
- `}
58
- font-family: var(--footer-font-family);
62
+ margin-top: 0;
63
+ margin-bottom: var(--mobile-footer-title-margin-bottom);
59
64
  color: var(--footer-title-text-color);
65
+
66
+ ${({ theme }) => theme.mediaQueries.small} {
67
+ margin-bottom: var(--footer-title-margin-bottom);
68
+ }
60
69
  `;
61
70
 
62
71
  const FooterSeparator = styled.div`
@@ -64,46 +73,56 @@ const FooterSeparator = styled.div`
64
73
  margin: 10px 0 5px 0;
65
74
  font-size: 0.75em;
66
75
  text-transform: uppercase;
67
- font-family: var(--footer-font-family);
68
76
  `;
69
77
 
70
78
  const FooterColumnContainer = styled.div`
71
79
  display: flex;
72
80
  flex-direction: column;
73
- text-align: left;
74
- margin: var(--footer-column-margin-horizontal) var(--footer-column-margin-vertical);
75
- width: var(--footer-column-width);
81
+ text-align: center;
76
82
  word-break: break-word;
83
+ flex: 1;
84
+ margin: 0 0 var(--mobile-footer-column-margin-bottom) 0;
85
+ min-width: var(--footer-column-min-width);
86
+
87
+ ${({ theme }) => theme.mediaQueries.small} {
88
+ text-align: left;
89
+ margin: 0 var(--footer-column-margin-horizontal);
90
+ border-right: 1px solid var(--footer-dividing-border-color);
91
+ margin-bottom: var(--footer-column-margin-bottom);
92
+ }
77
93
  `;
78
94
 
79
- const FooterLink = styled(Link)`
80
- font-weight: var(--font-weight-bold);
81
- padding: var(--footer-item-padding-vertical) var(--footer-item-padding-horizontal);
95
+ export const FooterLinkIcon = styled.div`
96
+ display: inline-flex;
97
+ width: var(--footer-item-icon-width);
98
+ height: var(--footer-item-icon-height);
99
+ margin-right: var(--footer-item-icon-margin-right);
100
+ vertical-align: middle;
101
+ border: 1px solid var(--footer-item-icon-border-color);
102
+ border-radius: var(--footer-item-icon-border-radius);
103
+ padding: var(--footer-item-icon-padding);
104
+ `;
105
+
106
+ const FooterLink = styled(Link)<{ iconsOnly: boolean }>`
107
+ padding: var(--footer-link-padding-vertical) var(--footer-link-padding-horizontal);
82
108
  color: var(--footer-link-text-color);
83
109
  text-decoration: none;
84
110
  &:hover {
85
111
  color: var(--footer-link-hover-color);
86
112
  }
113
+
114
+ &:last-child ${FooterLinkIcon} {
115
+ margin-right: ${({ iconsOnly }) => (iconsOnly ? '0' : 'var(--footer-item-icon-margin-right)')};
116
+ }
87
117
  `;
88
118
 
89
- export const FooterLinkIcon = styled.i<{ url?: string; withIconPadding: boolean }>`
90
- ${({ withIconPadding, url }) =>
91
- withIconPadding &&
92
- !url &&
93
- css`
94
- padding-left: calc(var(--footer-item-icon-width) + var(--footer-item-icon-margin-right));
95
- `}
96
- ${({ url }) =>
97
- url &&
98
- css`
99
- background-image: url('${url}');
100
- background-size: contain;
101
- background-position: center;
102
- background-repeat: no-repeat;
103
- width: var(--footer-item-icon-width);
104
- height: var(--footer-item-icon-height);
105
- display: inline-block;
106
- margin-right: var(--footer-item-icon-margin-right);
107
- vertical-align: middle;
108
- `}
119
+ export const FooterColumnItems = styled.div<{ iconsOnly: boolean }>`
120
+ display: flex;
121
+ flex-wrap: wrap;
122
+ justify-content: center;
123
+ flex-direction: ${(props) => (props.iconsOnly ? 'row' : 'column')};
124
+
125
+ ${({ theme }) => theme.mediaQueries.small} {
126
+ justify-content: flex-start;
127
+ }
109
128
  `;
@@ -26,15 +26,15 @@ export function FooterColumns({ columns, className }: FooterColumnsProps): JSX.E
26
26
  }
27
27
 
28
28
  export const FooterColumnsContainer = styled.div`
29
- padding: var(--footer-padding-vertical) var(--footer-padding-horizontal);
30
29
  display: flex;
31
30
  flex-direction: column;
32
31
  justify-content: center;
33
32
  max-width: var(--footer-container-max-width);
34
- margin: 0 auto;
33
+ margin: 0;
34
+ flex: 1;
35
35
 
36
36
  ${({ theme }) => theme.mediaQueries.small} {
37
- padding: 5.625em 20px 3.9375em 20px;
37
+ margin: 0 auto;
38
38
  }
39
39
 
40
40
  ${({ theme }) => theme.mediaQueries.print} {
@@ -47,8 +47,10 @@ export const FooterRow = styled.div`
47
47
  display: flex;
48
48
  flex-wrap: wrap;
49
49
  justify-content: flex-start;
50
+ flex-direction: column;
50
51
 
51
52
  ${({ theme }) => theme.mediaQueries.small} {
52
- justify-content: space-evenly;
53
+ justify-content: space-between;
54
+ flex-direction: row;
53
55
  }
54
56
  `;