@redocly/theme 0.9.12-alpha.0 → 0.9.13

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 (39) hide show
  1. package/lib/Catalog/Filter.d.ts +1 -3
  2. package/lib/Catalog/Filter.js +4 -83
  3. package/lib/ReferenceDocs/DevOnboardingTryItSecurity.js +17 -3
  4. package/lib/Sidebar/FooterWrapper.d.ts +2 -2
  5. package/lib/Sidebar/FooterWrapper.js +6 -3
  6. package/lib/Sidebar/SidebarLayout.d.ts +6 -3
  7. package/lib/Sidebar/SidebarLayout.js +55 -7
  8. package/lib/Sidebar/index.d.ts +1 -0
  9. package/lib/Sidebar/index.js +1 -0
  10. package/lib/SidebarActions/ChangeViewButton.d.ts +8 -0
  11. package/lib/SidebarActions/ChangeViewButton.js +14 -0
  12. package/lib/SidebarActions/CollapseSidebarButton.d.ts +7 -0
  13. package/lib/SidebarActions/CollapseSidebarButton.js +13 -0
  14. package/lib/SidebarActions/SidebarActions.d.ts +20 -0
  15. package/lib/SidebarActions/SidebarActions.js +26 -0
  16. package/lib/SidebarActions/ToggleRightPanelButton.d.ts +7 -0
  17. package/lib/SidebarActions/ToggleRightPanelButton.js +13 -0
  18. package/lib/SidebarActions/index.d.ts +1 -0
  19. package/lib/SidebarActions/index.js +7 -0
  20. package/lib/SidebarActions/styled.d.ts +17 -0
  21. package/lib/SidebarActions/styled.js +124 -0
  22. package/lib/globalStyle.js +1 -2
  23. package/lib/index.d.ts +1 -0
  24. package/lib/index.js +1 -0
  25. package/package.json +1 -2
  26. package/src/Catalog/Filter.tsx +3 -123
  27. package/src/ReferenceDocs/DevOnboardingTryItSecurity.tsx +19 -5
  28. package/src/Sidebar/FooterWrapper.tsx +7 -4
  29. package/src/Sidebar/SidebarLayout.tsx +66 -18
  30. package/src/Sidebar/index.ts +1 -0
  31. package/src/SidebarActions/ChangeViewButton.tsx +20 -0
  32. package/src/SidebarActions/CollapseSidebarButton.tsx +21 -0
  33. package/src/SidebarActions/SidebarActions.tsx +64 -0
  34. package/src/SidebarActions/ToggleRightPanelButton.tsx +21 -0
  35. package/src/SidebarActions/index.tsx +1 -0
  36. package/src/SidebarActions/styled.tsx +157 -0
  37. package/src/globalStyle.ts +1 -2
  38. package/src/index.ts +1 -0
  39. package/src/types/portal/src/shared/types/catalog.d.ts +1 -3
@@ -1,7 +1,5 @@
1
1
  /// <reference types="react" />
2
2
  import type { ResolvedFilter } from '@theme/types/portal/src/shared/types/catalog';
3
3
  export declare function Filter({ filter }: {
4
- filter: ResolvedFilter & {
5
- selectedOptions: any;
6
- };
4
+ filter: ResolvedFilter;
7
5
  }): JSX.Element | null;
@@ -7,36 +7,19 @@ exports.Filter = void 0;
7
7
  const react_1 = __importDefault(require("react"));
8
8
  const styled_components_1 = __importDefault(require("styled-components"));
9
9
  const Checkbox_1 = require("../ui/Checkbox");
10
- // TODO: figure out how to fix this
11
- const DatePicker =
12
- // eslint-disable-next-line @typescript-eslint/no-var-requires, import/order, import/no-extraneous-dependencies
13
- require('react-date-picker').default;
14
- // disabled type checking for selectedOptions
15
10
  function Filter({ filter }) {
16
- var _a, _b;
11
+ var _a;
17
12
  if (!filter.parentUsed)
18
13
  return null;
19
14
  return (react_1.default.createElement(FilterGroup, { key: filter.property + filter.title },
20
- react_1.default.createElement(FilterTitle, null,
21
- filter.title,
22
- ((_a = filter.selectedOptions) === null || _a === void 0 ? void 0 : _a.size) ? (react_1.default.createElement("a", { onClick: () => filter.selectOption('') }, " Clear ")) : null),
23
- filter.type === 'select' ? (react_1.default.createElement(StyledSelect, { onChange: (e) => filter.selectOption(e.target.value), value: ((_b = filter.selectedOptions.values().next()) === null || _b === void 0 ? void 0 : _b.value) || '' },
15
+ react_1.default.createElement(FilterTitle, null, filter.title),
16
+ filter.type === 'select' ? (react_1.default.createElement(StyledSelect, { onChange: (e) => filter.selectOption(e.target.value), value: ((_a = filter.selectedOptions.values().next()) === null || _a === void 0 ? void 0 : _a.value) || '' },
24
17
  react_1.default.createElement("option", { key: "none", value: "" }, "All"),
25
18
  filter.filteredOptions.map((value) => (react_1.default.createElement("option", { key: value.value, value: value.value },
26
19
  value.value,
27
20
  " (",
28
21
  value.count,
29
- ")"))))) : filter.type === 'date-range' ? (react_1.default.createElement(react_1.default.Fragment, null,
30
- react_1.default.createElement(DatePickerWrapper, null,
31
- react_1.default.createElement("span", null, " From: "),
32
- react_1.default.createElement(DatePicker, { closeCalendar: true, format: "y-MM-dd", dayPlaceholder: "DD", monthPlaceholder: "MM", yearPlaceholder: "YYYY", value: filter.selectedOptions.from ? new Date(filter.selectedOptions.from) : null, minDetail: "decade", maxDate: new Date(), onChange: (from) => {
33
- filter.selectOption(Object.assign(Object.assign({}, filter.selectedOptions), { from: formatDateWithNoTimeZone(from) }));
34
- } })),
35
- react_1.default.createElement(DatePickerWrapper, null,
36
- react_1.default.createElement("span", null, " To: "),
37
- react_1.default.createElement(DatePicker, { closeCalendar: true, dayPlaceholder: "DD", monthPlaceholder: "MM", yearPlaceholder: "YYYY", format: "y-MM-dd", minDate: filter.selectedOptions.from ? new Date(filter.selectedOptions.from) : undefined, value: filter.selectedOptions.to ? new Date(filter.selectedOptions.to) : null, minDetail: "decade", onChange: (to) => {
38
- filter.selectOption(Object.assign(Object.assign({}, filter.selectedOptions), { to: formatDateWithNoTimeZone(to) }));
39
- } })))) : (filter.filteredOptions.map((value) => {
22
+ ")"))))) : (filter.filteredOptions.map((value) => {
40
23
  const id = 'filter--' + filter.property + '--' + slug(value.value);
41
24
  return (react_1.default.createElement(FilterValue, { key: id },
42
25
  react_1.default.createElement(Checkbox_1.Checkbox, { type: "checkbox", id: id, checked: filter.selectedOptions.has(value.value), onChange: () => filter.toggleOption(value.value) }),
@@ -61,11 +44,6 @@ const FilterTitle = styled_components_1.default.h4 `
61
44
  font-weight: var(--font-weight-bold);
62
45
  margin: 0;
63
46
  margin-bottom: 16px;
64
-
65
- > a {
66
- font-size: 14px;
67
- cursor: pointer;
68
- }
69
47
  `;
70
48
  const FilterValue = styled_components_1.default.label `
71
49
  display: block;
@@ -100,66 +78,9 @@ const StyledSelect = styled_components_1.default.select `
100
78
  background-position: right 10px center;
101
79
  background-size: 1em;
102
80
  width: 100%;
103
- padding-right: 25px;
104
81
  `;
105
82
  // TODO: import from portal
106
83
  function slug(str) {
107
84
  return str.replace(/\s/g, '-').toLowerCase();
108
85
  }
109
- const DatePickerWrapper = styled_components_1.default.div `
110
- display: flex;
111
- flex-direction: row;
112
- margin-bottom: 5px;
113
-
114
- align-items: center;
115
- gap: 10px;
116
-
117
- > span {
118
- width: 50px;
119
- }
120
-
121
- .react-date-picker {
122
- flex: 1;
123
- }
124
-
125
- .react-calendar__tile--now {
126
- background: #cbf7f1;
127
- color: black;
128
-
129
- &:enabled:hover,
130
- &:enabled:focus {
131
- background: #b1efe7;
132
- color: black;
133
- }
134
- }
135
-
136
- .react-date-picker__inputGroup__input:invalid {
137
- background: rgb(255 125 0 / 10%);
138
- }
139
-
140
- .react-date-picker__button {
141
- padding: 4px 4px;
142
- svg {
143
- width: 12px;
144
- }
145
- }
146
-
147
- .react-date-picker__wrapper {
148
- border: 1px solid rgba(0, 0, 0, 0.23);
149
- border-radius: var(--border-radius);
150
- padding: var(--input-padding);
151
- }
152
-
153
- .react-date-picker__inputGroup__input {
154
- width: 20px;
155
- }
156
- `;
157
- function padZero(num) {
158
- return num < 10 ? '0' + num : num;
159
- }
160
- function formatDateWithNoTimeZone(date) {
161
- if (!date)
162
- return date;
163
- return `${date.getFullYear()}-${padZero(date.getMonth() + 1)}-${padZero(date.getDate())}`;
164
- }
165
86
  //# sourceMappingURL=Filter.js.map
@@ -31,11 +31,13 @@ const React = __importStar(require("react"));
31
31
  const styled_components_1 = __importDefault(require("styled-components"));
32
32
  const Button_1 = require("../Button/Button");
33
33
  const usePageData_1 = require("../mocks/hooks/usePageData");
34
+ const usePreloadHistory_1 = require("../mocks/usePreloadHistory");
34
35
  const Dropdown_1 = require("./Dropdown");
35
36
  function DevOnboardingTryItSecurity(props) {
36
37
  const apiId = props.apiId;
37
38
  // @ts-ignore
38
39
  const { userData } = (0, usePageData_1.usePageData)('userData') || {};
40
+ const history = (0, usePreloadHistory_1.usePreloadHistory)();
39
41
  // TODO: handle error
40
42
  const [_error, setError] = React.useState();
41
43
  const [apps, setApps] = React.useState();
@@ -45,6 +47,7 @@ function DevOnboardingTryItSecurity(props) {
45
47
  const [selectedAppSecret, setSelectedAppSecret] = React.useState();
46
48
  const [acceptValueUpdate, setAcceptValueUpdate] = React.useState(true);
47
49
  const initialRender = React.useRef(true);
50
+ const hasApiAccess = !loading && !!(apps === null || apps === void 0 ? void 0 : apps.length);
48
51
  React.useEffect(() => {
49
52
  if (!props.value && initialRender.current)
50
53
  return;
@@ -110,7 +113,11 @@ function DevOnboardingTryItSecurity(props) {
110
113
  .finally(() => setAppLoading(false));
111
114
  });
112
115
  };
113
- const placeholder = loading ? 'Loading your apps...' : undefined;
116
+ const placeholder = loading
117
+ ? 'Loading your apps...'
118
+ : hasApiAccess
119
+ ? undefined
120
+ : 'You do not have access to this API';
114
121
  return (React.createElement(React.Fragment, null,
115
122
  React.createElement(FormLabel, { htmlFor: "server" }, "Select app: "),
116
123
  React.createElement(FormControl, null,
@@ -118,7 +125,14 @@ function DevOnboardingTryItSecurity(props) {
118
125
  setAppId(value);
119
126
  loadAppCredentials(value);
120
127
  } }),
121
- React.createElement(UseKeyButton, { disabled: !selectedAppSecret || appLoading, color: "secondary", onClick: () => selectedAppSecret && props.onChange(selectedAppSecret) }, appLoading ? 'Loading...' : 'Use key'))));
128
+ React.createElement(UseKeyButton, { disabled: (!selectedAppSecret && hasApiAccess) || appLoading, color: "secondary", onClick: () => {
129
+ if (selectedAppSecret) {
130
+ props.onChange(selectedAppSecret);
131
+ }
132
+ else if (!hasApiAccess) {
133
+ history.push('/apps/?createApp&apiId=' + apiId);
134
+ }
135
+ } }, appLoading ? 'Loading...' : hasApiAccess ? 'Use key' : 'Request access'))));
122
136
  }
123
137
  exports.DevOnboardingTryItSecurity = DevOnboardingTryItSecurity;
124
138
  const TryItDropdown = (0, styled_components_1.default)(Dropdown_1.Dropdown) `
@@ -156,7 +170,7 @@ const FormLabel = styled_components_1.default.label `
156
170
  `}
157
171
  `;
158
172
  const UseKeyButton = (0, styled_components_1.default)(Button_1.Button) `
159
- width: 100px;
173
+ min-width: 100px;
160
174
  align-self: flex-end;
161
175
  margin-top: 10px;
162
176
  margin-right: 0;
@@ -1,3 +1,3 @@
1
1
  export declare const FooterWrapper: import("styled-components").StyledComponent<"div", any, {
2
- 'data-component-name': string;
3
- }, "data-component-name">;
2
+ collapsed?: boolean | undefined;
3
+ }, never>;
@@ -5,9 +5,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.FooterWrapper = void 0;
7
7
  const styled_components_1 = __importDefault(require("styled-components"));
8
- exports.FooterWrapper = styled_components_1.default.div.attrs(() => ({
9
- 'data-component-name': 'Sidebar/FooterWrapper',
10
- })) `
8
+ exports.FooterWrapper = styled_components_1.default.div `
9
+ ${({ collapsed }) => collapsed &&
10
+ `
11
+ position: sticky;
12
+ bottom: 0;
13
+ `}
11
14
  margin: var(--sidebar-offset-top) 0 var(--sidebar-spacing-unit) var(--sidebar-offset-left);
12
15
  padding-top: var(--sidebar-spacing-unit);
13
16
  padding-right: var(--sidebar-spacing-unit);
@@ -1,14 +1,17 @@
1
1
  import React from 'react';
2
2
  interface SidebarLayoutProps {
3
- versions: React.ReactNode;
4
- menu: React.ReactNode;
3
+ versions?: React.ReactNode;
4
+ menu?: React.ReactNode;
5
5
  backLink?: {
6
6
  label: string;
7
7
  slug: string;
8
8
  };
9
9
  footer?: React.ReactNode;
10
+ actions?: React.ReactNode;
10
11
  header?: React.ReactNode;
11
12
  growContent?: boolean;
13
+ collapsed?: boolean;
14
+ onToggleMenu?: (isOpen: boolean) => void;
12
15
  }
13
- export declare function SidebarLayout({ versions, menu, footer, header, growContent, }: SidebarLayoutProps): JSX.Element | null;
16
+ export declare function SidebarLayout({ versions, menu, footer, header, growContent, collapsed, onToggleMenu, }: SidebarLayoutProps): JSX.Element | null;
14
17
  export {};
@@ -1,10 +1,33 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
2
25
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
26
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
27
  };
5
28
  Object.defineProperty(exports, "__esModule", { value: true });
6
29
  exports.SidebarLayout = void 0;
7
- const react_1 = __importDefault(require("react"));
30
+ const react_1 = __importStar(require("react"));
8
31
  const styled_components_1 = __importDefault(require("styled-components"));
9
32
  const Sidebar_1 = require("../Sidebar/Sidebar");
10
33
  const FooterWrapper_1 = require("../Sidebar/FooterWrapper");
@@ -15,23 +38,48 @@ const MenuContainer_1 = require("../Sidebar/MenuContainer");
15
38
  const SidebarSearch_1 = require("../Search/SidebarSearch");
16
39
  const useThemeConfig_1 = require("../hooks/useThemeConfig");
17
40
  const MobileSidebarIcon_1 = require("./MobileSidebarIcon");
18
- function SidebarLayout({ versions, menu, footer, header, growContent, }) {
41
+ const StyledFooterWrapper = (0, styled_components_1.default)(FooterWrapper_1.FooterWrapper) `
42
+ display: none;
43
+
44
+ ${({ theme }) => { var _a; return (_a = theme.mediaQueries) === null || _a === void 0 ? void 0 : _a.medium; }} {
45
+ display: flex;
46
+ }
47
+ `;
48
+ function SidebarLayout({ versions, menu, footer, header, growContent, collapsed, onToggleMenu, }) {
19
49
  const [isOpen, setIsOpen] = (0, useMobileMenu_1.useMobileMenu)();
20
- const toggleMenu = () => setIsOpen(!isOpen);
50
+ const [mappedCollapsed, setMappedCollapsed] = react_1.default.useState(collapsed);
51
+ (0, react_1.useEffect)(() => {
52
+ setMappedCollapsed(collapsed && !isOpen);
53
+ }, [isOpen, collapsed, setMappedCollapsed]);
54
+ const toggleMenu = () => {
55
+ onToggleMenu === null || onToggleMenu === void 0 ? void 0 : onToggleMenu(!isOpen);
56
+ setIsOpen(!isOpen);
57
+ };
21
58
  const { search, sidebar } = (0, useThemeConfig_1.useThemeConfig)();
22
59
  if (sidebar === null || sidebar === void 0 ? void 0 : sidebar.hide) {
23
60
  return null;
24
61
  }
25
- return (react_1.default.createElement(Wrapper, { "data-component-name": "Sidebar/SidebarLayout" },
62
+ return (react_1.default.createElement(react_1.default.Fragment, null, mappedCollapsed ? (footer ? (react_1.default.createElement(Wrapper, { collapsed: true },
63
+ react_1.default.createElement(StyledFooterWrapper, { "data-component-name": "Sidebar/FooterWrapper", collapsed: true }, footer),
64
+ react_1.default.createElement(MobileSidebarButton_1.MobileSidebarButton, { opened: isOpen, onClick: toggleMenu },
65
+ react_1.default.createElement(MobileSidebarIcon_1.MobileSidebarIcon, null)))) : null) : (react_1.default.createElement(Wrapper, { "data-component-name": "Sidebar/SidebarLayout" },
26
66
  react_1.default.createElement(MobileSidebarButton_1.MobileSidebarButton, { opened: isOpen, onClick: toggleMenu },
27
67
  react_1.default.createElement(MobileSidebarIcon_1.MobileSidebarIcon, null)),
28
68
  !(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,
29
69
  react_1.default.createElement(Sidebar_1.Sidebar, { animate: true, opened: isOpen },
30
70
  header ? react_1.default.createElement(HeaderWrapper_1.HeaderWrapper, null, header) : null,
31
- versions,
71
+ versions ? react_1.default.createElement(react_1.default.Fragment, null, versions) : null,
32
72
  react_1.default.createElement(MenuContainer_1.MenuContainer, { growContent: growContent }, menu),
33
- footer ? react_1.default.createElement(FooterWrapper_1.FooterWrapper, null, footer) : null)));
73
+ footer && !isOpen ? (react_1.default.createElement(FooterWrapper_1.FooterWrapper, { "data-component-name": "Sidebar/FooterWrapper" }, footer)) : null)))));
34
74
  }
35
75
  exports.SidebarLayout = SidebarLayout;
36
- const Wrapper = styled_components_1.default.div ``;
76
+ const Wrapper = styled_components_1.default.div `
77
+ ${({ collapsed }) => collapsed &&
78
+ `
79
+ display: flex;
80
+ flex-direction: column;
81
+ justify-content: flex-end;
82
+ border-right: 1px solid var(--sidebar-border-color);
83
+ `}
84
+ `;
37
85
  //# sourceMappingURL=SidebarLayout.js.map
@@ -13,6 +13,7 @@ export * from '../Sidebar/MenuItemLabel';
13
13
  export * from '../Sidebar/MenuLink';
14
14
  export * from '../Sidebar/MenuLinkItem';
15
15
  export * from '../Sidebar/MobileSidebarButton';
16
+ export * from '../Sidebar/MobileSidebarIcon';
16
17
  export * from '../Sidebar/Separator';
17
18
  export * from '../Sidebar/SeparatorItem';
18
19
  export * from '../Sidebar/Sidebar';
@@ -29,6 +29,7 @@ __exportStar(require("../Sidebar/MenuItemLabel"), exports);
29
29
  __exportStar(require("../Sidebar/MenuLink"), exports);
30
30
  __exportStar(require("../Sidebar/MenuLinkItem"), exports);
31
31
  __exportStar(require("../Sidebar/MobileSidebarButton"), exports);
32
+ __exportStar(require("../Sidebar/MobileSidebarIcon"), exports);
32
33
  __exportStar(require("../Sidebar/Separator"), exports);
33
34
  __exportStar(require("../Sidebar/SeparatorItem"), exports);
34
35
  __exportStar(require("../Sidebar/Sidebar"), exports);
@@ -0,0 +1,8 @@
1
+ /// <reference types="react" />
2
+ import { LayoutVariant } from './SidebarActions';
3
+ interface ChangeViewButtonProps {
4
+ layout: LayoutVariant;
5
+ onClick: () => void;
6
+ }
7
+ export declare const ChangeViewButton: ({ layout, onClick, }: ChangeViewButtonProps) => JSX.Element | null;
8
+ export {};
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ChangeViewButton = void 0;
7
+ const react_1 = __importDefault(require("react"));
8
+ const SidebarActions_1 = require("./SidebarActions");
9
+ const styled_1 = require("./styled");
10
+ const ChangeViewButton = ({ layout, onClick, }) => {
11
+ return (react_1.default.createElement(styled_1.StyledChangeViewButton, { title: "Change layout", onClick: onClick }, layout === SidebarActions_1.LayoutVariant.STACKED ? react_1.default.createElement(styled_1.ChangeViewSvgRow, null) : react_1.default.createElement(styled_1.ChangeViewSvgColumn, null)));
12
+ };
13
+ exports.ChangeViewButton = ChangeViewButton;
14
+ //# sourceMappingURL=ChangeViewButton.js.map
@@ -0,0 +1,7 @@
1
+ /// <reference types="react" />
2
+ interface CollapseSidebarButtonProps {
3
+ initialValue: boolean;
4
+ onClick: () => void;
5
+ }
6
+ export declare const CollapseSidebarButton: ({ initialValue, onClick, }: CollapseSidebarButtonProps) => JSX.Element;
7
+ export {};
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.CollapseSidebarButton = void 0;
7
+ const react_1 = __importDefault(require("react"));
8
+ const styled_1 = require("./styled");
9
+ const CollapseSidebarButton = ({ initialValue, onClick, }) => {
10
+ return (react_1.default.createElement(styled_1.StyledToggleRightPanelButton, { title: initialValue ? 'Show sidebar' : 'Hide sidebar', onClick: onClick }, initialValue ? react_1.default.createElement(styled_1.HideLeftPanelSVG, null) : react_1.default.createElement(styled_1.ShowLeftPanelSVG, null)));
11
+ };
12
+ exports.CollapseSidebarButton = CollapseSidebarButton;
13
+ //# sourceMappingURL=CollapseSidebarButton.js.map
@@ -0,0 +1,20 @@
1
+ import React from 'react';
2
+ export declare enum LayoutVariant {
3
+ STACKED = "stacked",
4
+ THREE_PANEL = "three-panel"
5
+ }
6
+ interface SidebarActionsProps {
7
+ showChangeLayoutButton: boolean;
8
+ showRightPanelToggle: boolean;
9
+ layout: LayoutVariant;
10
+ initialShowRightPanelToggle: boolean;
11
+ collapsedSidebar: boolean;
12
+ isOpenapiDocs: boolean;
13
+ hideCollapseSidebarButton?: boolean;
14
+ onChangeRightPanelViewClick: () => void;
15
+ onChangeViewClick: () => void;
16
+ onChangeCollapseSidebarClick: () => void;
17
+ requestAccessButton?: React.ReactElement | null;
18
+ }
19
+ export declare const SidebarActions: ({ showChangeLayoutButton, showRightPanelToggle, layout, initialShowRightPanelToggle, hideCollapseSidebarButton, collapsedSidebar, isOpenapiDocs, onChangeRightPanelViewClick, onChangeViewClick, onChangeCollapseSidebarClick, requestAccessButton, }: SidebarActionsProps) => JSX.Element;
20
+ export {};
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.SidebarActions = exports.LayoutVariant = void 0;
7
+ const react_1 = __importDefault(require("react"));
8
+ const ChangeViewButton_1 = require("./ChangeViewButton");
9
+ const ToggleRightPanelButton_1 = require("./ToggleRightPanelButton");
10
+ const CollapseSidebarButton_1 = require("./CollapseSidebarButton");
11
+ const styled_1 = require("./styled");
12
+ var LayoutVariant;
13
+ (function (LayoutVariant) {
14
+ LayoutVariant["STACKED"] = "stacked";
15
+ LayoutVariant["THREE_PANEL"] = "three-panel";
16
+ })(LayoutVariant = exports.LayoutVariant || (exports.LayoutVariant = {}));
17
+ const SidebarActions = ({ showChangeLayoutButton, showRightPanelToggle, layout, initialShowRightPanelToggle, hideCollapseSidebarButton = false, collapsedSidebar, isOpenapiDocs, onChangeRightPanelViewClick, onChangeViewClick, onChangeCollapseSidebarClick, requestAccessButton, }) => {
18
+ return (react_1.default.createElement(styled_1.ControlsWrap, { isOpenapiDocs: isOpenapiDocs, isCollapsed: collapsedSidebar },
19
+ isOpenapiDocs && (react_1.default.createElement(styled_1.ControlsWrapChangeLayoutButtons, { isCollapsed: collapsedSidebar },
20
+ initialShowRightPanelToggle && (react_1.default.createElement(ToggleRightPanelButton_1.ToggleRightPanelButton, { showRightPanelToggle: showRightPanelToggle, onClick: onChangeRightPanelViewClick })),
21
+ showChangeLayoutButton && showRightPanelToggle && (react_1.default.createElement(ChangeViewButton_1.ChangeViewButton, { layout: layout, onClick: onChangeViewClick })))),
22
+ !collapsedSidebar && requestAccessButton,
23
+ !hideCollapseSidebarButton && (react_1.default.createElement(CollapseSidebarButton_1.CollapseSidebarButton, { initialValue: collapsedSidebar, onClick: onChangeCollapseSidebarClick }))));
24
+ };
25
+ exports.SidebarActions = SidebarActions;
26
+ //# sourceMappingURL=SidebarActions.js.map
@@ -0,0 +1,7 @@
1
+ /// <reference types="react" />
2
+ interface ToggleRightPanelButtonProps {
3
+ showRightPanelToggle: boolean;
4
+ onClick: () => void;
5
+ }
6
+ export declare const ToggleRightPanelButton: ({ showRightPanelToggle, onClick, }: ToggleRightPanelButtonProps) => JSX.Element;
7
+ export {};
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ToggleRightPanelButton = void 0;
7
+ const react_1 = __importDefault(require("react"));
8
+ const styled_1 = require("./styled");
9
+ const ToggleRightPanelButton = ({ showRightPanelToggle, onClick, }) => {
10
+ return (react_1.default.createElement(styled_1.StyledToggleRightPanelButton, { title: showRightPanelToggle ? 'Hide samples' : 'Show samples', onClick: onClick }, showRightPanelToggle ? react_1.default.createElement(styled_1.HideRightPanelSVG, null) : react_1.default.createElement(styled_1.ShowRightPanelSVG, null)));
11
+ };
12
+ exports.ToggleRightPanelButton = ToggleRightPanelButton;
13
+ //# sourceMappingURL=ToggleRightPanelButton.js.map
@@ -0,0 +1 @@
1
+ export { SidebarActions, LayoutVariant } from './SidebarActions';
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LayoutVariant = exports.SidebarActions = void 0;
4
+ var SidebarActions_1 = require("./SidebarActions");
5
+ Object.defineProperty(exports, "SidebarActions", { enumerable: true, get: function () { return SidebarActions_1.SidebarActions; } });
6
+ Object.defineProperty(exports, "LayoutVariant", { enumerable: true, get: function () { return SidebarActions_1.LayoutVariant; } });
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,17 @@
1
+ /// <reference types="react" />
2
+ export declare const ShowLeftPanelSVG: import("styled-components").StyledComponent<() => JSX.Element, any, {}, never>;
3
+ export declare const HideLeftPanelSVG: import("styled-components").StyledComponent<() => JSX.Element, any, {}, never>;
4
+ export declare const StyledToggleRightPanelButton: import("styled-components").StyledComponent<"a", any, {}, never>;
5
+ export declare const HideRightPanelSVG: import("styled-components").StyledComponent<() => JSX.Element, any, {}, never>;
6
+ export declare const ShowRightPanelSVG: import("styled-components").StyledComponent<() => JSX.Element, any, {}, never>;
7
+ export declare const StyledChangeViewButton: import("styled-components").StyledComponent<"a", any, {}, never>;
8
+ export declare const ChangeViewSvgRow: import("styled-components").StyledComponent<() => JSX.Element, any, {}, never>;
9
+ export declare const ChangeViewSvgColumn: import("styled-components").StyledComponent<() => JSX.Element, any, {}, never>;
10
+ export declare const ControlsWrap: import("styled-components").StyledComponent<"span", any, {
11
+ iconCount?: number | undefined;
12
+ isCollapsed?: boolean | undefined;
13
+ isOpenapiDocs?: boolean | undefined;
14
+ }, never>;
15
+ export declare const ControlsWrapChangeLayoutButtons: import("styled-components").StyledComponent<"span", any, {
16
+ isCollapsed?: boolean | undefined;
17
+ }, never>;
@@ -0,0 +1,124 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.ControlsWrapChangeLayoutButtons = exports.ControlsWrap = exports.ChangeViewSvgColumn = exports.ChangeViewSvgRow = exports.StyledChangeViewButton = exports.ShowRightPanelSVG = exports.HideRightPanelSVG = exports.StyledToggleRightPanelButton = exports.HideLeftPanelSVG = exports.ShowLeftPanelSVG = void 0;
30
+ const react_1 = __importDefault(require("react"));
31
+ const styled_components_1 = __importStar(require("styled-components"));
32
+ exports.ShowLeftPanelSVG = (0, styled_components_1.default)(() => (react_1.default.createElement("svg", { width: "14", height: "14", viewBox: "0 0 14 14", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
33
+ react_1.default.createElement("path", { d: "M4.375 7L8.75 2.625L9.3625 3.2375L5.6 7L9.3625 10.7625L8.75 11.375L4.375 7Z", fill: "var(--color-emphasis-400)" })))) `
34
+ position: absolute;
35
+ `;
36
+ exports.HideLeftPanelSVG = (0, styled_components_1.default)(() => (react_1.default.createElement("svg", { width: "14", height: "14", viewBox: "0 0 14 14", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
37
+ react_1.default.createElement("path", { d: "M9.62495 7L5.24995 11.375L4.63745 10.7625L8.39995 7L4.63745 3.2375L5.24995 2.625L9.62495 7Z", fill: "var(--color-emphasis-400)" })))) `
38
+ position: absolute;
39
+ `;
40
+ exports.StyledToggleRightPanelButton = styled_components_1.default.a `
41
+ display: flex;
42
+ justify-content: center;
43
+ align-items: center;
44
+ cursor: pointer;
45
+ z-index: 1;
46
+ /* Rectangle 201 */
47
+ border-radius: var(--border-radius);
48
+ padding: var(--spacing-unit);
49
+
50
+ &:hover {
51
+ background-color: var(--sidebar-item-active-background-color);
52
+ }
53
+ `;
54
+ exports.HideRightPanelSVG = (0, styled_components_1.default)(() => (react_1.default.createElement("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
55
+ react_1.default.createElement("path", { d: "M14 2H2C1.73478 2 1.48043 2.10536 1.29289 2.29289C1.10536 2.48043 1 2.73478 1 3V13C1 13.2652 1.10536 13.5196 1.29289 13.7071C1.48043 13.8946 1.73478 14 2 14H14C14.2652 14 14.5196 13.8946 14.7071 13.7071C14.8946 13.5196 15 13.2652 15 13V3C15 2.73478 14.8946 2.48043 14.7071 2.29289C14.5196 2.10536 14.2652 2 14 2V2ZM2 3H10V13H2V3Z", fill: "var(--color-emphasis-400)" })))) `
56
+ position: absolute;
57
+ `;
58
+ exports.ShowRightPanelSVG = (0, styled_components_1.default)(() => (react_1.default.createElement("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
59
+ react_1.default.createElement("path", { d: "M14 2H2C1.73478 2 1.48043 2.10536 1.29289 2.29289C1.10536 2.48043 1 2.73478 1 3V13C1 13.2652 1.10536 13.5196 1.29289 13.7071C1.48043 13.8946 1.73478 14 2 14H14C14.2652 14 14.5196 13.8946 14.7071 13.7071C14.8946 13.5196 15 13.2652 15 13V3C15 2.73478 14.8946 2.48043 14.7071 2.29289C14.5196 2.10536 14.2652 2 14 2V2ZM2 3H10V13H2V3ZM14 13H11V3H14V13Z", fill: "var(--color-emphasis-400)" })))) `
60
+ position: absolute;
61
+ `;
62
+ exports.StyledChangeViewButton = styled_components_1.default.a `
63
+ display: flex;
64
+ position: relative;
65
+ justify-content: center;
66
+ align-items: center;
67
+ cursor: pointer;
68
+ border-radius: var(--border-radius);
69
+ z-index: 1;
70
+ /* Rectangle 201 */
71
+ padding: var(--spacing-unit);
72
+
73
+ &:hover {
74
+ background-color: var(--sidebar-item-active-background-color);
75
+ }
76
+ `;
77
+ exports.ChangeViewSvgRow = (0, styled_components_1.default)(() => (react_1.default.createElement("svg", { width: "14", height: "14", viewBox: "0 0 14 14", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
78
+ react_1.default.createElement("path", { d: "M1.75 2.625L12.25 2.625L12.25 1.75L1.75 1.75L1.75 2.625Z", fill: "var(--color-emphasis-400)" }),
79
+ react_1.default.createElement("path", { d: "M1.75 5.6875L12.25 5.6875L12.25 4.8125L1.75 4.8125L1.75 5.6875Z", fill: "var(--color-emphasis-400)" }),
80
+ react_1.default.createElement("path", { d: "M2.625 11.375L2.625 8.75L11.375 8.75L11.375 11.375L2.625 11.375ZM2.625 12.25L11.375 12.25C11.6071 12.25 11.8296 12.1578 11.9937 11.9937C12.1578 11.8296 12.25 11.6071 12.25 11.375L12.25 8.75C12.25 8.51794 12.1578 8.29538 11.9937 8.13128C11.8296 7.96719 11.6071 7.875 11.375 7.875L2.625 7.875C2.39294 7.875 2.17038 7.96719 2.00628 8.13128C1.84219 8.29538 1.75 8.51793 1.75 8.75L1.75 11.375C1.75 11.6071 1.84219 11.8296 2.00628 11.9937C2.17038 12.1578 2.39294 12.25 2.625 12.25Z", fill: "var(--color-emphasis-400)" })))) `
81
+ position: absolute;
82
+ `;
83
+ exports.ChangeViewSvgColumn = (0, styled_components_1.default)(() => (react_1.default.createElement("svg", { width: "14", height: "14", viewBox: "0 0 14 14", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
84
+ react_1.default.createElement("path", { d: "M2.625 12.25L2.625 1.75L1.75 1.75L1.75 12.25L2.625 12.25Z", fill: "var(--color-emphasis-400)" }),
85
+ react_1.default.createElement("path", { d: "M5.6875 12.25L5.6875 1.75L4.8125 1.75L4.8125 12.25L5.6875 12.25Z", fill: "var(--color-emphasis-400)" }),
86
+ react_1.default.createElement("path", { d: "M11.375 11.375L8.75 11.375L8.75 2.625L11.375 2.625L11.375 11.375ZM12.25 11.375L12.25 2.625C12.25 2.39294 12.1578 2.17038 11.9937 2.00628C11.8296 1.84219 11.6071 1.75 11.375 1.75L8.75 1.75C8.51794 1.75 8.29538 1.84219 8.13128 2.00628C7.96719 2.17038 7.875 2.39294 7.875 2.625L7.875 11.375C7.875 11.6071 7.96719 11.8296 8.13128 11.9937C8.29538 12.1578 8.51794 12.25 8.75 12.25L11.375 12.25C11.6071 12.25 11.8296 12.1578 11.9937 11.9937C12.1578 11.8296 12.25 11.6071 12.25 11.375Z", fill: "var(--color-emphasis-400)" })))) `
87
+ position: absolute;
88
+ `;
89
+ exports.ControlsWrap = styled_components_1.default.span `
90
+ display: none;
91
+ justify-content: ${({ isOpenapiDocs }) => (isOpenapiDocs ? 'space-between' : 'flex-end')};
92
+ bottom: 0;
93
+ flex-direction: row;
94
+ gap: var(--spacing-unit);
95
+ align-items: center;
96
+ margin-left: '15px';
97
+ z-index: 2;
98
+ background: var(--sidebar-background-color);
99
+
100
+ ${({ isCollapsed }) => isCollapsed &&
101
+ (0, styled_components_1.css) `
102
+ flex-direction: column;
103
+ gap: 10px;
104
+ padding-bottom: 10px;
105
+ `}
106
+
107
+ ${({ theme }) => (0, styled_components_1.css) `
108
+ ${theme.mediaQueries[theme.showAtBreakpoint.sidebar]} {
109
+ display: flex;
110
+ }
111
+
112
+ ${theme.mediaQueries.print} {
113
+ display: none;
114
+ }
115
+ `}
116
+ `;
117
+ exports.ControlsWrapChangeLayoutButtons = styled_components_1.default.span `
118
+ display: flex;
119
+ bottom: 0;
120
+ flex-direction: ${({ isCollapsed }) => (isCollapsed ? 'column-reverse' : 'row')};
121
+ gap: ${({ isCollapsed }) => (isCollapsed ? '10px' : 'var(--spacing-unit)')};
122
+ align-items: center;
123
+ `;
124
+ //# sourceMappingURL=styled.js.map
@@ -1273,8 +1273,7 @@ const apiReferenceDocs = (0, styled_components_1.css) `
1273
1273
  /**
1274
1274
  * @tokens API Reference Schemas Layout
1275
1275
  */
1276
-
1277
- --layout-controls-top-offset: 20px; // @presenter Spacing
1276
+ --layout-controls-margin: 20px; // @presenter Spacing
1278
1277
  --layout-controls-height: 36px; // @presenter Spacing
1279
1278
  --layout-controls-width: 36px; // @presenter Spacing
1280
1279
 
package/lib/index.d.ts CHANGED
@@ -24,3 +24,4 @@ export * from './config';
24
24
  export * from './Pages';
25
25
  export * from './Markdown';
26
26
  export * from './ReferenceDocs';
27
+ export * from './SidebarActions';