@redocly/theme 0.1.13 → 0.1.16

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 (76) hide show
  1. package/CopyButton/CopyButton.js +24 -13
  2. package/CopyButton/CopyButtonWrapper.js +25 -13
  3. package/Footer/Footer.js +4 -13
  4. package/Footer/FooterColumn.js +9 -18
  5. package/Footer/FooterColumns.js +3 -13
  6. package/Footer/FooterCopyright.js +2 -13
  7. package/JsonViewer/JsonViewer.js +33 -16
  8. package/Layout/PageLayout.js +4 -13
  9. package/Layout/RootLayout.js +5 -13
  10. package/Markdown/Admonition.js +5 -13
  11. package/Markdown/CodeSample/CodeSample.d.ts +8 -0
  12. package/Markdown/CodeSample/CodeSample.js +46 -0
  13. package/Markdown/CodeSample/index.d.ts +2 -0
  14. package/Markdown/CodeSample/index.js +18 -0
  15. package/Markdown/CodeSample/styled.d.ts +4 -0
  16. package/Markdown/CodeSample/styled.js +85 -0
  17. package/Markdown/Heading.js +29 -15
  18. package/Markdown/MarkdownLayout.js +8 -12
  19. package/Markdown/Mermaid.js +2 -2
  20. package/Markdown/Tabs/Tab.js +2 -13
  21. package/Markdown/Tabs/Tabs.js +33 -20
  22. package/Markdown/index.d.ts +1 -0
  23. package/Markdown/index.js +1 -0
  24. package/Navbar/Navbar.js +5 -13
  25. package/Navbar/NavbarItem.js +4 -13
  26. package/Navbar/NavbarMenu.js +4 -15
  27. package/NavbarLogo/NavbarLogo.js +3 -14
  28. package/PageNavigation/NextPageLink.js +8 -14
  29. package/PageNavigation/PageNavigation.js +4 -13
  30. package/PageNavigation/PreviousPageLink.js +8 -14
  31. package/Panel/PanelComponent.js +30 -14
  32. package/Search/Autocomplete.js +30 -3
  33. package/Search/ClearIcon.js +3 -2
  34. package/Search/Parameters.js +17 -17
  35. package/Search/Search.js +3 -13
  36. package/Search/SearchIcon.js +3 -2
  37. package/Search/SearchItem.js +30 -13
  38. package/Search/utils.js +28 -2
  39. package/Sidebar/ApiCallItem.js +7 -13
  40. package/Sidebar/ArrowBack.js +5 -13
  41. package/Sidebar/BackButton.js +4 -13
  42. package/Sidebar/Drilldown.js +6 -2
  43. package/Sidebar/DrilldownMenu.js +10 -13
  44. package/Sidebar/DrilldownMenuItem.js +6 -13
  45. package/Sidebar/ExternalIcon.js +7 -13
  46. package/Sidebar/MenuGroup.js +8 -13
  47. package/Sidebar/MenuItem.js +7 -13
  48. package/Sidebar/MenuLinkItem.js +2 -2
  49. package/Sidebar/Separator.js +4 -13
  50. package/Sidebar/SidebarLayout.js +6 -13
  51. package/SidebarLogo/SidebarLogo.js +3 -14
  52. package/SourceCode/SourceCode.js +11 -17
  53. package/TableOfContent/TableOfContent.js +40 -26
  54. package/Tooltip/Tooltip.js +4 -14
  55. package/icons/ShelfIcon/ShelfIcon.js +4 -13
  56. package/mocks/Link.js +5 -2
  57. package/mocks/hooks/usePageData.d.ts +1 -1
  58. package/package.json +1 -1
  59. package/src/Markdown/CodeSample/CodeSample.tsx +39 -0
  60. package/src/Markdown/CodeSample/index.ts +2 -0
  61. package/src/Markdown/CodeSample/styled.ts +209 -0
  62. package/src/Markdown/index.ts +1 -0
  63. package/src/PageNavigation/NextPageLink.tsx +2 -2
  64. package/src/PageNavigation/PreviousPageLink.tsx +2 -2
  65. package/src/Search/SearchItem.tsx +1 -1
  66. package/src/mocks/hooks/usePageData.ts +1 -1
  67. package/src/utils/ClipboardService.ts +1 -1
  68. package/ui/AlertIcon.js +20 -17
  69. package/ui/Arrow.js +4 -13
  70. package/ui/Button.js +6 -3
  71. package/ui/Dropdown.js +32 -14
  72. package/ui/Flex.js +2 -2
  73. package/ui/Tiles/ThinTile.js +29 -13
  74. package/ui/Tiles/WideTile.js +29 -13
  75. package/ui/UniversalLink.js +26 -3
  76. package/utils/ClipboardService.js +1 -1
@@ -3,23 +3,12 @@ var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cook
3
3
  if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
4
4
  return cooked;
5
5
  };
6
- var __assign = (this && this.__assign) || function () {
7
- __assign = Object.assign || function(t) {
8
- for (var s, i = 1, n = arguments.length; i < n; i++) {
9
- s = arguments[i];
10
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
11
- t[p] = s[p];
12
- }
13
- return t;
14
- };
15
- return __assign.apply(this, arguments);
16
- };
17
6
  var __importDefault = (this && this.__importDefault) || function (mod) {
18
7
  return (mod && mod.__esModule) ? mod : { "default": mod };
19
8
  };
20
9
  Object.defineProperty(exports, "__esModule", { value: true });
21
10
  exports.SidebarLayout = void 0;
22
- var jsx_runtime_1 = require("react/jsx-runtime");
11
+ var react_1 = __importDefault(require("react"));
23
12
  var styled_components_1 = __importDefault(require("styled-components"));
24
13
  var Sidebar_1 = require("../Sidebar/Sidebar");
25
14
  var useMobileMenu_1 = require("../hooks/useMobileMenu");
@@ -29,7 +18,11 @@ function SidebarLayout(_a) {
29
18
  var versions = _a.versions, menu = _a.menu;
30
19
  var _b = (0, useMobileMenu_1.useMobileMenu)(), isOpen = _b[0], setIsOpen = _b[1];
31
20
  var toggleMenu = function () { return setIsOpen(!isOpen); };
32
- return ((0, jsx_runtime_1.jsxs)(Wrapper, __assign({ "data-component-name": "Sidebar/SidebarLayout" }, { children: [(0, jsx_runtime_1.jsx)(MobileSidebarButton_1.MobileSidebarButton, { opened: isOpen, onClick: toggleMenu }), (0, jsx_runtime_1.jsxs)(Sidebar_1.Sidebar, __assign({ animate: true, opened: isOpen }, { children: [versions, (0, jsx_runtime_1.jsx)(MenuContainer_1.MenuContainer, { children: menu })] }))] })));
21
+ return (react_1.default.createElement(Wrapper, { "data-component-name": "Sidebar/SidebarLayout" },
22
+ react_1.default.createElement(MobileSidebarButton_1.MobileSidebarButton, { opened: isOpen, onClick: toggleMenu }),
23
+ react_1.default.createElement(Sidebar_1.Sidebar, { animate: true, opened: isOpen },
24
+ versions,
25
+ react_1.default.createElement(MenuContainer_1.MenuContainer, null, menu))));
33
26
  }
34
27
  exports.SidebarLayout = SidebarLayout;
35
28
  var Wrapper = styled_components_1.default.div(templateObject_1 || (templateObject_1 = __makeTemplateObject([""], [""])));
@@ -3,31 +3,20 @@ var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cook
3
3
  if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
4
4
  return cooked;
5
5
  };
6
- var __assign = (this && this.__assign) || function () {
7
- __assign = Object.assign || function(t) {
8
- for (var s, i = 1, n = arguments.length; i < n; i++) {
9
- s = arguments[i];
10
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
11
- t[p] = s[p];
12
- }
13
- return t;
14
- };
15
- return __assign.apply(this, arguments);
16
- };
17
6
  var __importDefault = (this && this.__importDefault) || function (mod) {
18
7
  return (mod && mod.__esModule) ? mod : { "default": mod };
19
8
  };
20
9
  Object.defineProperty(exports, "__esModule", { value: true });
21
10
  exports.SidebarLogo = void 0;
22
- var jsx_runtime_1 = require("react/jsx-runtime");
11
+ var react_1 = __importDefault(require("react"));
23
12
  var styled_components_1 = __importDefault(require("styled-components"));
24
13
  function SidebarLogo(_a) {
25
14
  var _b = _a === void 0 ? {} : _a, imageUrl = _b.imageUrl, href = _b.href, altText = _b.altText, backgroundColor = _b.backgroundColor, dataTestId = _b.dataTestId;
26
15
  if (!imageUrl) {
27
16
  return null;
28
17
  }
29
- var logo = (0, jsx_runtime_1.jsx)(LogoImgEl, { src: imageUrl, alt: altText || 'logo' });
30
- return ((0, jsx_runtime_1.jsx)(LogoWrap, __assign({ "data-cy": dataTestId, style: { backgroundColor: backgroundColor } }, { children: href ? (0, jsx_runtime_1.jsx)(Link, __assign({ href: href }, { children: logo })) : logo })));
18
+ var logo = react_1.default.createElement(LogoImgEl, { src: imageUrl, alt: altText || 'logo' });
19
+ return (react_1.default.createElement(LogoWrap, { "data-cy": dataTestId, style: { backgroundColor: backgroundColor } }, href ? react_1.default.createElement(Link, { href: href }, logo) : logo));
31
20
  }
32
21
  exports.SidebarLogo = SidebarLogo;
33
22
  var LogoImgEl = styled_components_1.default.img(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n max-height: var(--logo-max-height);\n max-width: var(--logo-max-width);\n padding: var(--logo-padding);\n width: 100%;\n display: block;\n"], ["\n max-height: var(--logo-max-height);\n max-width: var(--logo-max-width);\n padding: var(--logo-padding);\n width: 100%;\n display: block;\n"])));
@@ -1,24 +1,16 @@
1
1
  "use strict";
2
- var __assign = (this && this.__assign) || function () {
3
- __assign = Object.assign || function(t) {
4
- for (var s, i = 1, n = arguments.length; i < n; i++) {
5
- s = arguments[i];
6
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
- t[p] = s[p];
8
- }
9
- return t;
10
- };
11
- return __assign.apply(this, arguments);
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
12
4
  };
13
5
  Object.defineProperty(exports, "__esModule", { value: true });
14
6
  exports.SourceCode = exports.Code = void 0;
15
- var jsx_runtime_1 = require("react/jsx-runtime");
7
+ var react_1 = __importDefault(require("react"));
16
8
  var utils_1 = require("../utils");
17
9
  var SamplesPanelControls_1 = require("../SamplesPanelControls");
18
10
  var CopyButton_1 = require("../CopyButton");
19
11
  function Code(_a) {
20
12
  var source = _a.source, lang = _a.lang, dataTestId = _a.dataTestId;
21
- return ((0, jsx_runtime_1.jsx)(SamplesPanelControls_1.PreformattedCodeBlock, { dangerouslySetInnerHTML: { __html: (0, utils_1.highlight)(source, lang) }, "data-cy": dataTestId }));
13
+ return (react_1.default.createElement(SamplesPanelControls_1.PreformattedCodeBlock, { dangerouslySetInnerHTML: { __html: (0, utils_1.highlight)(source, lang) }, "data-cy": dataTestId }));
22
14
  }
23
15
  exports.Code = Code;
24
16
  function SourceCode(_a) {
@@ -26,11 +18,13 @@ function SourceCode(_a) {
26
18
  var lang = _a.lang, source = _a.source, externalSource = _a.externalSource, withCopyButton = _a.withCopyButton, _d = _a.dataTestId, dataTestId = _d === void 0 ? 'source-code' : _d;
27
19
  var _source = source || ((_c = (_b = externalSource === null || externalSource === void 0 ? void 0 : externalSource.sample) === null || _b === void 0 ? void 0 : _b.get) === null || _c === void 0 ? void 0 : _c.call(_b, externalSource)) || '';
28
20
  if (withCopyButton) {
29
- return ((0, jsx_runtime_1.jsx)(CopyButton_1.CopyButtonWrapper, __assign({ data: source }, { children: function (_a) {
30
- var renderCopyButton = _a.renderCopyButton;
31
- return ((0, jsx_runtime_1.jsxs)(SamplesPanelControls_1.SampleControlsWrap, { children: [(0, jsx_runtime_1.jsx)(SamplesPanelControls_1.SampleControls, __assign({ "data-cy": "copy-button" }, { children: renderCopyButton() })), (0, jsx_runtime_1.jsx)(Code, { lang: lang, source: _source, dataTestId: dataTestId })] }));
32
- } })));
21
+ return (react_1.default.createElement(CopyButton_1.CopyButtonWrapper, { data: source }, function (_a) {
22
+ var renderCopyButton = _a.renderCopyButton;
23
+ return (react_1.default.createElement(SamplesPanelControls_1.SampleControlsWrap, null,
24
+ react_1.default.createElement(SamplesPanelControls_1.SampleControls, { "data-cy": "copy-button" }, renderCopyButton()),
25
+ react_1.default.createElement(Code, { lang: lang, source: _source, dataTestId: dataTestId })));
26
+ }));
33
27
  }
34
- return (0, jsx_runtime_1.jsx)(Code, { dataTestId: dataTestId, lang: lang, source: _source });
28
+ return react_1.default.createElement(Code, { dataTestId: dataTestId, lang: lang, source: _source });
35
29
  }
36
30
  exports.SourceCode = SourceCode;
@@ -3,24 +3,35 @@ var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cook
3
3
  if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
4
4
  return cooked;
5
5
  };
6
- var __assign = (this && this.__assign) || function () {
7
- __assign = Object.assign || function(t) {
8
- for (var s, i = 1, n = arguments.length; i < n; i++) {
9
- s = arguments[i];
10
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
11
- t[p] = s[p];
12
- }
13
- return t;
14
- };
15
- return __assign.apply(this, arguments);
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;
16
28
  };
17
29
  var __importDefault = (this && this.__importDefault) || function (mod) {
18
30
  return (mod && mod.__esModule) ? mod : { "default": mod };
19
31
  };
20
32
  Object.defineProperty(exports, "__esModule", { value: true });
21
33
  exports.TableOfContent = void 0;
22
- var jsx_runtime_1 = require("react/jsx-runtime");
23
- var react_1 = require("react");
34
+ var react_1 = __importStar(require("react"));
24
35
  var styled_components_1 = __importDefault(require("styled-components"));
25
36
  var useFullHeight_1 = require("../hooks/useFullHeight");
26
37
  var useActiveHeading_1 = require("../hooks/useActiveHeading");
@@ -35,20 +46,23 @@ function TableOfContent(props) {
35
46
  if (!(headings === null || headings === void 0 ? void 0 : headings.length)) {
36
47
  return null;
37
48
  }
38
- return ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: headings && ((0, jsx_runtime_1.jsx)(TableOfContentMenu, __assign({ "data-component-name": "TableOfContent/TableOfContent" }, { children: (0, jsx_runtime_1.jsxs)(TableOfContentItems, __assign({ ref: sidebar }, { children: [(0, jsx_runtime_1.jsx)(TocHeader, { children: "On this page" }), headings.map(function (heading, idx) {
39
- // TODO: not sure about !heading
40
- if (!heading) {
41
- return null;
42
- }
43
- if (idx === 0 && heading.depth === 1) {
44
- return null;
45
- }
46
- if (heading.depth && heading.depth > tocMaxDepth) {
47
- return null;
48
- }
49
- var href = '#' + heading.id;
50
- return ((0, jsx_runtime_1.jsx)(MenuItem, { href: href, depth: heading.depth || 0, className: activeHeadingId === heading.id ? 'active' : '', dangerouslySetInnerHTML: { __html: heading.value || '' }, "data-cy": "toc-".concat(heading.value) }, href));
51
- })] })) }))) }));
49
+ return (react_1.default.createElement(react_1.default.Fragment, null, headings && (react_1.default.createElement(TableOfContentMenu, { "data-component-name": "TableOfContent/TableOfContent" },
50
+ react_1.default.createElement(TableOfContentItems, { ref: sidebar },
51
+ react_1.default.createElement(TocHeader, null, "On this page"),
52
+ headings.map(function (heading, idx) {
53
+ // TODO: not sure about !heading
54
+ if (!heading) {
55
+ return null;
56
+ }
57
+ if (idx === 0 && heading.depth === 1) {
58
+ return null;
59
+ }
60
+ if (heading.depth && heading.depth > tocMaxDepth) {
61
+ return null;
62
+ }
63
+ var href = '#' + heading.id;
64
+ return (react_1.default.createElement(MenuItem, { key: href, href: href, depth: heading.depth || 0, className: activeHeadingId === heading.id ? 'active' : '', dangerouslySetInnerHTML: { __html: heading.value || '' }, "data-cy": "toc-".concat(heading.value) }));
65
+ }))))));
52
66
  }
53
67
  exports.TableOfContent = TableOfContent;
54
68
  var TocHeader = styled_components_1.default.div(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n font-size: 0.8em;\n padding: 10px 15px;\n font-weight: bold;\n text-transform: uppercase;\n"], ["\n font-size: 0.8em;\n padding: 10px 15px;\n font-weight: bold;\n text-transform: uppercase;\n"])));
@@ -3,17 +3,6 @@ var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cook
3
3
  if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
4
4
  return cooked;
5
5
  };
6
- var __assign = (this && this.__assign) || function () {
7
- __assign = Object.assign || function(t) {
8
- for (var s, i = 1, n = arguments.length; i < n; i++) {
9
- s = arguments[i];
10
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
11
- t[p] = s[p];
12
- }
13
- return t;
14
- };
15
- return __assign.apply(this, arguments);
16
- };
17
6
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
18
7
  if (k2 === undefined) k2 = k;
19
8
  var desc = Object.getOwnPropertyDescriptor(m, k);
@@ -39,8 +28,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
39
28
  };
40
29
  Object.defineProperty(exports, "__esModule", { value: true });
41
30
  exports.Tooltip = exports.TooltipComponent = void 0;
42
- var jsx_runtime_1 = require("react/jsx-runtime");
43
- var react_1 = require("react");
31
+ var react_1 = __importStar(require("react"));
44
32
  var styled_components_1 = __importStar(require("styled-components"));
45
33
  var hooks_1 = require("../hooks");
46
34
  function TooltipComponent(_a) {
@@ -63,7 +51,9 @@ function TooltipComponent(_a) {
63
51
  var handleLeave = (0, react_1.useCallback)(function () {
64
52
  handleClose();
65
53
  }, [handleClose]);
66
- return ((0, jsx_runtime_1.jsxs)(TooltipWrapper, __assign({ onMouseEnter: isControlled ? undefined : handleEnter, onMouseLeave: isControlled ? undefined : handleLeave, onClick: isControlled ? undefined : handleLeave, className: "tooltip-".concat(className) }, { children: [children, isOpened && ((0, jsx_runtime_1.jsx)(TooltipBody, __assign({ "data-cy": dataTestId, placement: placement, width: width }, { children: tip })))] })));
54
+ return (react_1.default.createElement(TooltipWrapper, { onMouseEnter: isControlled ? undefined : handleEnter, onMouseLeave: isControlled ? undefined : handleLeave, onClick: isControlled ? undefined : handleLeave, className: "tooltip-".concat(className) },
55
+ children,
56
+ isOpened && (react_1.default.createElement(TooltipBody, { "data-cy": dataTestId, placement: placement, width: width }, tip))));
67
57
  }
68
58
  exports.TooltipComponent = TooltipComponent;
69
59
  exports.Tooltip = (0, react_1.memo)(TooltipComponent);
@@ -3,17 +3,6 @@ var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cook
3
3
  if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
4
4
  return cooked;
5
5
  };
6
- var __assign = (this && this.__assign) || function () {
7
- __assign = Object.assign || function(t) {
8
- for (var s, i = 1, n = arguments.length; i < n; i++) {
9
- s = arguments[i];
10
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
11
- t[p] = s[p];
12
- }
13
- return t;
14
- };
15
- return __assign.apply(this, arguments);
16
- };
17
6
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
18
7
  if (k2 === undefined) k2 = k;
19
8
  var desc = Object.getOwnPropertyDescriptor(m, k);
@@ -39,7 +28,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
39
28
  };
40
29
  Object.defineProperty(exports, "__esModule", { value: true });
41
30
  exports.ShelfIcon = void 0;
42
- var jsx_runtime_1 = require("react/jsx-runtime");
31
+ var React = __importStar(require("react"));
43
32
  var styled_components_1 = __importStar(require("styled-components"));
44
33
  var utils_1 = require("../../utils");
45
34
  var directionMap = {
@@ -50,7 +39,9 @@ var directionMap = {
50
39
  };
51
40
  var IntShelfIcon = function (_a) {
52
41
  var className = _a.className, style = _a.style;
53
- return ((0, jsx_runtime_1.jsxs)("svg", __assign({ className: className, style: style, viewBox: "0 0 4.25 7", xmlns: "http://www.w3.org/2000/svg", "aria-hidden": "true" }, { children: [(0, jsx_runtime_1.jsx)("path", { d: "M0.205025 1.19467L3.00503 3.99467C3.27839 4.26804 3.72161 4.26804 3.99497 3.99467C4.26834 3.7213 4.26834 3.27809 3.99497 3.00472L1.19497 0.20472C0.921608 -0.0686469 0.478392 -0.0686469 0.205025 0.20472C-0.0683418 0.478087 -0.0683417 0.921303 0.205025 1.19467Z" }), (0, jsx_runtime_1.jsx)("path", { d: "M3.00503 3.00501L0.205025 5.80501C-0.0683417 6.07838 -0.0683417 6.5216 0.205025 6.79496C0.478392 7.06833 0.921608 7.06833 1.19497 6.79496L3.99497 3.99496C4.26834 3.7216 4.26834 3.27838 3.99497 3.00501C3.72161 2.73165 3.27839 2.73165 3.00503 3.00501Z" })] })));
42
+ return (React.createElement("svg", { className: className, style: style, viewBox: "0 0 4.25 7", xmlns: "http://www.w3.org/2000/svg", "aria-hidden": "true" },
43
+ React.createElement("path", { d: "M0.205025 1.19467L3.00503 3.99467C3.27839 4.26804 3.72161 4.26804 3.99497 3.99467C4.26834 3.7213 4.26834 3.27809 3.99497 3.00472L1.19497 0.20472C0.921608 -0.0686469 0.478392 -0.0686469 0.205025 0.20472C-0.0683418 0.478087 -0.0683417 0.921303 0.205025 1.19467Z" }),
44
+ React.createElement("path", { d: "M3.00503 3.00501L0.205025 5.80501C-0.0683417 6.07838 -0.0683417 6.5216 0.205025 6.79496C0.478392 7.06833 0.921608 7.06833 1.19497 6.79496L3.99497 3.99496C4.26834 3.7216 4.26834 3.27838 3.99497 3.00501C3.72161 2.73165 3.27839 2.73165 3.00503 3.00501Z" })));
54
45
  };
55
46
  exports.ShelfIcon = (0, styled_components_1.default)(IntShelfIcon)(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n ", "\n vertical-align: middle;\n transition: transform 0.2s ease-out;\n"], ["\n ", "\n vertical-align: middle;\n transition: transform 0.2s ease-out;\n"])), function (_a) {
56
47
  var _b = _a.size, size = _b === void 0 ? '9px' : _b, _c = _a.float, float = _c === void 0 ? '' : _c, direction = _a.direction, color = _a.color;
package/mocks/Link.js CHANGED
@@ -10,15 +10,18 @@ var __assign = (this && this.__assign) || function () {
10
10
  };
11
11
  return __assign.apply(this, arguments);
12
12
  };
13
+ var __importDefault = (this && this.__importDefault) || function (mod) {
14
+ return (mod && mod.__esModule) ? mod : { "default": mod };
15
+ };
13
16
  Object.defineProperty(exports, "__esModule", { value: true });
14
17
  exports.Link = void 0;
15
- var jsx_runtime_1 = require("react/jsx-runtime");
18
+ var react_1 = __importDefault(require("react"));
16
19
  var lodash_1 = require("lodash");
17
20
  // TODO: use real typings here
18
21
  // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
19
22
  function Link(props) {
20
23
  // We omit "active" property to avoid "Warning: Received `false` for a non-boolean attribute `active`."
21
24
  var filteredProps = (0, lodash_1.omit)(props, ['active', 'httpVerb', 'hasActiveSubItem']);
22
- return (0, jsx_runtime_1.jsx)("a", __assign({ href: filteredProps.to }, filteredProps));
25
+ return react_1.default.createElement("a", __assign({ href: filteredProps.to }, filteredProps));
23
26
  }
24
27
  exports.Link = Link;
@@ -2,4 +2,4 @@ import type { ResolvedNavLinkItem } from '@theme/types/portal';
2
2
  export declare function usePageData(): {
3
3
  prevPage: ResolvedNavLinkItem | null;
4
4
  nextPage: ResolvedNavLinkItem | null;
5
- };
5
+ } | null;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@redocly/theme",
3
- "version": "0.1.13",
3
+ "version": "0.1.16",
4
4
  "description": "Shared UI components",
5
5
  "author": "team@redocly.com",
6
6
  "license": "SEE LICENSE IN LICENSE",
@@ -0,0 +1,39 @@
1
+ import React, { useState } from 'react';
2
+
3
+ import { ClipboardService } from '@theme/utils/ClipboardService';
4
+ import {
5
+ Wrapper,
6
+ DoneIndicator,
7
+ CopyCodeButton,
8
+ CodeSampleButtonContainer,
9
+ } from '@theme/Markdown/CodeSample/styled';
10
+
11
+ type CodeSampleProps = {
12
+ language: string;
13
+ highlighted: string;
14
+ rawContent: string;
15
+ };
16
+
17
+ export function CodeSample({ rawContent, highlighted, language }: CodeSampleProps): JSX.Element {
18
+ const langClassName = language ? `language-${language}` : '';
19
+
20
+ const [isCopied, setIsCopied] = useState(false);
21
+
22
+ const copyCode = (code: string) => {
23
+ ClipboardService.copyCustom(code);
24
+ setIsCopied(true);
25
+ setTimeout(() => setIsCopied(false), 1500);
26
+ };
27
+
28
+ return (
29
+ <Wrapper className="code-sample" data-component-name="Markdown/CodeSample/CodeSample">
30
+ <CodeSampleButtonContainer onClick={() => copyCode(rawContent)}>
31
+ {!isCopied && <CopyCodeButton title="Copy the code snippet">Copy</CopyCodeButton>}
32
+ {isCopied && <DoneIndicator>Copied</DoneIndicator>}
33
+ </CodeSampleButtonContainer>
34
+ <pre className={langClassName}>
35
+ <code className={langClassName} dangerouslySetInnerHTML={{ __html: highlighted }} />
36
+ </pre>
37
+ </Wrapper>
38
+ );
39
+ }
@@ -0,0 +1,2 @@
1
+ export * from '@theme/Markdown/CodeSample/CodeSample';
2
+ export * from '@theme/Markdown/CodeSample/styled';
@@ -0,0 +1,209 @@
1
+ import styled, { css } from 'styled-components';
2
+
3
+ export const CodeSampleButtonContainer = styled.div`
4
+ position: absolute;
5
+ top: 12px;
6
+ right: 5px;
7
+ `;
8
+
9
+ export const CopyCodeButton = styled.div`
10
+ padding: 0 5px;
11
+ border-radius: 4px;
12
+ display: none;
13
+ &:hover {
14
+ cursor: pointer;
15
+ }
16
+ `;
17
+
18
+ export const DoneIndicator = styled.div`
19
+ padding: 0 5px;
20
+ border-radius: 4px;
21
+ cursor: default;
22
+ `;
23
+
24
+ // const lightStyleTokens = css`
25
+ // .token.comment,
26
+ // .token.prolog,
27
+ // .token.doctype,
28
+ // .token.cdata {
29
+ // color: #999988;
30
+ // font-style: italic;
31
+ // }
32
+ // .token.namespace {
33
+ // opacity: 0.7;
34
+ // }
35
+ // .token.string,
36
+ // .token.attr-value {
37
+ // color: #e3116c;
38
+ // }
39
+ // .token.punctuation,
40
+ // .token.operator {
41
+ // color: #393a34; /* no highlight */
42
+ // }
43
+ // .token.entity,
44
+ // .token.url,
45
+ // .token.symbol,
46
+ // .token.number,
47
+ // .token.boolean,
48
+ // .token.variable,
49
+ // .token.constant,
50
+ // .token.property,
51
+ // .token.regex,
52
+ // .token.inserted {
53
+ // color: #36acaa;
54
+ // }
55
+ // .token.atrule,
56
+ // .token.keyword,
57
+ // .token.attr-name,
58
+ // .language-autohotkey .token.selector {
59
+ // color: #00a4db;
60
+ // }
61
+ // .token.function,
62
+ // .token.deleted,
63
+ // .language-autohotkey .token.tag {
64
+ // color: #9a050f;
65
+ // }
66
+ // .token.tag,
67
+ // .token.selector,
68
+ // .language-autohotkey .token.keyword {
69
+ // color: #00009f;
70
+ // }
71
+ // `;
72
+
73
+ const darkStyleTokens = css`
74
+ .token.comment,
75
+ .token.prolog,
76
+ .token.doctype,
77
+ .token.cdata {
78
+ color: hsl(30, 20%, 50%);
79
+ }
80
+ .token.property,
81
+ .token.tag,
82
+ .token.number,
83
+ .token.constant,
84
+ .token.symbol {
85
+ color: #62bff9;
86
+ }
87
+ .token.boolean {
88
+ color: firebrick;
89
+ }
90
+ .token.selector,
91
+ .token.attr-name,
92
+ .token.string,
93
+ .token.char,
94
+ .token.builtin,
95
+ .token.inserted {
96
+ color: #a0fbaa;
97
+ & + a,
98
+ & + a:visited {
99
+ color: #4ed2ba;
100
+ text-decoration: underline;
101
+ }
102
+ }
103
+ .token.operator,
104
+ .token.entity,
105
+ .token.url,
106
+ .token.variable {
107
+ color: hsl(40, 90%, 60%);
108
+ }
109
+ .token.atrule,
110
+ .token.attr-value,
111
+ .token.keyword {
112
+ color: hsl(350, 40%, 70%);
113
+ }
114
+ .token.regex,
115
+ .token.important {
116
+ color: #e90;
117
+ }
118
+ .token.deleted {
119
+ color: red;
120
+ }
121
+ `;
122
+
123
+ export const Wrapper = styled.div`
124
+ overflow: auto;
125
+ border-radius: 4px;
126
+ position: relative;
127
+
128
+ ${CopyCodeButton},
129
+ ${DoneIndicator} {
130
+ color: rgba(255, 255, 255, 0.15);
131
+ }
132
+ ${CopyCodeButton}:hover {
133
+ color: #fff;
134
+ background-color: rgba(255, 255, 255, 0.15);
135
+ }
136
+
137
+ &:hover {
138
+ ${CodeSampleButtonContainer} ${CopyCodeButton} {
139
+ display: block;
140
+ }
141
+ }
142
+ pre {
143
+ white-space: var(--code-wrap);
144
+ color: white;
145
+ padding: 12px 14px 15px 14px;
146
+ overflow-x: auto;
147
+ line-height: normal;
148
+ border-radius: 4px;
149
+ font-family: var(--code-font-family);
150
+ background-color: var(--code-block-preformatted-background-color);
151
+ code {
152
+ background-color: transparent;
153
+ border: 0;
154
+ padding: 0;
155
+ color: white;
156
+ &:before,
157
+ &:after {
158
+ content: none;
159
+ }
160
+ }
161
+ }
162
+ pre[class*='language-'] {
163
+ padding: 1em;
164
+ margin: 0.5em 0;
165
+ overflow: auto;
166
+ border: 0;
167
+ border-radius: var(--global-border-radius);
168
+ }
169
+ code[class='language-text'] {
170
+ line-height: 1.2em;
171
+ display: inline-flex;
172
+ white-space: pre-wrap;
173
+ overflow-wrap: anywhere;
174
+ }
175
+ code[class*='language-'],
176
+ pre[class*='language-'] {
177
+ text-align: left;
178
+ white-space: pre;
179
+ word-spacing: normal;
180
+ word-break: normal;
181
+ word-wrap: normal;
182
+ line-height: 1.5;
183
+ -moz-tab-size: 4;
184
+ -o-tab-size: 4;
185
+ tab-size: 4;
186
+ -webkit-hyphens: none;
187
+ -moz-hyphens: none;
188
+ -ms-hyphens: none;
189
+ hyphens: none;
190
+ .token.important,
191
+ .token.bold {
192
+ font-weight: bold;
193
+ }
194
+ .token.italic {
195
+ font-style: italic;
196
+ }
197
+ .token.entity {
198
+ cursor: help;
199
+ }
200
+ .token.punctuation {
201
+ opacity: 0.7;
202
+ }
203
+ .namespace {
204
+ opacity: 0.7;
205
+ }
206
+
207
+ ${darkStyleTokens};
208
+ }
209
+ `;
@@ -1,3 +1,4 @@
1
+ export * from '@theme/Markdown/CodeSample';
1
2
  export * from '@theme/Markdown/Tabs';
2
3
  export * from '@theme/Markdown/Admonition';
3
4
  export * from '@theme/Markdown/ContentWrapper';
@@ -5,11 +5,11 @@ import { usePageData } from '@portal/hooks/usePageData';
5
5
  import { Button } from '@theme/ui';
6
6
 
7
7
  interface NextPageType {
8
- nextPage: ResolvedNavLinkItem | null;
8
+ nextPage?: ResolvedNavLinkItem | null;
9
9
  }
10
10
 
11
11
  export function NextPageLink(): JSX.Element {
12
- const { nextPage }: NextPageType = usePageData();
12
+ const { nextPage }: NextPageType = usePageData() || {};
13
13
  if (!nextPage) {
14
14
  return <div>&nbsp;</div>;
15
15
  }
@@ -5,11 +5,11 @@ import { usePageData } from '@portal/hooks/usePageData';
5
5
  import { Button } from '@theme/ui';
6
6
 
7
7
  interface PreviousPageType {
8
- prevPage: ResolvedNavLinkItem | null;
8
+ prevPage?: ResolvedNavLinkItem | null;
9
9
  }
10
10
 
11
11
  export function PreviousPageLink(): JSX.Element {
12
- const { prevPage }: PreviousPageType = usePageData();
12
+ const { prevPage }: PreviousPageType = usePageData() || {};
13
13
  if (!prevPage) {
14
14
  return <div>&nbsp;</div>;
15
15
  }
@@ -25,7 +25,7 @@ export function SearchItem({ item }: SearchItemProps): JSX.Element {
25
25
  {item.httpVerb ? (
26
26
  <Operation>
27
27
  <OperationBadge type={item.httpVerb}>{item.httpVerb}</OperationBadge>
28
- {highlight(item.pathName)}
28
+ {item.pathName ? highlight(item.pathName) : null}
29
29
  </Operation>
30
30
  ) : null}
31
31
  <Title>{highlight(item.title)}</Title>
@@ -3,7 +3,7 @@ import type { ResolvedNavLinkItem } from '@theme/types/portal';
3
3
  export function usePageData(): {
4
4
  prevPage: ResolvedNavLinkItem | null;
5
5
  nextPage: ResolvedNavLinkItem | null;
6
- } {
6
+ } | null {
7
7
  return {
8
8
  prevPage: { label: 'Intro', type: 'link', link: '#prev' },
9
9
  nextPage: { label: 'FAQ', type: 'link', link: '#next' },
@@ -1,6 +1,6 @@
1
1
  export class ClipboardService {
2
2
  static isSupported(): boolean {
3
- return typeof navigator?.clipboard !== 'undefined';
3
+ return typeof navigator !== 'undefined' && !!navigator.clipboard;
4
4
  }
5
5
 
6
6
  static copyCustom(text: string): Promise<void> {