@redocly/theme 0.4.7 → 0.4.9

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 (100) hide show
  1. package/Button/Button.d.ts +1 -1
  2. package/Cards/Card.d.ts +1 -1
  3. package/Cards/Card.js +1 -1
  4. package/CopyButton/CopyButtonWrapper.d.ts +2 -1
  5. package/CopyButton/CopyButtonWrapper.js +2 -1
  6. package/Footer/CustomFooter.d.ts +1 -1
  7. package/JsonViewer/JsonViewer.d.ts +1 -0
  8. package/JsonViewer/JsonViewer.js +2 -2
  9. package/Markdown/CodeSample/CodeSample.d.ts +10 -3
  10. package/Markdown/CodeSample/CodeSample.js +24 -5
  11. package/Markdown/Heading.d.ts +1 -1
  12. package/Markdown/MarkdownWrapper.d.ts +1 -1
  13. package/Markdown/Sup.d.ts +1 -1
  14. package/Markdown/Tabs/Tabs.d.ts +1 -1
  15. package/Navbar/Navbar.d.ts +1 -1
  16. package/NavbarLogo/NavbarLogo.d.ts +1 -1
  17. package/Panel/PanelComponent.d.ts +3 -2
  18. package/Panel/PanelHeader.d.ts +1 -1
  19. package/Search/Autocomplete.d.ts +1 -1
  20. package/Search/ClearIcon.d.ts +1 -1
  21. package/Search/SearchIcon.d.ts +1 -1
  22. package/Sidebar/ApiCallItem.d.ts +1 -1
  23. package/Sidebar/Drilldown.d.ts +1 -1
  24. package/Sidebar/DrilldownMenu.d.ts +1 -1
  25. package/Sidebar/DrilldownMenuItem.d.ts +1 -1
  26. package/Sidebar/MenuGroup.d.ts +1 -1
  27. package/Sidebar/MenuItem.d.ts +1 -1
  28. package/Sidebar/MenuLink.d.ts +1 -1
  29. package/Sidebar/MenuLinkItem.d.ts +1 -1
  30. package/Sidebar/Separator.d.ts +1 -1
  31. package/Sidebar/types/DrilldownMenuProps.d.ts +1 -1
  32. package/Sidebar/types/ItemState.d.ts +2 -2
  33. package/Sidebar/types/MenuItemProps.d.ts +1 -1
  34. package/Sidebar/types/NavItem.d.ts +1 -1
  35. package/SourceCode/SourceCode.d.ts +2 -1
  36. package/SourceCode/SourceCode.js +2 -2
  37. package/TableOfContent/TableOfContent.d.ts +1 -1
  38. package/TableOfContent/TableOfContent.js +1 -1
  39. package/TableOfContent/utils.d.ts +1 -1
  40. package/TableOfContent/utils.js +1 -4
  41. package/hooks/useFullHeight.d.ts +1 -1
  42. package/hooks/useMobileMenu.d.ts +1 -1
  43. package/hooks/useOutsideClick.d.ts +1 -1
  44. package/package.json +1 -1
  45. package/src/Button/Button.tsx +2 -1
  46. package/src/Cards/Card.tsx +3 -2
  47. package/src/CopyButton/CopyButtonWrapper.tsx +7 -1
  48. package/src/Footer/CustomFooter.tsx +2 -1
  49. package/src/JsonViewer/JsonViewer.tsx +5 -2
  50. package/src/Markdown/CodeSample/CodeSample.tsx +36 -7
  51. package/src/Markdown/Heading.tsx +2 -1
  52. package/src/Markdown/MarkdownWrapper.tsx +2 -1
  53. package/src/Markdown/Sup.tsx +2 -1
  54. package/src/Markdown/Tabs/Tabs.tsx +2 -1
  55. package/src/Navbar/Navbar.tsx +2 -1
  56. package/src/NavbarLogo/NavbarLogo.tsx +2 -1
  57. package/src/Panel/PanelComponent.tsx +5 -8
  58. package/src/Panel/PanelHeader.ts +1 -1
  59. package/src/Search/Autocomplete.tsx +2 -8
  60. package/src/Search/ClearIcon.tsx +2 -1
  61. package/src/Search/SearchIcon.tsx +2 -1
  62. package/src/Sidebar/ApiCallItem.tsx +2 -1
  63. package/src/Sidebar/Drilldown.tsx +2 -1
  64. package/src/Sidebar/DrilldownMenu.tsx +2 -1
  65. package/src/Sidebar/DrilldownMenuItem.tsx +1 -1
  66. package/src/Sidebar/MenuGroup.tsx +2 -1
  67. package/src/Sidebar/MenuItem.tsx +2 -1
  68. package/src/Sidebar/MenuLink.tsx +3 -1
  69. package/src/Sidebar/MenuLinkItem.tsx +2 -1
  70. package/src/Sidebar/Separator.tsx +2 -1
  71. package/src/Sidebar/types/DrilldownMenuProps.ts +1 -1
  72. package/src/Sidebar/types/ItemState.ts +2 -2
  73. package/src/Sidebar/types/MenuItemProps.ts +1 -1
  74. package/src/Sidebar/types/NavItem.ts +1 -1
  75. package/src/SourceCode/SourceCode.tsx +7 -1
  76. package/src/TableOfContent/TableOfContent.tsx +3 -3
  77. package/src/TableOfContent/utils.ts +2 -5
  78. package/src/hooks/useFullHeight.ts +2 -1
  79. package/src/hooks/useMobileMenu.ts +2 -1
  80. package/src/hooks/useOutsideClick.ts +2 -1
  81. package/src/ui/Box.tsx +2 -8
  82. package/src/ui/Burger.tsx +2 -1
  83. package/src/ui/Dropdown.tsx +2 -1
  84. package/src/ui/Flex.tsx +2 -1
  85. package/src/ui/Tiles/ThinTile.tsx +4 -3
  86. package/src/ui/Tiles/WideTile.tsx +4 -3
  87. package/src/ui/UniversalLink.tsx +2 -1
  88. package/src/ui/darkColors.tsx +9 -1
  89. package/src/ui/index.tsx +1 -1
  90. package/ui/Box.d.ts +1 -1
  91. package/ui/Burger.d.ts +1 -1
  92. package/ui/Dropdown.d.ts +1 -1
  93. package/ui/Flex.d.ts +1 -1
  94. package/ui/Tiles/ThinTile.d.ts +2 -1
  95. package/ui/Tiles/ThinTile.js +1 -1
  96. package/ui/Tiles/WideTile.d.ts +1 -1
  97. package/ui/Tiles/WideTile.js +1 -1
  98. package/ui/UniversalLink.d.ts +1 -1
  99. package/ui/darkColors.js +1 -1
  100. package/ui/index.d.ts +1 -1
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { FlattenSimpleInterpolation } from 'styled-components';
2
+ import type { FlattenSimpleInterpolation } from 'styled-components';
3
3
  export declare type ButtonSize = 'small' | 'medium' | 'large' | 'xlarge' | string;
4
4
  export declare type ButtonColor = 'primary' | 'secondary' | 'default' | string;
5
5
  export declare type ButtonVariant = 'outlined' | 'contained';
package/Cards/Card.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /// <reference types="react" />
2
- import { ResolvedNavItem } from '@theme/types/portal';
2
+ import type { ResolvedNavItem } from '@theme/types/portal';
3
3
  export interface CardProps {
4
4
  title?: string;
5
5
  icon?: string;
package/Cards/Card.js CHANGED
@@ -20,6 +20,6 @@ function Card(props) {
20
20
  react_1.default.createElement(Link_1.Link, { to: item.link }, item.label))); })))));
21
21
  }
22
22
  exports.Card = Card;
23
- var CardWrapper = styled_components_1.default.div(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n border-radius: 10px;\n box-shadow: 0px 10px 30px 0px rgba(35, 35, 35, 0.1);\n padding: 20px;\n margin: 0 20px 20px 0;\n min-width: 25%;\n font-family: var(--font-family-base);\n"], ["\n border-radius: 10px;\n box-shadow: 0px 10px 30px 0px rgba(35, 35, 35, 0.1);\n padding: 20px;\n margin: 0 20px 20px 0;\n min-width: 25%;\n font-family: var(--font-family-base);\n"])));
23
+ var CardWrapper = styled_components_1.default.div(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n border-radius: 10px;\n box-shadow: 0 10px 30px 0 rgba(35, 35, 35, 0.1);\n padding: 20px;\n margin: 0 20px 20px 0;\n min-width: 25%;\n font-family: var(--font-family-base);\n"], ["\n border-radius: 10px;\n box-shadow: 0 10px 30px 0 rgba(35, 35, 35, 0.1);\n padding: 20px;\n margin: 0 20px 20px 0;\n min-width: 25%;\n font-family: var(--font-family-base);\n"])));
24
24
  var CardLinksList = styled_components_1.default.ul(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n list-style-type: none;\n margin: 0;\n padding: 0;\n\n li {\n margin-bottom: 10px;\n }\n"], ["\n list-style-type: none;\n margin: 0;\n padding: 0;\n\n li {\n margin-bottom: 10px;\n }\n"])));
25
25
  var templateObject_1, templateObject_2;
@@ -1,10 +1,11 @@
1
1
  import React from 'react';
2
- import { TooltipProps } from '../Tooltip';
2
+ import type { TooltipProps } from '../Tooltip';
3
3
  export interface CopyButtonWrapperProps {
4
4
  data: unknown;
5
5
  children: (props: {
6
6
  renderCopyButton: (placement?: TooltipProps['placement']) => JSX.Element;
7
7
  }) => JSX.Element;
8
+ onCopyClick?: () => void;
8
9
  dataTestId?: string;
9
10
  }
10
11
  export declare const CopyButtonWrapper: React.NamedExoticComponent<CopyButtonWrapperProps>;
@@ -30,7 +30,7 @@ var Tooltip_1 = require("../Tooltip");
30
30
  var hooks_1 = require("../hooks");
31
31
  var utils_1 = require("../utils");
32
32
  function CopyButtonWrapperComponent(_a) {
33
- var data = _a.data, children = _a.children, _b = _a.dataTestId, dataTestId = _b === void 0 ? 'copy-button' : _b;
33
+ var data = _a.data, children = _a.children, onCopyClick = _a.onCopyClick, _b = _a.dataTestId, dataTestId = _b === void 0 ? 'copy-button' : _b;
34
34
  var tooltip = (0, hooks_1.useControl)();
35
35
  var showTooltip = function () {
36
36
  tooltip.handleOpen();
@@ -42,6 +42,7 @@ function CopyButtonWrapperComponent(_a) {
42
42
  var content = typeof data === 'string' ? data : JSON.stringify(data, null, 2);
43
43
  utils_1.ClipboardService.copyCustom(content);
44
44
  showTooltip();
45
+ onCopyClick === null || onCopyClick === void 0 ? void 0 : onCopyClick();
45
46
  };
46
47
  var renderCopyButton = function (placement) {
47
48
  if (placement === void 0) { placement = 'top'; }
@@ -1,5 +1,5 @@
1
1
  /// <reference types="react" />
2
- import { NavGroupRecord } from '@theme/types/portal';
2
+ import type { NavGroupRecord } from '@theme/types/portal';
3
3
  interface FooterProps {
4
4
  data: NavGroupRecord;
5
5
  }
@@ -5,6 +5,7 @@ export interface JsonProps {
5
5
  jsonSampleExpandLevel: number;
6
6
  withLineNumbers?: boolean;
7
7
  startLineNumber?: number;
8
+ onCopyClick?: () => void;
8
9
  }
9
10
  export declare const Json: React.NamedExoticComponent<JsonProps>;
10
11
  export declare const JsonViewer: import("styled-components").StyledComponent<React.NamedExoticComponent<JsonProps>, any, {
@@ -50,7 +50,7 @@ var utils_1 = require("../utils");
50
50
  var hooks_1 = require("../hooks");
51
51
  var CodeBlock_1 = require("../CodeBlock");
52
52
  function JsonComponent(_a) {
53
- var data = _a.data, jsonSampleExpandLevel = _a.jsonSampleExpandLevel, className = _a.className, withLineNumbers = _a.withLineNumbers, startLineNumber = _a.startLineNumber;
53
+ var data = _a.data, jsonSampleExpandLevel = _a.jsonSampleExpandLevel, className = _a.className, withLineNumbers = _a.withLineNumbers, startLineNumber = _a.startLineNumber, onCopyClick = _a.onCopyClick;
54
54
  var node = (0, react_1.useRef)(null);
55
55
  (0, hooks_1.useMount)(function () {
56
56
  var _a;
@@ -136,7 +136,7 @@ function JsonComponent(_a) {
136
136
  __html: (0, utils_1.jsonToHTML)(data, jsonSampleExpandLevel, startLineNumber),
137
137
  } })));
138
138
  };
139
- return (react_1.default.createElement(CopyButton_1.CopyButtonWrapper, { "data-cy": "copy-button", data: data }, renderInner));
139
+ return (react_1.default.createElement(CopyButton_1.CopyButtonWrapper, { "data-cy": "copy-button", data: data, onCopyClick: onCopyClick }, renderInner));
140
140
  }
141
141
  exports.Json = (0, react_1.memo)(JsonComponent);
142
142
  exports.JsonViewer = (0, styled_components_1.default)(exports.Json).attrs(function () { return ({
@@ -1,8 +1,15 @@
1
1
  /// <reference types="react" />
2
- declare type CodeSampleProps = {
2
+ export interface MdCopyCodeProps {
3
+ enabled?: boolean;
4
+ buttonText?: string;
5
+ tooltipText?: string;
6
+ toasterText?: string;
7
+ toasterDuration?: number;
8
+ }
9
+ export declare type CodeSampleProps = {
3
10
  language: string;
4
11
  highlighted: string;
5
12
  rawContent: string;
13
+ copyCodeSnippet: MdCopyCodeProps;
6
14
  };
7
- export declare function CodeSample({ rawContent, highlighted, language }: CodeSampleProps): JSX.Element;
8
- export {};
15
+ export declare function CodeSample({ rawContent, highlighted, language, copyCodeSnippet, }: CodeSampleProps): JSX.Element;
@@ -3,6 +3,17 @@ 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
+ };
6
17
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
18
  if (k2 === undefined) k2 = k;
8
19
  var desc = Object.getOwnPropertyDescriptor(m, k);
@@ -47,19 +58,27 @@ exports.CodeSample = void 0;
47
58
  var react_1 = __importStar(require("react"));
48
59
  var styled_components_1 = __importStar(require("styled-components"));
49
60
  var ClipboardService_1 = require("../../utils/ClipboardService");
61
+ var defaultCopyCodeSnippet = {
62
+ enabled: true,
63
+ buttonText: 'Copy',
64
+ tooltipText: 'Copy the code snippet',
65
+ toasterText: 'Copied',
66
+ toasterDuration: 1500,
67
+ };
50
68
  function CodeSample(_a) {
51
- var rawContent = _a.rawContent, highlighted = _a.highlighted, language = _a.language;
69
+ var rawContent = _a.rawContent, highlighted = _a.highlighted, language = _a.language, copyCodeSnippet = _a.copyCodeSnippet;
52
70
  var langClassName = language ? "language-".concat(language) : '';
71
+ var copyCodeProps = __assign(__assign({}, defaultCopyCodeSnippet), copyCodeSnippet);
53
72
  var _b = __read((0, react_1.useState)(false), 2), isCopied = _b[0], setIsCopied = _b[1];
54
73
  var copyCode = function (code) {
55
74
  ClipboardService_1.ClipboardService.copyCustom(code);
56
75
  setIsCopied(true);
57
- setTimeout(function () { return setIsCopied(false); }, 1500);
76
+ setTimeout(function () { return setIsCopied(false); }, copyCodeProps.toasterDuration);
58
77
  };
59
78
  return (react_1.default.createElement(Wrapper, { className: "code-sample", "data-component-name": "Markdown/CodeSample/CodeSample" },
60
- react_1.default.createElement(CodeSampleButtonContainer, { onClick: function () { return copyCode(rawContent); } },
61
- !isCopied && react_1.default.createElement(CopyCodeButton, { title: "Copy the code snippet" }, "Copy"),
62
- isCopied && react_1.default.createElement(DoneIndicator, null, "Copied")),
79
+ copyCodeProps.enabled && (react_1.default.createElement(CodeSampleButtonContainer, { onClick: function () { return copyCode(rawContent); } },
80
+ !isCopied && (react_1.default.createElement(CopyCodeButton, { title: copyCodeProps.tooltipText }, copyCodeProps.buttonText)),
81
+ isCopied && react_1.default.createElement(DoneIndicator, null, copyCodeProps.toasterText))),
63
82
  react_1.default.createElement("pre", { className: langClassName },
64
83
  react_1.default.createElement("code", { className: langClassName, dangerouslySetInnerHTML: { __html: highlighted } }))));
65
84
  }
@@ -1,4 +1,4 @@
1
- import { PropsWithChildren } from 'react';
1
+ import type { PropsWithChildren } from 'react';
2
2
  export declare function Heading({ level, id, children, }: PropsWithChildren<{
3
3
  level: number;
4
4
  id: string;
@@ -1,4 +1,4 @@
1
- import { FlattenSimpleInterpolation } from 'styled-components';
1
+ import type { FlattenSimpleInterpolation } from 'styled-components';
2
2
  export declare const baseTable: FlattenSimpleInterpolation;
3
3
  export declare function headingAnchor(className?: string): FlattenSimpleInterpolation;
4
4
  export declare const MarkdownWrapper: import("styled-components").StyledComponent<"main", any, {
package/Markdown/Sup.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- import { PropsWithChildren } from 'react';
1
+ import type { PropsWithChildren } from 'react';
2
2
  export declare function Sup({ children }: PropsWithChildren<unknown>): JSX.Element;
@@ -1,4 +1,4 @@
1
- import { PropsWithChildren } from 'react';
1
+ import type { PropsWithChildren } from 'react';
2
2
  declare type TabsProps = PropsWithChildren<{
3
3
  children: {
4
4
  props: {
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { ResolvedConfigLinks } from '@theme/types/portal';
2
+ import type { ResolvedConfigLinks } from '@theme/types/portal';
3
3
  interface NavbarProps {
4
4
  menu: ResolvedConfigLinks;
5
5
  logo: React.ReactNode;
@@ -1,5 +1,5 @@
1
1
  /// <reference types="react" />
2
- import { LogoConfig } from '@theme/types/portal';
2
+ import type { LogoConfig } from '@theme/types/portal';
3
3
  export declare type NavbarLogoProps = {
4
4
  logo: Pick<LogoConfig, 'image' | 'link' | 'altText'>;
5
5
  };
@@ -1,5 +1,6 @@
1
- import React, { PropsWithChildren, ReactNode } from 'react';
2
- import { PanelHeaderProps } from '../Panel/PanelHeader';
1
+ import type { PropsWithChildren, ReactNode } from 'react';
2
+ import React from 'react';
3
+ import type { PanelHeaderProps } from '../Panel/PanelHeader';
3
4
  export interface PanelComponentProps {
4
5
  expanded?: boolean;
5
6
  className?: string;
@@ -1,4 +1,4 @@
1
- import { BaseSyntheticEvent } from 'react';
1
+ import type { BaseSyntheticEvent } from 'react';
2
2
  export interface PanelHeaderProps {
3
3
  expanded?: boolean;
4
4
  disabled?: boolean;
@@ -1,4 +1,4 @@
1
- import { ReactNode } from 'react';
1
+ import type { ReactNode } from 'react';
2
2
  import type { ActiveItem } from '../mocks/types';
3
3
  interface AutocompleteProps<T> {
4
4
  placeholder?: string;
@@ -1,4 +1,4 @@
1
- import { SVGProps } from 'react';
1
+ import type { SVGProps } from 'react';
2
2
  export declare const ClearIcon: import("styled-components").StyledComponent<(props: SVGProps<SVGSVGElement>) => JSX.Element, any, {
3
3
  'data-component-name': string;
4
4
  }, "data-component-name">;
@@ -1,4 +1,4 @@
1
- import { SVGProps } from 'react';
1
+ import type { SVGProps } from 'react';
2
2
  export declare const SearchIcon: import("styled-components").StyledComponent<(props: SVGProps<SVGSVGElement>) => JSX.Element, any, {
3
3
  'data-component-name': string;
4
4
  }, "data-component-name">;
@@ -1,5 +1,5 @@
1
1
  /// <reference types="react" />
2
- import { MenuItemProps } from '../Sidebar/types/MenuItemProps';
2
+ import type { MenuItemProps } from '../Sidebar/types/MenuItemProps';
3
3
  export declare function ApiCallItem({ item }: MenuItemProps): JSX.Element;
4
4
  export declare const Badge: import("styled-components").StyledComponent<"span", any, {
5
5
  className: `operation-type ${string}`;
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { DrilldownMenuProps } from '../Sidebar/types/DrilldownMenuProps';
2
+ import type { DrilldownMenuProps } from '../Sidebar/types/DrilldownMenuProps';
3
3
  interface DrilldownProps extends DrilldownMenuProps {
4
4
  isExpanded: boolean;
5
5
  expand: () => void;
@@ -1,3 +1,3 @@
1
1
  import React from 'react';
2
- import { DrilldownMenuProps } from '../Sidebar/types/DrilldownMenuProps';
2
+ import type { DrilldownMenuProps } from '../Sidebar/types/DrilldownMenuProps';
3
3
  export declare function DrilldownMenu({ item, back, prevActiveItem, children, }: React.PropsWithChildren<DrilldownMenuProps>): JSX.Element;
@@ -1,3 +1,3 @@
1
1
  /// <reference types="react" />
2
- import { MenuItemProps } from '../Sidebar/types/MenuItemProps';
2
+ import type { MenuItemProps } from '../Sidebar/types/MenuItemProps';
3
3
  export declare function DrilldownMenuItem({ item }: MenuItemProps): JSX.Element;
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { ItemState } from '../Sidebar/types/ItemState';
2
+ import type { ItemState } from '../Sidebar/types/ItemState';
3
3
  interface MenuGroupProps {
4
4
  item: ItemState;
5
5
  isExpanded: boolean;
@@ -1,3 +1,3 @@
1
1
  /// <reference types="react" />
2
- import { MenuItemProps } from '../Sidebar/types/MenuItemProps';
2
+ import type { MenuItemProps } from '../Sidebar/types/MenuItemProps';
3
3
  export declare function MenuItem({ item }: MenuItemProps): JSX.Element;
@@ -1,5 +1,5 @@
1
1
  /// <reference types="react" />
2
- import { UniversalLinkProps } from '../ui/UniversalLink';
2
+ import type { UniversalLinkProps } from '../ui/UniversalLink';
3
3
  export declare const MenuLink: import("styled-components").StyledComponent<(props: import("react").PropsWithChildren<object>) => JSX.Element, any, {
4
4
  'data-component-name': string;
5
5
  } & UniversalLinkProps, "data-component-name">;
@@ -1,3 +1,3 @@
1
1
  import React from 'react';
2
- import { MenuItemProps } from '../Sidebar/types/MenuItemProps';
2
+ import type { MenuItemProps } from '../Sidebar/types/MenuItemProps';
3
3
  export declare function MenuLinkItem({ item, children, }: React.PropsWithChildren<MenuItemProps>): JSX.Element;
@@ -1,3 +1,3 @@
1
1
  /// <reference types="react" />
2
- import { MenuItemProps } from '../Sidebar/types/MenuItemProps';
2
+ import type { MenuItemProps } from '../Sidebar/types/MenuItemProps';
3
3
  export declare function Separator({ item }: MenuItemProps): JSX.Element;
@@ -1,4 +1,4 @@
1
- import { ItemState } from '../../Sidebar/types/ItemState';
1
+ import type { ItemState } from '../../Sidebar/types/ItemState';
2
2
  export interface DrilldownMenuProps {
3
3
  back: () => void;
4
4
  item: ItemState;
@@ -1,5 +1,5 @@
1
- import { NavItem } from '../../Sidebar/types/NavItem';
2
- import { MenuStyle } from '../../Sidebar/types/MenuStyle';
1
+ import type { NavItem } from '../../Sidebar/types/NavItem';
2
+ import type { MenuStyle } from '../../Sidebar/types/MenuStyle';
3
3
  export interface ItemState extends NavItem {
4
4
  items: ItemState[];
5
5
  active: boolean;
@@ -1,4 +1,4 @@
1
- import { ItemState } from '../../Sidebar/types/ItemState';
1
+ import type { ItemState } from '../../Sidebar/types/ItemState';
2
2
  export interface MenuItemProps {
3
3
  item: ItemState;
4
4
  activeItem?: ItemState;
@@ -1,4 +1,4 @@
1
- import { MenuStyle } from '../../Sidebar/types/MenuStyle';
1
+ import type { MenuStyle } from '../../Sidebar/types/MenuStyle';
2
2
  export interface NavItem {
3
3
  label?: string;
4
4
  sublabel?: string;
@@ -7,6 +7,7 @@ export interface SourceCodeProps extends CommonCodeProps {
7
7
  lang: string;
8
8
  source?: string;
9
9
  externalSource?: ExternalSource;
10
+ onCopyClick?: () => void;
10
11
  withCopyButton?: boolean;
11
12
  dataTestId?: string;
12
13
  }
@@ -27,5 +28,5 @@ export interface ExternalSource {
27
28
  operation?: any;
28
29
  }
29
30
  export declare function Code({ source, lang, dataTestId, withLineNumbers, startLineNumber, }: CodeProps): JSX.Element;
30
- export declare function SourceCode({ lang, source, externalSource, withCopyButton, dataTestId, withLineNumbers, startLineNumber, }: SourceCodeProps): JSX.Element;
31
+ export declare function SourceCode({ lang, source, externalSource, onCopyClick, withCopyButton, dataTestId, withLineNumbers, startLineNumber, }: SourceCodeProps): JSX.Element;
31
32
  export {};
@@ -55,7 +55,7 @@ function Code(_a) {
55
55
  }
56
56
  exports.Code = Code;
57
57
  function SourceCode(_a) {
58
- var lang = _a.lang, source = _a.source, externalSource = _a.externalSource, withCopyButton = _a.withCopyButton, _b = _a.dataTestId, dataTestId = _b === void 0 ? 'source-code' : _b, withLineNumbers = _a.withLineNumbers, startLineNumber = _a.startLineNumber;
58
+ var lang = _a.lang, source = _a.source, externalSource = _a.externalSource, onCopyClick = _a.onCopyClick, withCopyButton = _a.withCopyButton, _b = _a.dataTestId, dataTestId = _b === void 0 ? 'source-code' : _b, withLineNumbers = _a.withLineNumbers, startLineNumber = _a.startLineNumber;
59
59
  var _c = __read((0, react_1.useState)(source !== null && source !== void 0 ? source : ''), 2), sourceCode = _c[0], setSourceCode = _c[1];
60
60
  // The same initial value should be returned for ssr and frontend to avoid issues
61
61
  // Because we don't have session storage in ssr and can't get the security details there
@@ -68,7 +68,7 @@ function SourceCode(_a) {
68
68
  }
69
69
  }, [source, externalSource]);
70
70
  if (withCopyButton) {
71
- return (react_1.default.createElement(CopyButton_1.CopyButtonWrapper, { data: sourceCode, "data-component-name": "SourceCode/SourceCode" }, function (_a) {
71
+ return (react_1.default.createElement(CopyButton_1.CopyButtonWrapper, { data: sourceCode, onCopyClick: onCopyClick, "data-component-name": "SourceCode/SourceCode" }, function (_a) {
72
72
  var renderCopyButton = _a.renderCopyButton;
73
73
  return (react_1.default.createElement(SamplesPanelControls_1.SampleControlsWrap, null,
74
74
  react_1.default.createElement(SamplesPanelControls_1.SampleControls, { "data-cy": "copy-button" }, renderCopyButton()),
@@ -1,5 +1,5 @@
1
1
  /// <reference types="react" />
2
- import { MdHeading } from '@theme/types/portal';
2
+ import type { MdHeading } from '@theme/types/portal';
3
3
  interface TableOfContentProps {
4
4
  headings?: Array<MdHeading | null> | null | undefined;
5
5
  contentWrapper: HTMLDivElement | null;
@@ -70,7 +70,7 @@ function TableOfContent(props) {
70
70
  }
71
71
  exports.TableOfContent = TableOfContent;
72
72
  var TocHeader = styled_components_1.default.div(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n font-family: var(--toc-heading-font-family);\n font-size: var(--toc-heading-font-size);\n font-weight: var(--toc-heading-font-weight);\n padding: var(--toc-item-padding-vertical) var(--toc-item-padding-horizontal);\n color: var(--toc-heading-text-color);\n text-transform: uppercase;\n"], ["\n font-family: var(--toc-heading-font-family);\n font-size: var(--toc-heading-font-size);\n font-weight: var(--toc-heading-font-weight);\n padding: var(--toc-item-padding-vertical) var(--toc-item-padding-horizontal);\n color: var(--toc-heading-text-color);\n text-transform: uppercase;\n"])));
73
- var MenuItem = styled_components_1.default.a(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n display: block;\n color: var(--toc-item-text-color);\n background-color: var(--toc-item-background-color);\n cursor: pointer;\n font-size: var(--toc-item-font-size);\n font-family: var(--toc-item-font-family);\n padding: var(--toc-item-padding-vertical) var(--toc-item-padding-horizontal);\n padding-left: calc(var(--toc-item-nested-offset) * ", ");\n transition: background-color 0.3s, color 0.3s;\n text-decoration: none;\n word-break: break-word;\n font-family: var(--heading-font-family);\n\n :hover,\n &.active {\n color: var(--toc-item-active-text-color);\n background-color: var(--toc-item-active-background-color);\n }\n\n :empty {\n padding: 0;\n }\n"], ["\n display: block;\n color: var(--toc-item-text-color);\n background-color: var(--toc-item-background-color);\n cursor: pointer;\n font-size: var(--toc-item-font-size);\n font-family: var(--toc-item-font-family);\n padding: var(--toc-item-padding-vertical) var(--toc-item-padding-horizontal);\n padding-left: calc(var(--toc-item-nested-offset) * ", ");\n transition: background-color 0.3s, color 0.3s;\n text-decoration: none;\n word-break: break-word;\n font-family: var(--heading-font-family);\n\n :hover,\n &.active {\n color: var(--toc-item-active-text-color);\n background-color: var(--toc-item-active-background-color);\n }\n\n :empty {\n padding: 0;\n }\n"])), function (_a) {
73
+ var MenuItem = styled_components_1.default.a(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n display: block;\n color: var(--toc-item-text-color);\n background-color: var(--toc-item-background-color);\n cursor: pointer;\n font-size: var(--toc-item-font-size);\n padding: var(--toc-item-padding-vertical) var(--toc-item-padding-horizontal);\n padding-left: calc(var(--toc-item-nested-offset) * ", ");\n transition: background-color 0.3s, color 0.3s;\n text-decoration: none;\n word-break: break-word;\n font-family: var(--heading-font-family, var(--toc-item-font-family));\n\n :hover,\n &.active {\n color: var(--toc-item-active-text-color);\n background-color: var(--toc-item-active-background-color);\n }\n\n :empty {\n padding: 0;\n }\n"], ["\n display: block;\n color: var(--toc-item-text-color);\n background-color: var(--toc-item-background-color);\n cursor: pointer;\n font-size: var(--toc-item-font-size);\n padding: var(--toc-item-padding-vertical) var(--toc-item-padding-horizontal);\n padding-left: calc(var(--toc-item-nested-offset) * ", ");\n transition: background-color 0.3s, color 0.3s;\n text-decoration: none;\n word-break: break-word;\n font-family: var(--heading-font-family, var(--toc-item-font-family));\n\n :hover,\n &.active {\n color: var(--toc-item-active-text-color);\n background-color: var(--toc-item-active-background-color);\n }\n\n :empty {\n padding: 0;\n }\n"])), function (_a) {
74
74
  var depth = _a.depth;
75
75
  return depth;
76
76
  });
@@ -1,4 +1,4 @@
1
- import { MdHeading } from '@theme/types/portal';
1
+ import type { MdHeading } from '@theme/types/portal';
2
2
  export declare function getDisplayedHeadings(headings: Array<MdHeading | null> | null | undefined, tocMaxDepth: number): Array<MdHeading | null>;
3
3
  export declare function getDisplayedHeadingsIds(headings: Array<MdHeading | null> | null | undefined): Array<string | undefined>;
4
4
  export declare function getLeastDepth(headings: Array<MdHeading | null> | null | undefined): number;
@@ -23,10 +23,7 @@ function getDisplayedHeadings(headings, tocMaxDepth) {
23
23
  if (idx === 0 && heading.depth === 1) {
24
24
  return false;
25
25
  }
26
- if (heading.depth && heading.depth > tocMaxDepth) {
27
- return false;
28
- }
29
- return true;
26
+ return !(heading.depth && heading.depth > tocMaxDepth);
30
27
  });
31
28
  }
32
29
  exports.getDisplayedHeadings = getDisplayedHeadings;
@@ -1,2 +1,2 @@
1
- import { MutableRefObject } from 'react';
1
+ import type { MutableRefObject } from 'react';
2
2
  export declare function useFullHeight(element: MutableRefObject<HTMLElement | null>): void;
@@ -1,2 +1,2 @@
1
- import { Dispatch, SetStateAction } from 'react';
1
+ import type { Dispatch, SetStateAction } from 'react';
2
2
  export declare function useMobileMenu(initialState?: boolean): [boolean, Dispatch<SetStateAction<boolean>>];
@@ -1,2 +1,2 @@
1
- import { MutableRefObject } from 'react';
1
+ import type { MutableRefObject } from 'react';
2
2
  export declare function useOutsideClick(ref: MutableRefObject<HTMLElement | null>, handler: (event: MouseEvent | TouchEvent) => void): void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@redocly/theme",
3
- "version": "0.4.7",
3
+ "version": "0.4.9",
4
4
  "description": "Shared UI components",
5
5
  "author": "team@redocly.com",
6
6
  "license": "SEE LICENSE IN LICENSE",
@@ -1,5 +1,6 @@
1
1
  import React from 'react';
2
- import styled, { css, FlattenSimpleInterpolation, keyframes, Keyframes } from 'styled-components';
2
+ import type { FlattenSimpleInterpolation, Keyframes } from 'styled-components';
3
+ import styled, { css, keyframes } from 'styled-components';
3
4
 
4
5
  import { Link } from '@portal/Link';
5
6
 
@@ -1,9 +1,10 @@
1
1
  import React from 'react';
2
2
  import styled from 'styled-components';
3
3
 
4
+ import type { ResolvedNavItem } from '@theme/types/portal';
5
+
4
6
  import { Link } from '@portal/Link';
5
7
  import { H3 } from '@theme/Typography';
6
- import { ResolvedNavItem } from '@theme/types/portal';
7
8
 
8
9
  export interface CardProps {
9
10
  title?: string;
@@ -31,7 +32,7 @@ export function Card(props: CardProps): JSX.Element {
31
32
 
32
33
  const CardWrapper = styled.div`
33
34
  border-radius: 10px;
34
- box-shadow: 0px 10px 30px 0px rgba(35, 35, 35, 0.1);
35
+ box-shadow: 0 10px 30px 0 rgba(35, 35, 35, 0.1);
35
36
  padding: 20px;
36
37
  margin: 0 20px 20px 0;
37
38
  min-width: 25%;
@@ -1,7 +1,9 @@
1
1
  import React, { memo } from 'react';
2
2
 
3
+ import type { TooltipProps } from '@theme/Tooltip';
4
+
3
5
  import { SamplesControlButton } from '@theme/SamplesPanelControls';
4
- import { Tooltip, TooltipProps } from '@theme/Tooltip';
6
+ import { Tooltip } from '@theme/Tooltip';
5
7
  import { useControl } from '@theme/hooks';
6
8
  import { ClipboardService } from '@theme/utils';
7
9
 
@@ -10,12 +12,14 @@ export interface CopyButtonWrapperProps {
10
12
  children: (props: {
11
13
  renderCopyButton: (placement?: TooltipProps['placement']) => JSX.Element;
12
14
  }) => JSX.Element;
15
+ onCopyClick?: () => void;
13
16
  dataTestId?: string;
14
17
  }
15
18
 
16
19
  function CopyButtonWrapperComponent({
17
20
  data,
18
21
  children,
22
+ onCopyClick,
19
23
  dataTestId = 'copy-button',
20
24
  }: CopyButtonWrapperProps): JSX.Element {
21
25
  const tooltip = useControl();
@@ -32,6 +36,8 @@ function CopyButtonWrapperComponent({
32
36
  const content = typeof data === 'string' ? data : JSON.stringify(data, null, 2);
33
37
  ClipboardService.copyCustom(content);
34
38
  showTooltip();
39
+
40
+ onCopyClick?.();
35
41
  };
36
42
 
37
43
  const renderCopyButton = (placement: TooltipProps['placement'] = 'top'): JSX.Element => {
@@ -1,9 +1,10 @@
1
1
  import React from 'react';
2
2
  import styled from 'styled-components';
3
3
 
4
+ import type { NavGroupRecord, ResolvedNavItem } from '@theme/types/portal';
5
+
4
6
  import { CustomFooterNavItem } from '@theme/Footer/CustomFooterNavItem';
5
7
  import { FooterCopyright } from '@theme/Footer/FooterCopyright';
6
- import { NavGroupRecord, ResolvedNavItem } from '@theme/types/portal';
7
8
 
8
9
  interface FooterProps {
9
10
  data: NavGroupRecord;
@@ -1,4 +1,5 @@
1
- import React, { memo, useRef, ReactElement } from 'react';
1
+ import type { ReactElement } from 'react';
2
+ import React, { memo, useRef } from 'react';
2
3
  import styled from 'styled-components';
3
4
 
4
5
  import { CopyButtonWrapper } from '@theme/CopyButton';
@@ -13,6 +14,7 @@ export interface JsonProps {
13
14
  jsonSampleExpandLevel: number;
14
15
  withLineNumbers?: boolean;
15
16
  startLineNumber?: number;
17
+ onCopyClick?: () => void;
16
18
  }
17
19
 
18
20
  function JsonComponent({
@@ -21,6 +23,7 @@ function JsonComponent({
21
23
  className,
22
24
  withLineNumbers,
23
25
  startLineNumber,
26
+ onCopyClick,
24
27
  }: JsonProps): JSX.Element {
25
28
  const node = useRef<HTMLDivElement | null>(null);
26
29
 
@@ -103,7 +106,7 @@ function JsonComponent({
103
106
  };
104
107
 
105
108
  return (
106
- <CopyButtonWrapper data-cy="copy-button" data={data}>
109
+ <CopyButtonWrapper data-cy="copy-button" data={data} onCopyClick={onCopyClick}>
107
110
  {renderInner}
108
111
  </CopyButtonWrapper>
109
112
  );