@redocly/theme 0.2.1 → 0.3.0

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 (45) hide show
  1. package/ColorModeSwitcher/ColorModeSwitcher.d.ts +2 -0
  2. package/ColorModeSwitcher/ColorModeSwitcher.js +80 -0
  3. package/ColorModeSwitcher/index.d.ts +1 -0
  4. package/ColorModeSwitcher/index.js +17 -0
  5. package/CopyButton/CopyButtonWrapper.d.ts +2 -1
  6. package/CopyButton/CopyButtonWrapper.js +3 -2
  7. package/Markdown/Details.d.ts +6 -0
  8. package/Markdown/Details.js +22 -0
  9. package/Markdown/MarkdownLayout.d.ts +3 -1
  10. package/Markdown/MarkdownLayout.js +2 -2
  11. package/Navbar/Navbar.js +3 -1
  12. package/Navbar/NavbarMenu.js +1 -1
  13. package/PageNavigation/PageNavigation.d.ts +6 -1
  14. package/PageNavigation/PageNavigation.js +4 -3
  15. package/SourceCode/SourceCode.js +5 -5
  16. package/globalStyle.d.ts +1 -0
  17. package/globalStyle.js +26 -24
  18. package/hooks/useActiveHeading.js +6 -5
  19. package/icons/ColorModeIcon/ColorModeIcon.d.ts +10 -0
  20. package/icons/ColorModeIcon/ColorModeIcon.js +30 -0
  21. package/icons/ColorModeIcon/index.d.ts +2 -0
  22. package/icons/ColorModeIcon/index.js +5 -0
  23. package/icons/index.d.ts +1 -0
  24. package/icons/index.js +1 -0
  25. package/index.d.ts +1 -0
  26. package/index.js +1 -0
  27. package/mocks/hooks/index.js +4 -0
  28. package/package.json +1 -1
  29. package/src/ColorModeSwitcher/ColorModeSwitcher.tsx +48 -0
  30. package/src/ColorModeSwitcher/index.ts +1 -0
  31. package/src/CopyButton/CopyButtonWrapper.tsx +6 -3
  32. package/src/Markdown/Details.tsx +19 -0
  33. package/src/Markdown/MarkdownLayout.tsx +5 -1
  34. package/src/Navbar/Navbar.tsx +2 -0
  35. package/src/Navbar/NavbarMenu.tsx +2 -2
  36. package/src/PageNavigation/PageNavigation.tsx +11 -3
  37. package/src/SourceCode/SourceCode.tsx +4 -4
  38. package/src/globalStyle.ts +41 -1
  39. package/src/hooks/useActiveHeading.ts +41 -34
  40. package/src/icons/ColorModeIcon/ColorModeIcon.tsx +53 -0
  41. package/src/icons/ColorModeIcon/index.ts +2 -0
  42. package/src/icons/index.ts +1 -0
  43. package/src/index.ts +1 -0
  44. package/src/mocks/hooks/index.ts +4 -0
  45. package/{settings.yaml → src/settings.yaml} +6 -0
@@ -0,0 +1,2 @@
1
+ /// <reference types="react" />
2
+ export declare function ColorModeSwitcher(): JSX.Element | null;
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
3
+ if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
4
+ return cooked;
5
+ };
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
19
+ }) : function(o, v) {
20
+ o["default"] = v;
21
+ });
22
+ var __importStar = (this && this.__importStar) || function (mod) {
23
+ if (mod && mod.__esModule) return mod;
24
+ var result = {};
25
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
26
+ __setModuleDefault(result, mod);
27
+ return result;
28
+ };
29
+ var __read = (this && this.__read) || function (o, n) {
30
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
31
+ if (!m) return o;
32
+ var i = m.call(o), r, ar = [], e;
33
+ try {
34
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
35
+ }
36
+ catch (error) { e = { error: error }; }
37
+ finally {
38
+ try {
39
+ if (r && !r.done && (m = i["return"])) m.call(i);
40
+ }
41
+ finally { if (e) throw e.error; }
42
+ }
43
+ return ar;
44
+ };
45
+ var __importDefault = (this && this.__importDefault) || function (mod) {
46
+ return (mod && mod.__esModule) ? mod : { "default": mod };
47
+ };
48
+ Object.defineProperty(exports, "__esModule", { value: true });
49
+ exports.ColorModeSwitcher = void 0;
50
+ var react_1 = __importStar(require("react"));
51
+ var styled_components_1 = __importDefault(require("styled-components"));
52
+ var hooks_1 = require("../mocks/hooks");
53
+ var constants_1 = require("../mocks/constants");
54
+ var ColorModeIcon_1 = require("../icons/ColorModeIcon");
55
+ var hooks_2 = require("../hooks");
56
+ function ColorModeSwitcher() {
57
+ var themeSettings = (0, hooks_1.useThemeSettings)(constants_1.DEFAULT_THEME_NAME);
58
+ var colorMode = themeSettings.colorMode;
59
+ var _a = __read((0, react_1.useState)(''), 2), activeColorMode = _a[0], setActiveColorMode = _a[1];
60
+ (0, hooks_2.useMount)(function () {
61
+ setActiveColorMode(document.documentElement.className || (colorMode === null || colorMode === void 0 ? void 0 : colorMode.default));
62
+ });
63
+ if (!(colorMode === null || colorMode === void 0 ? void 0 : colorMode.modes) || (colorMode === null || colorMode === void 0 ? void 0 : colorMode.hide)) {
64
+ return null;
65
+ }
66
+ var handelChangeColorMode = function () {
67
+ var activeIndex = colorMode.modes.indexOf(activeColorMode);
68
+ var mode = activeIndex < colorMode.modes.length - 1
69
+ ? colorMode.modes[activeIndex + 1]
70
+ : colorMode.modes[0];
71
+ setActiveColorMode(mode);
72
+ localStorage.setItem('colorSchema', mode);
73
+ document.documentElement.className = mode;
74
+ };
75
+ return (react_1.default.createElement(Wrapper, { "data-component-name": "ColorModeSwitcher/ColorModeSwitcher", onClick: handelChangeColorMode },
76
+ react_1.default.createElement(ColorModeIcon_1.ColorModeIcon, { mode: activeColorMode })));
77
+ }
78
+ exports.ColorModeSwitcher = ColorModeSwitcher;
79
+ var Wrapper = styled_components_1.default.div(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n margin-left: calc(var(--sidebar-spacing-horizontal) * 2);\n display: flex;\n align-items: center;\n cursor: pointer;\n"], ["\n margin-left: calc(var(--sidebar-spacing-horizontal) * 2);\n display: flex;\n align-items: center;\n cursor: pointer;\n"])));
80
+ var templateObject_1;
@@ -0,0 +1 @@
1
+ export * from '../ColorModeSwitcher/ColorModeSwitcher';
@@ -0,0 +1,17 @@
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("../ColorModeSwitcher/ColorModeSwitcher"), exports);
@@ -1,8 +1,9 @@
1
1
  import React from 'react';
2
+ import { TooltipProps } from '../Tooltip';
2
3
  export interface CopyButtonWrapperProps {
3
4
  data: unknown;
4
5
  children: (props: {
5
- renderCopyButton: () => JSX.Element;
6
+ renderCopyButton: (placement?: TooltipProps['placement']) => JSX.Element;
6
7
  }) => JSX.Element;
7
8
  dataTestId?: string;
8
9
  }
@@ -43,8 +43,9 @@ function CopyButtonWrapperComponent(_a) {
43
43
  utils_1.ClipboardService.copyCustom(content);
44
44
  showTooltip();
45
45
  };
46
- var renderCopyButton = function () {
47
- return (react_1.default.createElement(Tooltip_1.Tooltip, { className: "copy-button", tip: utils_1.ClipboardService.isSupported() ? 'Copied' : 'Not supported in your browser', isOpen: tooltip.isOpened },
46
+ var renderCopyButton = function (placement) {
47
+ if (placement === void 0) { placement = 'top'; }
48
+ return (react_1.default.createElement(Tooltip_1.Tooltip, { className: "copy-button", tip: utils_1.ClipboardService.isSupported() ? 'Copied' : 'Not supported in your browser', isOpen: tooltip.isOpened, placement: placement },
48
49
  react_1.default.createElement(SamplesPanelControls_1.SamplesControlButton, { onClick: copy, "data-cy": dataTestId }, "Copy")));
49
50
  };
50
51
  return children({ renderCopyButton: renderCopyButton });
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ declare type DetailsProps = {
3
+ summary: string;
4
+ };
5
+ export declare function Details({ summary, children }: React.PropsWithChildren<DetailsProps>): JSX.Element;
6
+ export {};
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
3
+ if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
4
+ return cooked;
5
+ };
6
+ var __importDefault = (this && this.__importDefault) || function (mod) {
7
+ return (mod && mod.__esModule) ? mod : { "default": mod };
8
+ };
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.Details = void 0;
11
+ var react_1 = __importDefault(require("react"));
12
+ var styled_components_1 = __importDefault(require("styled-components"));
13
+ function Details(_a) {
14
+ var summary = _a.summary, children = _a.children;
15
+ return (react_1.default.createElement(StyledDetails, null,
16
+ react_1.default.createElement("summary", null, summary),
17
+ react_1.default.createElement(StyledDetailsContent, null, children)));
18
+ }
19
+ exports.Details = Details;
20
+ var StyledDetails = styled_components_1.default.details(templateObject_1 || (templateObject_1 = __makeTemplateObject([""], [""])));
21
+ var StyledDetailsContent = styled_components_1.default.div(templateObject_2 || (templateObject_2 = __makeTemplateObject([""], [""])));
22
+ var templateObject_1, templateObject_2;
@@ -2,6 +2,8 @@ import React from 'react';
2
2
  declare type MarkdownLayoutProps = {
3
3
  tableOfContent: React.ReactNode;
4
4
  markdownWrapper: React.ReactNode;
5
+ showPrevButton?: boolean;
6
+ showNextButton?: boolean;
5
7
  };
6
- export declare function MarkdownLayout({ tableOfContent, markdownWrapper, }: MarkdownLayoutProps): JSX.Element;
8
+ export declare function MarkdownLayout({ tableOfContent, markdownWrapper, showPrevButton, showNextButton, }: MarkdownLayoutProps): JSX.Element;
7
9
  export {};
@@ -9,11 +9,11 @@ var PageWrapper_1 = require("../Markdown/PageWrapper");
9
9
  var ContentWrapper_1 = require("../Markdown/ContentWrapper");
10
10
  var PageNavigation_1 = require("../PageNavigation/PageNavigation");
11
11
  function MarkdownLayout(_a) {
12
- var tableOfContent = _a.tableOfContent, markdownWrapper = _a.markdownWrapper;
12
+ var tableOfContent = _a.tableOfContent, markdownWrapper = _a.markdownWrapper, showPrevButton = _a.showPrevButton, showNextButton = _a.showNextButton;
13
13
  return (react_1.default.createElement(PageWrapper_1.PageWrapper, { "data-component-name": "Markdown/MarkdownLayout" },
14
14
  react_1.default.createElement(ContentWrapper_1.ContentWrapper, { withToc: true },
15
15
  markdownWrapper,
16
- react_1.default.createElement(PageNavigation_1.PageNavigation, null)),
16
+ react_1.default.createElement(PageNavigation_1.PageNavigation, { showPrevButton: showPrevButton, showNextButton: showNextButton })),
17
17
  tableOfContent));
18
18
  }
19
19
  exports.MarkdownLayout = MarkdownLayout;
package/Navbar/Navbar.js CHANGED
@@ -32,6 +32,7 @@ var Navbar_1 = require("../Navbar");
32
32
  var useMobileMenu_1 = require("../hooks/useMobileMenu");
33
33
  var MobileNavbarMenuButton_1 = require("../Navbar/MobileNavbarMenuButton");
34
34
  var MobileNavbarMenu_1 = require("../Navbar/MobileNavbarMenu");
35
+ var ColorModeSwitcher_1 = require("../ColorModeSwitcher/ColorModeSwitcher");
35
36
  function Navbar(_a) {
36
37
  var menu = _a.menu, logo = _a.logo, search = _a.search, profile = _a.profile;
37
38
  var _b = __read((0, useMobileMenu_1.useMobileMenu)(false), 2), isOpen = _b[0], setIsOpen = _b[1];
@@ -48,7 +49,8 @@ function Navbar(_a) {
48
49
  logo,
49
50
  react_1.default.createElement(Navbar_1.NavbarMenu, { menuItems: menu }),
50
51
  hideSearch ? null : search,
51
- profile));
52
+ profile,
53
+ react_1.default.createElement(ColorModeSwitcher_1.ColorModeSwitcher, null)));
52
54
  }
53
55
  exports.Navbar = Navbar;
54
56
  exports.NavbarContainer = styled_components_1.default.nav(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n height: var(--navbar-height);\n box-sizing: border-box;\n display: flex;\n color: var(--navbar-text-color);\n align-items: center;\n justify-content: space-between;\n flex-shrink: 0;\n\n font-size: 0.875rem;\n position: sticky;\n top: 0;\n z-index: 200;\n padding: 10px var(--sidebar-margin-left);\n background: var(--navbar-background-color);\n font-family: var(--h-font-family);\n\n ", " {\n padding: 10px var(--sidebar-margin-left);\n font-size: 1rem;\n }\n\n ", " {\n background: transparent;\n display: none;\n > :not(a, img) {\n display: none !important;\n }\n img {\n padding: 0;\n margin: 0;\n }\n }\n"], ["\n height: var(--navbar-height);\n box-sizing: border-box;\n display: flex;\n color: var(--navbar-text-color);\n align-items: center;\n justify-content: space-between;\n flex-shrink: 0;\n\n font-size: 0.875rem;\n position: sticky;\n top: 0;\n z-index: 200;\n padding: 10px var(--sidebar-margin-left);\n background: var(--navbar-background-color);\n font-family: var(--h-font-family);\n\n ", " {\n padding: 10px var(--sidebar-margin-left);\n font-size: 1rem;\n }\n\n ", " {\n background: transparent;\n display: none;\n > :not(a, img) {\n display: none !important;\n }\n img {\n padding: 0;\n margin: 0;\n }\n }\n"])), function (_a) {
@@ -14,7 +14,7 @@ var NavbarItem_1 = require("../Navbar/NavbarItem");
14
14
  var utils_1 = require("../utils");
15
15
  function NavbarMenu(_a) {
16
16
  var menuItems = _a.menuItems;
17
- if ((0, utils_1.isPrimitive)(menuItems) || (0, utils_1.isEmptyArray)(menuItems)) {
17
+ if ((0, utils_1.isPrimitive)(menuItems)) {
18
18
  return null;
19
19
  }
20
20
  return (react_1.default.createElement(NavItemsContainer, { "data-component-name": "Navbar/NavbarMenu" }, menuItems.map(function (navItem, index) {
@@ -1,2 +1,7 @@
1
1
  /// <reference types="react" />
2
- export declare function PageNavigation(): JSX.Element | null;
2
+ declare type PageNavigationProps = {
3
+ showPrevButton?: boolean;
4
+ showNextButton?: boolean;
5
+ };
6
+ export declare function PageNavigation({ showPrevButton, showNextButton, }: PageNavigationProps): JSX.Element | null;
7
+ export {};
@@ -14,14 +14,15 @@ var PreviousPageLink_1 = require("../PageNavigation/PreviousPageLink");
14
14
  var NextPageLink_1 = require("../PageNavigation/NextPageLink");
15
15
  var hooks_1 = require("../mocks/hooks");
16
16
  var constants_1 = require("../mocks/constants");
17
- function PageNavigation() {
17
+ function PageNavigation(_a) {
18
+ var _b = _a.showPrevButton, showPrevButton = _b === void 0 ? true : _b, _c = _a.showNextButton, showNextButton = _c === void 0 ? true : _c;
18
19
  var navigation = (0, hooks_1.useThemeSettings)(constants_1.DEFAULT_THEME_NAME).navigation;
19
20
  if (navigation === null || navigation === void 0 ? void 0 : navigation.hide) {
20
21
  return null;
21
22
  }
22
23
  return (react_1.default.createElement(PageNavigationWrapper, { "data-component-name": "PageNavigation/PageNavigation" },
23
- react_1.default.createElement(PreviousPageLink_1.PreviousPageLink, null),
24
- react_1.default.createElement(NextPageLink_1.NextPageLink, null)));
24
+ showPrevButton && react_1.default.createElement(PreviousPageLink_1.PreviousPageLink, null),
25
+ showNextButton && react_1.default.createElement(NextPageLink_1.NextPageLink, null)));
25
26
  }
26
27
  exports.PageNavigation = PageNavigation;
27
28
  var PageNavigationWrapper = styled_components_1.default.div(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n display: flex;\n justify-content: space-between;\n margin: 25px 0;\n"], ["\n display: flex;\n justify-content: space-between;\n margin: 25px 0;\n"])));
@@ -61,12 +61,12 @@ function SourceCode(_a) {
61
61
  // Because we don't have session storage in ssr and can't get the security details there
62
62
  // Issue for more details https://github.com/Redocly/reference-docs/issues/888
63
63
  (0, react_1.useEffect)(function () {
64
- var _a, _b, _c;
65
- var _externalSource = (_c = (_b = (_a = externalSource === null || externalSource === void 0 ? void 0 : externalSource.sample) === null || _a === void 0 ? void 0 : _a.get) === null || _b === void 0 ? void 0 : _b.call(_a, externalSource)) !== null && _c !== void 0 ? _c : '';
66
- if (_externalSource) {
67
- setSourceCode(_externalSource);
64
+ var _a, _b;
65
+ var _source = source || ((_b = (_a = externalSource === null || externalSource === void 0 ? void 0 : externalSource.sample) === null || _a === void 0 ? void 0 : _a.get) === null || _b === void 0 ? void 0 : _b.call(_a, externalSource));
66
+ if (_source) {
67
+ setSourceCode(_source);
68
68
  }
69
- }, [externalSource]);
69
+ }, [source, externalSource]);
70
70
  if (withCopyButton) {
71
71
  return (react_1.default.createElement(CopyButton_1.CopyButtonWrapper, { data: sourceCode, "data-component-name": "SourceCode/SourceCode" }, function (_a) {
72
72
  var renderCopyButton = _a.renderCopyButton;
package/globalStyle.d.ts CHANGED
@@ -1,2 +1,3 @@
1
+ export declare const darkMode: import("styled-components").FlattenSimpleInterpolation;
1
2
  export declare const styles: import("styled-components").FlattenSimpleInterpolation;
2
3
  export declare const GlobalStyle: import("styled-components").GlobalStyleComponent<{}, import("styled-components").DefaultTheme>;