@redocly/theme 0.1.21 → 0.1.22

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.
@@ -12,7 +12,7 @@ export interface ButtonProps {
12
12
  size?: ButtonSize;
13
13
  extraClass?: string;
14
14
  to?: string;
15
- onClick?: () => void;
15
+ onClick?: (e?: any) => void;
16
16
  }
17
17
  export declare const baseButtonStyles: FlattenSimpleInterpolation;
18
18
  export declare const Button: React.FC<ButtonProps>;
package/Footer/Footer.js CHANGED
@@ -12,9 +12,12 @@ var react_1 = __importDefault(require("react"));
12
12
  var styled_components_1 = __importDefault(require("styled-components"));
13
13
  var FooterColumns_1 = require("../Footer/FooterColumns");
14
14
  var FooterCopyright_1 = require("../Footer/FooterCopyright");
15
+ var hooks_1 = require("../mocks/hooks");
16
+ var constants_1 = require("../mocks/constants");
15
17
  function Footer(_a) {
16
18
  var _b = _a.data, columns = _b.columns, copyrightText = _b.copyrightText;
17
- if (!((columns === null || columns === void 0 ? void 0 : columns.length) || copyrightText)) {
19
+ var footer = (0, hooks_1.useThemeSettings)(constants_1.USER_THEME_ALIAS).footer;
20
+ if (!((columns === null || columns === void 0 ? void 0 : columns.length) || copyrightText) || (footer === null || footer === void 0 ? void 0 : footer.hide)) {
18
21
  return null;
19
22
  }
20
23
  return (react_1.default.createElement(FooterContainer, { "data-component-name": "Footer/Footer" },
@@ -5,6 +5,6 @@ interface NavbarProps {
5
5
  logo: React.ReactNode;
6
6
  search: React.ReactNode;
7
7
  }
8
- export declare function Navbar({ menu, logo, search }: NavbarProps): JSX.Element;
8
+ export declare function Navbar({ menu, logo, search }: NavbarProps): JSX.Element | null;
9
9
  export declare const NavbarContainer: import("styled-components").StyledComponent<"nav", any, {}, never>;
10
10
  export {};
package/Navbar/Navbar.js CHANGED
@@ -16,9 +16,12 @@ var Navbar_1 = require("../Navbar");
16
16
  function Navbar(_a) {
17
17
  var _b;
18
18
  var menu = _a.menu, logo = _a.logo, search = _a.search;
19
- var searchThemeSettings = (_b = (0, hooks_1.useThemeSettings)(constants_1.USER_THEME_ALIAS)) === null || _b === void 0 ? void 0 : _b.search;
20
- var hideSearch = (searchThemeSettings === null || searchThemeSettings === void 0 ? void 0 : searchThemeSettings.hide) ||
21
- ((searchThemeSettings === null || searchThemeSettings === void 0 ? void 0 : searchThemeSettings.placement) && (searchThemeSettings === null || searchThemeSettings === void 0 ? void 0 : searchThemeSettings.placement) !== 'navbar');
19
+ var settings = (0, hooks_1.useThemeSettings)(constants_1.USER_THEME_ALIAS);
20
+ var searchSettings = settings.search;
21
+ var hideSearch = (searchSettings === null || searchSettings === void 0 ? void 0 : searchSettings.hide) || ((searchSettings === null || searchSettings === void 0 ? void 0 : searchSettings.placement) && (searchSettings === null || searchSettings === void 0 ? void 0 : searchSettings.placement) !== 'navbar');
22
+ if ((_b = settings === null || settings === void 0 ? void 0 : settings.navbar) === null || _b === void 0 ? void 0 : _b.hide) {
23
+ return null;
24
+ }
22
25
  return (react_1.default.createElement(exports.NavbarContainer, { "data-component-name": "Navbar/Navbar" },
23
26
  logo,
24
27
  react_1.default.createElement(Navbar_1.NavbarMenu, { menuItems: menu }),
@@ -3,5 +3,5 @@ interface SidebarLayoutProps {
3
3
  versions: React.ReactNode;
4
4
  menu: React.ReactNode;
5
5
  }
6
- export declare function SidebarLayout({ versions, menu }: SidebarLayoutProps): JSX.Element;
6
+ export declare function SidebarLayout({ versions, menu }: SidebarLayoutProps): JSX.Element | null;
7
7
  export {};
@@ -21,10 +21,13 @@ function SidebarLayout(_a) {
21
21
  var versions = _a.versions, menu = _a.menu;
22
22
  var _b = (0, useMobileMenu_1.useMobileMenu)(), isOpen = _b[0], setIsOpen = _b[1];
23
23
  var toggleMenu = function () { return setIsOpen(!isOpen); };
24
- var _c = (0, hooks_1.useThemeSettings)(constants_1.DEFAULT_THEME_NAME).search || {}, hide = _c.hide, placement = _c.placement;
24
+ var _c = (0, hooks_1.useThemeSettings)(constants_1.DEFAULT_THEME_NAME), search = _c.search, sidebar = _c.sidebar;
25
+ if (sidebar === null || sidebar === void 0 ? void 0 : sidebar.hide) {
26
+ return null;
27
+ }
25
28
  return (react_1.default.createElement(Wrapper, { "data-component-name": "Sidebar/SidebarLayout" },
26
29
  react_1.default.createElement(MobileSidebarButton_1.MobileSidebarButton, { opened: isOpen, onClick: toggleMenu }),
27
- !hide && placement === 'sidebar' ? react_1.default.createElement(SidebarSearch_1.SidebarSearch, null) : null,
30
+ !(search === null || search === void 0 ? void 0 : search.hide) && (search === null || search === void 0 ? void 0 : search.placement) === 'sidebar' ? react_1.default.createElement(SidebarSearch_1.SidebarSearch, null) : null,
28
31
  react_1.default.createElement(Sidebar_1.Sidebar, { animate: true, opened: isOpen },
29
32
  versions,
30
33
  react_1.default.createElement(MenuContainer_1.MenuContainer, null, menu))));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@redocly/theme",
3
- "version": "0.1.21",
3
+ "version": "0.1.22",
4
4
  "description": "Shared UI components",
5
5
  "author": "team@redocly.com",
6
6
  "license": "SEE LICENSE IN LICENSE",
package/settings.yaml CHANGED
@@ -7,3 +7,9 @@ toc:
7
7
  label: On this page
8
8
  navigation:
9
9
  hide: false
10
+ navbar:
11
+ hide: false
12
+ sidebar:
13
+ hide: false
14
+ footer:
15
+ hide: false
@@ -16,7 +16,7 @@ export interface ButtonProps {
16
16
  size?: ButtonSize;
17
17
  extraClass?: string;
18
18
  to?: string;
19
- onClick?: () => void;
19
+ onClick?: (e?: any) => void;
20
20
  }
21
21
 
22
22
  const getBlink = (): Keyframes => keyframes`
@@ -4,13 +4,17 @@ import styled from 'styled-components';
4
4
  import { FooterColumns } from '@theme/Footer/FooterColumns';
5
5
  import { FooterCopyright } from '@theme/Footer/FooterCopyright';
6
6
  import type { NavGroupRecord } from '@theme/types/portal';
7
+ import { useThemeSettings } from '@portal/hooks';
8
+ import { USER_THEME_ALIAS } from '@portal/constants';
7
9
 
8
10
  interface FooterProps {
9
11
  data: NavGroupRecord;
10
12
  }
11
13
 
12
14
  export function Footer({ data: { columns, copyrightText } }: FooterProps): JSX.Element | null {
13
- if (!(columns?.length || copyrightText)) {
15
+ const { footer } = useThemeSettings(USER_THEME_ALIAS);
16
+
17
+ if (!(columns?.length || copyrightText) || footer?.hide) {
14
18
  return null;
15
19
  }
16
20
 
@@ -12,11 +12,15 @@ interface NavbarProps {
12
12
  search: React.ReactNode;
13
13
  }
14
14
 
15
- export function Navbar({ menu, logo, search }: NavbarProps): JSX.Element {
16
- const searchThemeSettings = useThemeSettings(USER_THEME_ALIAS)?.search;
15
+ export function Navbar({ menu, logo, search }: NavbarProps): JSX.Element | null {
16
+ const settings = useThemeSettings(USER_THEME_ALIAS);
17
+ const searchSettings = settings.search;
17
18
  const hideSearch =
18
- searchThemeSettings?.hide ||
19
- (searchThemeSettings?.placement && searchThemeSettings?.placement !== 'navbar');
19
+ searchSettings?.hide || (searchSettings?.placement && searchSettings?.placement !== 'navbar');
20
+
21
+ if (settings?.navbar?.hide) {
22
+ return null;
23
+ }
20
24
 
21
25
  return (
22
26
  <NavbarContainer data-component-name="Navbar/Navbar">
@@ -2,8 +2,8 @@ import React from 'react';
2
2
 
3
3
  import type { ResolvedNavLinkItem } from '@theme/types/portal';
4
4
  import { usePageData } from '@portal/hooks/usePageData';
5
- import { useThemeSettings } from '@portal/hooks/';
6
- import { DEFAULT_THEME_NAME } from '@portal/constants/';
5
+ import { useThemeSettings } from '@portal/hooks';
6
+ import { DEFAULT_THEME_NAME } from '@portal/constants';
7
7
  import { Button } from '@theme/Button/Button';
8
8
 
9
9
  interface NextPageType {
@@ -5,8 +5,8 @@ import { Sidebar } from '@theme/Sidebar/Sidebar';
5
5
  import { useMobileMenu } from '@theme/hooks/useMobileMenu';
6
6
  import { MobileSidebarButton } from '@theme/Sidebar/MobileSidebarButton';
7
7
  import { MenuContainer } from '@theme/Sidebar/MenuContainer';
8
- import { useThemeSettings } from '@portal/hooks/';
9
- import { DEFAULT_THEME_NAME } from '@portal/constants/';
8
+ import { useThemeSettings } from '@portal/hooks';
9
+ import { DEFAULT_THEME_NAME } from '@portal/constants';
10
10
  import { SidebarSearch } from '@theme/Search/SidebarSearch';
11
11
 
12
12
  interface SidebarLayoutProps {
@@ -14,16 +14,20 @@ interface SidebarLayoutProps {
14
14
  menu: React.ReactNode;
15
15
  }
16
16
 
17
- export function SidebarLayout({ versions, menu }: SidebarLayoutProps): JSX.Element {
17
+ export function SidebarLayout({ versions, menu }: SidebarLayoutProps): JSX.Element | null {
18
18
  const [isOpen, setIsOpen] = useMobileMenu();
19
19
  const toggleMenu = () => setIsOpen(!isOpen);
20
- const { hide, placement } = useThemeSettings(DEFAULT_THEME_NAME).search || {};
20
+ const { search, sidebar } = useThemeSettings(DEFAULT_THEME_NAME);
21
+
22
+ if (sidebar?.hide) {
23
+ return null;
24
+ }
21
25
 
22
26
  return (
23
27
  <Wrapper data-component-name="Sidebar/SidebarLayout">
24
28
  <MobileSidebarButton opened={isOpen} onClick={toggleMenu} />
25
29
 
26
- {!hide && placement === 'sidebar' ? <SidebarSearch /> : null}
30
+ {!search?.hide && search?.placement === 'sidebar' ? <SidebarSearch /> : null}
27
31
  <Sidebar animate={true} opened={isOpen}>
28
32
  {versions}
29
33
  <MenuContainer>{menu}</MenuContainer>