@redocly/theme 0.82.2-rc.1 → 0.82.2-rc.3

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 (63) hide show
  1. package/lib/components/Button/Button.js +1 -1
  2. package/lib/components/Catalog/CatalogCard.js +4 -5
  3. package/lib/components/CodeBlock/CodeBlock.js +1 -1
  4. package/lib/components/Dropdown/Dropdown.js +10 -5
  5. package/lib/components/Dropdown/DropdownMenuItem.js +22 -5
  6. package/lib/components/Dropdown/variables.js +5 -1
  7. package/lib/components/Feedback/Comment.js +1 -1
  8. package/lib/components/Feedback/Mood.js +4 -4
  9. package/lib/components/Feedback/Rating.js +1 -1
  10. package/lib/components/Feedback/Scale.js +1 -1
  11. package/lib/components/Feedback/Sentiment.js +3 -3
  12. package/lib/components/Filter/FilterContent.js +1 -1
  13. package/lib/components/LanguagePicker/LanguagePicker.js +5 -2
  14. package/lib/components/LanguagePicker/variables.js +4 -1
  15. package/lib/components/Markdown/Markdown.js +6 -6
  16. package/lib/components/Product/ProductPicker.js +4 -1
  17. package/lib/components/Product/variables.js +4 -1
  18. package/lib/components/Sidebar/Sidebar.js +3 -9
  19. package/lib/components/Tooltip/Tooltip.js +2 -2
  20. package/lib/components/Tooltip/variables.js +4 -0
  21. package/lib/components/Typography/H1.js +1 -1
  22. package/lib/components/Typography/H2.js +1 -1
  23. package/lib/components/Typography/H3.js +1 -1
  24. package/lib/components/Typography/H4.js +1 -1
  25. package/lib/components/UserMenu/UserMenu.js +4 -1
  26. package/lib/components/UserMenu/variables.js +4 -1
  27. package/lib/core/styles/global.js +3 -4
  28. package/lib/core/types/catalog.d.ts +3 -0
  29. package/lib/core/types/hooks.d.ts +3 -1
  30. package/package.json +2 -2
  31. package/src/components/Button/Button.tsx +5 -1
  32. package/src/components/Catalog/CatalogCard.tsx +20 -23
  33. package/src/components/CodeBlock/CodeBlock.tsx +1 -1
  34. package/src/components/Dropdown/Dropdown.tsx +12 -6
  35. package/src/components/Dropdown/DropdownMenuItem.tsx +24 -5
  36. package/src/components/Dropdown/variables.ts +5 -1
  37. package/src/components/Feedback/Comment.tsx +1 -1
  38. package/src/components/Feedback/Mood.tsx +5 -4
  39. package/src/components/Feedback/Rating.tsx +1 -1
  40. package/src/components/Feedback/Scale.tsx +1 -1
  41. package/src/components/Feedback/Sentiment.tsx +4 -3
  42. package/src/components/Filter/FilterContent.tsx +1 -1
  43. package/src/components/LanguagePicker/LanguagePicker.tsx +5 -2
  44. package/src/components/LanguagePicker/variables.ts +4 -1
  45. package/src/components/Markdown/Markdown.tsx +7 -7
  46. package/src/components/Product/ProductPicker.tsx +4 -1
  47. package/src/components/Product/variables.ts +4 -1
  48. package/src/components/Search/SearchDialog.tsx +1 -1
  49. package/src/components/Segmented/Segmented.tsx +2 -1
  50. package/src/components/Sidebar/Sidebar.tsx +3 -10
  51. package/src/components/Tooltip/Tooltip.tsx +2 -2
  52. package/src/components/Tooltip/variables.ts +4 -0
  53. package/src/components/Typography/H1.ts +1 -1
  54. package/src/components/Typography/H2.ts +1 -1
  55. package/src/components/Typography/H3.ts +1 -1
  56. package/src/components/Typography/H4.ts +1 -1
  57. package/src/components/UserMenu/UserMenu.tsx +4 -1
  58. package/src/components/UserMenu/variables.ts +4 -1
  59. package/src/core/styles/global.ts +4 -5
  60. package/src/core/types/catalog.ts +3 -1
  61. package/src/core/types/hooks.ts +3 -1
  62. package/src/core/utils/menu.ts +1 -2
  63. package/src/layouts/ThreePanelLayout.tsx +1 -0
@@ -166,7 +166,7 @@ const ButtonComponent = (props) => {
166
166
  props.children,
167
167
  props.icon && props.iconPosition === 'right' && props.icon));
168
168
  if (props.to) {
169
- return react_1.default.createElement(StyledButtonLink, { to: props.to }, button);
169
+ return (react_1.default.createElement(StyledButtonLink, { to: props.to, onClick: props.onClick }, button));
170
170
  }
171
171
  else {
172
172
  return button;
@@ -37,10 +37,9 @@ const Tag_1 = require("../../components/Tag/Tag");
37
37
  const CatalogHighlight_1 = require("../../components/Catalog/CatalogHighlight");
38
38
  const Button_1 = require("../../components/Button/Button");
39
39
  function CatalogCard({ item }) {
40
- var _a, _b;
40
+ var _a;
41
41
  const { useTelemetry } = (0, hooks_1.useThemeHooks)();
42
42
  const telemetry = useTelemetry();
43
- const hasTags = item.scorecardLevel || ((_a = item.tags) === null || _a === void 0 ? void 0 : _a.length);
44
43
  return (React.createElement(Link_1.Link, { key: item.docsLink || item.link, to: item.docsLink || item.link },
45
44
  React.createElement(StyledCard, { "data-component-name": "Catalog/CatalogCard", onClick: () => telemetry.send('catalog_item_clicked', {}) },
46
45
  React.createElement(CardContent, null,
@@ -48,14 +47,14 @@ function CatalogCard({ item }) {
48
47
  React.createElement(CardTitle, null,
49
48
  React.createElement(CatalogHighlight_1.CatalogHighlight, null, item.title))),
50
49
  React.createElement(CardDescription, null,
51
- React.createElement(CatalogHighlight_1.CatalogHighlight, null, (_b = item.description) !== null && _b !== void 0 ? _b : ''))),
50
+ React.createElement(CatalogHighlight_1.CatalogHighlight, null, (_a = item.description) !== null && _a !== void 0 ? _a : ''))),
52
51
  React.createElement(CardFooter, null,
53
- hasTags && (React.createElement(CardTags, null,
52
+ React.createElement(CardTags, null,
54
53
  (item.tags || []).map((tag, index) => (React.createElement(CardTag, { key: tag + index, color: (0, utils_1.slug)(tag) },
55
54
  React.createElement(CatalogHighlight_1.CatalogHighlight, null, (0, utils_1.capitalize)(tag))))),
56
55
  (item.scorecardLevel && (React.createElement(Tag_1.Tag, { borderless: true, withStatusDot: true, statusDotColor: `var(${(0, utils_1.getScorecardColorVariable)(item.scorecardLevelIdx || 0, Object.keys(item.scorecardLevels || {}).length)})` },
57
56
  React.createElement(CatalogHighlight_1.CatalogHighlight, null, item.scorecardLevel)))) ||
58
- null)),
57
+ null),
59
58
  React.createElement(SelectButton, { size: "medium", variant: "secondary", icon: React.createElement(ArrowRightIcon_1.ArrowRightIcon, null) })))));
60
59
  }
61
60
  exports.CatalogCard = CatalogCard;
@@ -37,7 +37,7 @@ const CodeBlockControls_1 = require("../../components/CodeBlock/CodeBlockControl
37
37
  function CodeBlock({ lang, source, externalSource, header, dataTestId = 'source-code', codeBlockRef, highlightedHtml, withLineNumbers, startLineNumber, className, codeBlockMaxHeight, tabs, hideCodeColors, wrapContents = false, children, }) {
38
38
  var _a, _b, _c, _d, _e, _f;
39
39
  const [sourceCode, setSourceCode] = (0, react_1.useState)((_c = (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)))) !== null && _c !== void 0 ? _c : '');
40
- const highlightedCode = highlightedHtml || children ? null : (0, utils_1.highlight)(sourceCode, lang);
40
+ const highlightedCode = highlightedHtml || (children ? null : (0, utils_1.highlight)(sourceCode, lang));
41
41
  // The same initial value should be returned for ssr and frontend to avoid issues
42
42
  // Because we don't have session storage in ssr and can't get the security details there
43
43
  // Issue for more details https://github.com/Redocly/reference-docs/issues/888
@@ -41,14 +41,19 @@ function Dropdown({ children, className, active, trigger, triggerEvent = 'click'
41
41
  const handleClose = () => {
42
42
  setIsOpen(false);
43
43
  };
44
- const handleToggle = () => {
44
+ const handleChildClick = (event) => {
45
+ event.stopPropagation();
46
+ event.preventDefault();
47
+ handleClose();
48
+ };
49
+ const handleToggle = (event) => {
50
+ event.stopPropagation();
51
+ event.preventDefault();
45
52
  setIsOpen(!isOpen);
46
53
  };
47
54
  const handleKeyDown = (event) => {
48
55
  if (event.key === 'Enter' || event.key === ' ') {
49
- handleToggle();
50
- event.stopPropagation();
51
- event.preventDefault();
56
+ handleToggle(event);
52
57
  }
53
58
  };
54
59
  (0, hooks_1.useOutsideClick)(dropdownRef, handleClose);
@@ -56,7 +61,7 @@ function Dropdown({ children, className, active, trigger, triggerEvent = 'click'
56
61
  const dropdownTrigger = (0, react_1.cloneElement)(triggerChild, Object.assign(Object.assign(Object.assign(Object.assign({ onClick: triggerEvent === 'click' ? handleToggle : undefined, icon: withArrow ? isOpen ? react_1.default.createElement(ChevronUpIcon_1.ChevronUpIcon, null) : react_1.default.createElement(ChevronDownIcon_1.ChevronDownIcon, null) : undefined }, (withArrow ? { iconPosition: 'right' } : {})), { tabIndex: 0 }), triggerChild.props), { onKeyDown: triggerEvent === 'click' ? handleKeyDown : undefined }));
57
62
  return (react_1.default.createElement(DropdownWrapper, Object.assign({ "data-component-name": "Dropdown/Dropdown", "data-testid": "dropdown" }, dataAttributes, { className: className, ref: dropdownRef, onPointerEnter: triggerEvent === 'hover' ? handleOpen : undefined, onPointerLeave: triggerEvent === 'hover' ? handleClose : undefined }),
58
63
  dropdownTrigger,
59
- isOpen && (react_1.default.createElement(ChildrenWrapper, { placement: placement, alignment: alignment, onClick: closeOnClick ? handleClose : undefined }, children))));
64
+ isOpen && (react_1.default.createElement(ChildrenWrapper, { placement: placement, alignment: alignment, onClick: closeOnClick ? handleChildClick : undefined }, children))));
60
65
  }
61
66
  exports.Dropdown = Dropdown;
62
67
  const DropdownWrapper = styled_components_1.default.div `
@@ -51,6 +51,7 @@ function DropdownMenuItem(_a) {
51
51
  onAction === null || onAction === void 0 ? void 0 : onAction();
52
52
  }
53
53
  };
54
+ className = className || '' + (active ? ' active' : '');
54
55
  if (to) {
55
56
  return (react_1.default.createElement(DropdownMenuItemWrapper, Object.assign({ as: Link_1.Link, "data-component-name": "Dropdown/DropdownMenuItem", className: className, separatorLine: separatorLine, to: to, style: style, role: role }, dataAttributes, otherProps),
56
57
  prefix,
@@ -99,17 +100,30 @@ const DropdownMenuItemWrapper = styled_components_1.default.li `
99
100
  `}
100
101
 
101
102
  background-color: var(--dropdown-menu-item-bg-color);
103
+ color: var(--dropdown-menu-item-color);
104
+
105
+ ${({ active }) => active &&
106
+ (0, styled_components_1.css) `
107
+ background-color: var(--dropdown-menu-item-bg-color-active);
108
+ color: var(--dropdown-menu-item-color-active);
109
+ svg {
110
+ fill: var(--dropdown-menu-item-color-active);
111
+ }
112
+ `}
113
+
102
114
  &:hover {
103
115
  background-color: var(--dropdown-menu-item-bg-color-hover);
116
+ color: var(--dropdown-menu-item-color-hover);
104
117
  }
105
118
 
106
119
  ${({ disabled }) => disabled &&
107
120
  (0, styled_components_1.css) `
108
121
  cursor: default;
109
122
  pointer-events: none;
110
- color: var(--dropdown-menu-color-disabled);
123
+ background-color: var(--dropdown-menu-item-bg-color-disabled);
124
+ color: var(--dropdown-menu-item-color-disabled);
111
125
  svg {
112
- fill: var(--dropdown-menu-color-disabled);
126
+ fill: var(--dropdown-menu-item-color-disabled);
113
127
  }
114
128
  `}
115
129
 
@@ -128,9 +142,12 @@ const DropdownMenuItemWrapper = styled_components_1.default.li `
128
142
 
129
143
  ${({ dangerous }) => dangerous &&
130
144
  (0, styled_components_1.css) `
131
- color: var(--dropdown-menu-item-color-dangerous);
132
- svg {
133
- fill: var(--dropdown-menu-item-color-dangerous);
145
+ &:hover,
146
+ & {
147
+ color: var(--dropdown-menu-item-color-dangerous);
148
+ svg {
149
+ fill: var(--dropdown-menu-item-color-dangerous);
150
+ }
134
151
  }
135
152
  `}
136
153
  `;
@@ -17,7 +17,6 @@ exports.dropdown = (0, styled_components_1.css) `
17
17
  --dropdown-menu-padding: var(--spacing-xxs); // @presenter Spacing
18
18
  --dropdown-menu-border-radius: var(--border-radius-lg); // @presenter BorderRadius
19
19
  --dropdown-menu-box-shadow: var(--bg-raised-shadow); // @presenter Shadow
20
- --dropdown-menu-color-disabled: var(--text-color-disabled); // @presenter Color
21
20
  --dropdown-menu-border-color: var(--border-color-secondary); // @presenter Color
22
21
  --dropdown-menu-bg-color: var(--bg-color-raised); // @presenter Color
23
22
 
@@ -30,11 +29,16 @@ exports.dropdown = (0, styled_components_1.css) `
30
29
  --dropdown-menu-item-bg-color: transparent;
31
30
  --dropdown-menu-item-bg-color-active: var(--bg-color-hover); // @presenter Color
32
31
  --dropdown-menu-item-bg-color-hover: var(--bg-color-hover); // @presenter Color
32
+ --dropdown-menu-item-bg-color-disabled: var(--dropdown-menu-item-bg-color); // @presenter Color
33
33
  --dropdown-menu-item-separator-border-color: var(--border-color-primary); // @presenter Color
34
34
  --dropdown-menu-item-separator-font-size: var(--font-size-sm); // @presenter FontSize
35
35
  --dropdown-menu-item-separator-line-height: var(--line-height-sm); // @presenter LineHeight
36
36
  --dropdown-menu-item-separator-text-color: var(--text-color-disabled); // @presenter Color
37
37
  --dropdown-menu-item-justify-content: flex-start;
38
+ --dropdown-menu-item-color: var(--dropdown-menu-text-color); // @presenter Color
39
+ --dropdown-menu-item-color-hover: var(--dropdown-menu-item-color); // @presenter Color
40
+ --dropdown-menu-item-color-active: var(--dropdown-menu-item-color); // @presenter Color
41
+ --dropdown-menu-item-color-disabled: var(--text-color-disabled); // @presenter Color
38
42
 
39
43
  --dropdown-menu-item-color-dangerous: var(--color-error-base);
40
44
 
@@ -63,7 +63,7 @@ function Comment({ settings, onSubmit, onCancel, className, standAlone = true, }
63
63
  react_1.default.createElement(TextArea, { rows: 3, onChange: handleTextAreaChange }),
64
64
  standAlone && (react_1.default.createElement(ButtonsContainer, null,
65
65
  onCancel && (react_1.default.createElement(Button_1.Button, { "data-translation-key": "theme.feedback.settings.comment.cancel", onClick: onCancel, variant: "text", size: "small" }, translate('theme.feedback.settings.comment.cancel', 'Cancel'))),
66
- react_1.default.createElement(Button_1.Button, { "data-translation-key": "theme.feedback.settings.comment.send", onClick: send, variant: "primary", size: "small" }, translate('theme.feedback.settings.comment.send', 'Send'))))));
66
+ react_1.default.createElement(Button_1.Button, { "data-translation-key": "theme.feedback.settings.comment.send", onClick: send, variant: "secondary", size: "small" }, translate('theme.feedback.settings.comment.send', 'Send'))))));
67
67
  }
68
68
  exports.Comment = Comment;
69
69
  const StyledFormMandatoryFields = styled_components_1.default.div `
@@ -102,13 +102,13 @@ function Mood({ settings, onSubmit, className }) {
102
102
  React.createElement(Label, { "data-translation-key": "theme.feedback.settings.label" }, label || translate('theme.feedback.settings.label', 'Was this helpful?')),
103
103
  React.createElement(StyledMandatoryFieldContainer, null,
104
104
  React.createElement(React.Fragment, null,
105
- React.createElement(Button_1.Button, { type: "button", disabled: score === MOOD_STATES.DISSATISFIED, size: "medium", onClick: () => {
105
+ React.createElement(Button_1.Button, { type: "button", size: "medium", variant: score === MOOD_STATES.DISSATISFIED ? 'primary' : 'secondary', tone: score === MOOD_STATES.DISSATISFIED ? 'danger' : 'default', onClick: () => {
106
106
  setScore(MOOD_STATES.DISSATISFIED);
107
107
  }, icon: React.createElement(FaceDissatisfiedIcon_1.FaceDissatisfiedIcon, null) }),
108
- React.createElement(Button_1.Button, { type: "button", disabled: score === MOOD_STATES.NEUTRAL, size: "medium", onClick: () => {
108
+ React.createElement(Button_1.Button, { type: "button", variant: score === MOOD_STATES.NEUTRAL ? 'primary' : 'secondary', size: "medium", onClick: () => {
109
109
  setScore(MOOD_STATES.NEUTRAL);
110
110
  }, icon: React.createElement(FaceNeutralIcon_1.FaceNeutralIcon, null) }),
111
- React.createElement(Button_1.Button, { type: "button", disabled: score === MOOD_STATES.SATISFIED, size: "medium", onClick: () => {
111
+ React.createElement(Button_1.Button, { type: "button", variant: score === MOOD_STATES.SATISFIED ? 'primary' : 'secondary', size: "medium", onClick: () => {
112
112
  setScore(MOOD_STATES.SATISFIED);
113
113
  }, icon: React.createElement(FaceSatisfiedIcon_1.FaceSatisfiedIcon, null) })))),
114
114
  (displayReasons || displayComment) && (React.createElement(StyledFormOptionalFields, null,
@@ -120,7 +120,7 @@ function Mood({ settings, onSubmit, className }) {
120
120
  displayComment && (React.createElement(Comment_1.Comment, { standAlone: false, onSubmit: ({ comment }) => setComment(comment), settings: { label: renderCommentLabel(score) } })))),
121
121
  displaySubmitBnt && (React.createElement(ButtonsContainer, null,
122
122
  React.createElement(Button_1.Button, { onClick: onCancelMoodForm, variant: "text", size: "small" }, "Cancel"),
123
- React.createElement(Button_1.Button, { onClick: onCancelMoodForm, variant: "primary", size: "small" }, "Submit"))))));
123
+ React.createElement(Button_1.Button, { onClick: onSubmitMoodForm, variant: "secondary", size: "small" }, "Submit"))))));
124
124
  }
125
125
  exports.Mood = Mood;
126
126
  const remapScore = (score) => {
@@ -88,7 +88,7 @@ function Rating({ settings, onSubmit, className }) {
88
88
  displayComment && (React.createElement(Comment_1.Comment, { standAlone: false, onSubmit: ({ comment }) => setComment(comment), settings: { label: commentSettings.label } })))),
89
89
  displaySubmitBnt && (React.createElement(ButtonsContainer, null,
90
90
  React.createElement(Button_1.Button, { onClick: onCancelRatingForm, variant: "text", size: "small" }, "Cancel"),
91
- React.createElement(Button_1.Button, { onClick: onCancelRatingForm, variant: "primary", size: "small" }, "Submit"))))));
91
+ React.createElement(Button_1.Button, { onClick: onCancelRatingForm, variant: "secondary", size: "small" }, "Submit"))))));
92
92
  }
93
93
  exports.Rating = Rating;
94
94
  const StyledForm = styled_components_1.default.form `
@@ -97,7 +97,7 @@ function Scale({ settings, onSubmit, className }) {
97
97
  displayComment && (React.createElement(Comment_1.Comment, { standAlone: false, onSubmit: ({ comment }) => setComment(comment), settings: { label: commentSettings.label } }))),
98
98
  displaySubmitBnt && (React.createElement(ButtonsContainer, null,
99
99
  React.createElement(Button_1.Button, { "data-translation-key": "theme.feedback.settings.comment.cancel", onClick: handleCancel, variant: "text", size: "small" }, translate('theme.feedback.settings.comment.cancel', 'Cancel')),
100
- React.createElement(Button_1.Button, { "data-translation-key": "theme.feedback.settings.scale.send", onClick: onSubmitScaleForm, variant: "primary", size: "small" }, translate('theme.feedback.settings.scale.send', 'Submit')))))));
100
+ React.createElement(Button_1.Button, { "data-translation-key": "theme.feedback.settings.scale.send", onClick: onSubmitScaleForm, variant: "secondary", size: "small" }, translate('theme.feedback.settings.scale.send', 'Submit')))))));
101
101
  }
102
102
  exports.Scale = Scale;
103
103
  const ScaleWrapper = styled_components_1.default.div `
@@ -82,10 +82,10 @@ function Sentiment({ settings, onSubmit, className }) {
82
82
  React.createElement(StyledFormMandatoryFields, null,
83
83
  React.createElement(Label, { "data-translation-key": "theme.feedback.settings.label" }, label || translate('theme.feedback.settings.label', 'Was this helpful?')),
84
84
  React.createElement(StyledMandatoryFieldContainer, null,
85
- React.createElement(Button_1.Button, { type: "button", size: "medium", disabled: score === 1, onClick: () => {
85
+ React.createElement(Button_1.Button, { type: "button", size: "medium", variant: score === 1 ? 'primary' : 'secondary', onClick: () => {
86
86
  setScore(1);
87
87
  }, "aria-label": "Like", icon: React.createElement(ThumbUpIcon_1.ThumbUpIcon, null) }),
88
- React.createElement(Button_1.Button, { size: "medium", type: "button", disabled: score === -1, onClick: () => {
88
+ React.createElement(Button_1.Button, { size: "medium", type: "button", variant: score === -1 ? 'primary' : 'secondary', tone: score === -1 ? 'danger' : 'default', onClick: () => {
89
89
  setScore(-1);
90
90
  }, "aria-label": "Dislike", icon: React.createElement(ThumbDownIcon_1.ThumbDownIcon, null) }))),
91
91
  (displayReasons || displayComment) && (React.createElement(StyledFormOptionalFields, null,
@@ -97,7 +97,7 @@ function Sentiment({ settings, onSubmit, className }) {
97
97
  displayComment && (React.createElement(Comment_1.Comment, { standAlone: false, onSubmit: ({ comment }) => setComment(comment), settings: { label: commentLabel } })))),
98
98
  displaySubmitBnt && (React.createElement(ButtonsContainer, null,
99
99
  React.createElement(Button_1.Button, { onClick: onCancelSentimentForm, variant: "text", size: "small" }, "Cancel"),
100
- React.createElement(Button_1.Button, { onClick: onSubmitSentimentForm, variant: "primary", size: "small" }, "Submit"))))));
100
+ React.createElement(Button_1.Button, { onClick: onSubmitSentimentForm, variant: "secondary", size: "small" }, "Submit"))))));
101
101
  }
102
102
  exports.Sentiment = Sentiment;
103
103
  const SentimentWrapper = styled_components_1.default.div `
@@ -30,7 +30,7 @@ function FilterContent({ setFilterTerm, filters, filterTerm, filterValuesCasing,
30
30
  return (react_1.default.createElement(FilterContentWrapper, { "data-component-name": "Filter/FilterContent" },
31
31
  react_1.default.createElement(FiltersHeader, null,
32
32
  react_1.default.createElement(FiltersTitle, { "data-translation-key": "theme.catalog.filters.title" }, translate('theme.catalog.filters.title', 'Filters')),
33
- hasActiveFilters ? (react_1.default.createElement(Button_1.Button, { size: "medium", variant: "ghost", onClick: handleClearAll }, translate('theme.catalog.filters.clearAll', 'Clear filters'))) : null),
33
+ hasActiveFilters ? (react_1.default.createElement(Button_1.Button, { size: "medium", tone: "danger", variant: "ghost", onClick: handleClearAll }, translate('theme.catalog.filters.clearAll', 'Clear filters'))) : null),
34
34
  react_1.default.createElement(FilterInput_1.FilterInput, { value: filterTerm, onChange: (updatedTerm) => setFilterTerm(updatedTerm) }),
35
35
  react_1.default.createElement(exports.FilterItems, null, filters.map((filter, idx) => (react_1.default.createElement(Filter_1.Filter, { filter: filter, key: filter.property + '-' + idx, filterValuesCasing: filterValuesCasing }))))));
36
36
  }
@@ -46,7 +46,7 @@ const LanguageDropdown = (0, styled_components_1.default)(Dropdown_1.Dropdown).a
46
46
  }
47
47
 
48
48
  --dropdown-menu-item-justify-content: space-between;
49
-
49
+ --dropdown-menu-item-gap: var(--spacing-xxs);
50
50
  --dropdown-menu-font-size: var(--language-picker-dropdown-font-size);
51
51
  --dropdown-menu-font-weight: var(--language-picker-dropdown-font-weight);
52
52
  --dropdown-menu-line-height: var(--language-picker-dropdown-line-height);
@@ -57,7 +57,6 @@ const LanguageDropdown = (0, styled_components_1.default)(Dropdown_1.Dropdown).a
57
57
  --dropdown-menu-padding: var(--language-picker-dropdown-padding);
58
58
  --dropdown-menu-border-radius: var(--language-picker-dropdown-border-radius);
59
59
  --dropdown-menu-box-shadow: var(--language-picker-dropdown-box-shadow);
60
- --dropdown-menu-color-disabled: var(--language-picker-dropdown-color-disabled);
61
60
  --dropdown-menu-border-color: var(--language-picker-dropdown-border-color);
62
61
  --dropdown-menu-bg-color: var(--language-picker-dropdown-bg-color);
63
62
  --dropdown-menu-item-padding-horizontal: var(--language-picker-dropdown-item-padding-horizontal);
@@ -71,9 +70,13 @@ const LanguageDropdown = (0, styled_components_1.default)(Dropdown_1.Dropdown).a
71
70
  --dropdown-menu-item-border-radius: var(--language-picker-dropdown-item-border-radius);
72
71
  --dropdown-menu-item-bg-color-active: var(--language-picker-dropdown-item-bg-color-active);
73
72
  --dropdown-menu-item-bg-color-hover: var(--language-picker-dropdown-item-bg-color-hover);
73
+ --dropdown-menu-item-bg-color-disabled: var(--language-picker-dropdown-item-bg-color-disabled);
74
74
  --dropdown-menu-item-separator-border-color: var(
75
75
  --language-picker-dropdown-item-separator-border-color
76
76
  );
77
77
  --dropdown-menu-item-color-dangerous: var(--language-picker-dropdown-item-color-dangerous);
78
+ --dropdown-menu-item-color-disabled: var(--language-picker-dropdown-item-color-disabled);
79
+ --dropdown-menu-item-color-active: var(--language-picker-dropdown-item-color-active);
80
+ --dropdown-menu-item-color-hover: var(--language-picker-dropdown-item-color-hover);
78
81
  `;
79
82
  //# sourceMappingURL=LanguagePicker.js.map
@@ -17,7 +17,6 @@ exports.languagePicker = (0, styled_components_1.css) `
17
17
  --language-picker-dropdown-padding: var(--dropdown-menu-padding ); // @presenter Spacing
18
18
  --language-picker-dropdown-border-radius: var(--dropdown-menu-border-radius); // @presenter BorderRadius
19
19
  --language-picker-dropdown-box-shadow: var(--dropdown-menu-box-shadow); // @presenter Shadow
20
- --language-picker-dropdown-color-disabled: var(--dropdown-menu-color-disabled); // @presenter Color
21
20
  --language-picker-dropdown-border-color: var(--dropdown-menu-border-color); // @presenter Color
22
21
  --language-picker-dropdown-bg-color: var(--dropdown-menu-bg-color); // @presenter Color
23
22
 
@@ -28,8 +27,12 @@ exports.languagePicker = (0, styled_components_1.css) `
28
27
  --language-picker-dropdown-item-border-radius: var(--dropdown-menu-item-border-radius ); // @presenter BorderRadius
29
28
  --language-picker-dropdown-item-bg-color-active: var(--dropdown-menu-item-bg-color-active); // @presenter Color
30
29
  --language-picker-dropdown-item-bg-color-hover: var(--dropdown-menu-item-bg-color-hover); // @presenter Color
30
+ --language-picker-dropdown-item-bg-color-disabled: var(--dropdown-menu-item-bg-color-disabled); // @presenter Color
31
31
  --language-picker-dropdown-item-separator-border-color: var(--dropdown-menu-item-separator-border-color); // @presenter Color
32
32
  --language-picker-dropdown-item-color-dangerous: var(--dropdown-menu-item-color-dangerous);
33
+ --language-picker-dropdown-item-color-disabled: var(--dropdown-menu-item-color-disabled);
34
+ --language-picker-dropdown-item-color-active: var(--dropdown-menu-item-color-active);
35
+ --language-picker-dropdown-item-color-hover: var(--dropdown-menu-item-color-hover);
33
36
  --language-picker-dropdown-item-border-color-focused: var(--dropdown-menu-item-border-color-focused);
34
37
 
35
38
  // @tokens End
@@ -122,37 +122,37 @@ exports.Markdown = styled_components_1.default.main.attrs(({ className }) => ({
122
122
  }
123
123
 
124
124
  h1.md {
125
- ${(0, theme_helpers_1.typography)('h1', 'h')};
125
+ ${(0, theme_helpers_1.typography)('h1')};
126
126
  margin: var(--h1-margin-top) 0 var(--h1-margin-bottom) 0;
127
127
  ${(0, headingAnchor_1.headingAnchorCss)()};
128
128
  }
129
129
 
130
130
  h2.md {
131
- ${(0, theme_helpers_1.typography)('h2', 'h')};
131
+ ${(0, theme_helpers_1.typography)('h2')};
132
132
  margin: var(--h2-margin-top) 0 var(--h2-margin-bottom) 0;
133
133
  ${(0, headingAnchor_1.headingAnchorCss)()};
134
134
  }
135
135
 
136
136
  h3.md {
137
- ${(0, theme_helpers_1.typography)('h3', 'h')};
137
+ ${(0, theme_helpers_1.typography)('h3')};
138
138
  margin: var(--h3-margin-top) 0 var(--h3-margin-bottom) 0;
139
139
  ${(0, headingAnchor_1.headingAnchorCss)()};
140
140
  }
141
141
 
142
142
  h4.md {
143
- ${(0, theme_helpers_1.typography)('h4', 'h')};
143
+ ${(0, theme_helpers_1.typography)('h4')};
144
144
  margin: var(--h4-margin-top) 0 var(--h4-margin-bottom) 0;
145
145
  ${(0, headingAnchor_1.headingAnchorCss)()};
146
146
  }
147
147
 
148
148
  h5.md {
149
- ${(0, theme_helpers_1.typography)('h5', 'h')};
149
+ ${(0, theme_helpers_1.typography)('h5')};
150
150
  margin: var(--h5-margin-top) 0 var(--h5-margin-bottom) 0;
151
151
  ${(0, headingAnchor_1.headingAnchorCss)()};
152
152
  }
153
153
 
154
154
  h6.md {
155
- ${(0, theme_helpers_1.typography)('h6', 'h')};
155
+ ${(0, theme_helpers_1.typography)('h6')};
156
156
  margin: var(--h6-margin-top) 0 var(--h6-margin-bottom) 0;
157
157
  ${(0, headingAnchor_1.headingAnchorCss)()};
158
158
  }
@@ -51,7 +51,6 @@ const ProductDropdown = (0, styled_components_1.default)(Dropdown_1.Dropdown).at
51
51
  --dropdown-menu-padding: var(--product-picker-dropdown-padding);
52
52
  --dropdown-menu-border-radius: var(--product-picker-dropdown-border-radius);
53
53
  --dropdown-menu-box-shadow: var(--product-picker-dropdown-box-shadow);
54
- --dropdown-menu-color-disabled: var(--product-picker-dropdown-color-disabled);
55
54
  --dropdown-menu-border-color: var(--product-picker-dropdow--border-color);
56
55
  --dropdown-menu-bg-color: var(--product-picker-dropdown-bg-color);
57
56
  --dropdown-menu-item-padding-horizontal: var(--product-picker-dropdown-item-padding-horizontal);
@@ -65,9 +64,13 @@ const ProductDropdown = (0, styled_components_1.default)(Dropdown_1.Dropdown).at
65
64
  --dropdown-menu-item-border-radius: var(--product-picker-dropdown-item-border-radius);
66
65
  --dropdown-menu-item-bg-color-active: var(--product-picker-dropdown-item-bg-color-active);
67
66
  --dropdown-menu-item-bg-color-hover: var(--product-picker-dropdown-item-bg-color-hover);
67
+ --dropdown-menu-item-bg-color-disabled: var(--product-picker-dropdown-item-bg-color-disabled);
68
68
  --dropdown-menu-item-separator-border-color: var(
69
69
  --product-picker-dropdown-item-separator-border-color
70
70
  );
71
71
  --dropdown-menu-item-color-dangerous: var(--product-picker-dropdown-item-color-dangerous);
72
+ --dropdown-menu-item-color-disabled: var(--product-picker-dropdown-item-color-disabled);
73
+ --dropdown-menu-item-color-active: var(--product-picker-dropdown-item-color-active);
74
+ --dropdown-menu-item-color-hover: var(--product-picker-dropdown-item-color-hover);
72
75
  `;
73
76
  //# sourceMappingURL=ProductPicker.js.map
@@ -20,7 +20,6 @@ exports.productPicker = (0, styled_components_1.css) `
20
20
  --product-picker-dropdown-padding: var(--dropdown-menu-padding ); // @presenter Spacing
21
21
  --product-picker-dropdown-border-radius: var(--dropdown-menu-border-radius); // @presenter BorderRadius
22
22
  --product-picker-dropdown-box-shadow: var(--dropdown-menu-box-shadow); // @presenter Shadow
23
- --product-picker-dropdown-color-disabled: var(--dropdown-menu-color-disabled); // @presenter Color
24
23
  --product-picker-dropdown-border-color: var(--dropdown-menu-border-color); // @presenter Color
25
24
  --product-picker-dropdown-bg-color: var(--dropdown-menu-bg-color); // @presenter Color
26
25
 
@@ -31,8 +30,12 @@ exports.productPicker = (0, styled_components_1.css) `
31
30
  --product-picker-dropdown-item-border-radius: var(--dropdown-menu-item-border-radius ); // @presenter BorderRadius
32
31
  --product-picker-dropdown-item-bg-color-active: var(--dropdown-menu-item-bg-color-active); // @presenter Color
33
32
  --product-picker-dropdown-item-bg-color-hover: var(--dropdown-menu-item-bg-color-hover); // @presenter Color
33
+ --product-picker-dropdown-item-bg-color-disabled: var(--dropdown-menu-item-bg-color-disabled); // @presenter Color
34
34
  --product-picker-dropdown-item-separator-border-color: var(--dropdown-menu-item-separator-border-color); // @presenter Color
35
35
  --product-picker-dropdown-item-color-dangerous: var(--dropdown-menu-item-color-dangerous);
36
+ --product-picker-dropdown-item-color-disabled: var(--dropdown-menu-item-color-disabled);
37
+ --product-picker-dropdown-item-color-active: var(--dropdown-menu-item-color-active);
38
+ --product-picker-dropdown-item-color-hover: var(--dropdown-menu-item-color-hover);
36
39
  --product-picker-dropdown-item-border-color-focused: var(--dropdown-menu-item-border-color-focused);
37
40
 
38
41
  `;
@@ -42,7 +42,7 @@ function Sidebar({ versions, menu, footer, header, growContent, collapsed, class
42
42
  if (sidebar === null || sidebar === void 0 ? void 0 : sidebar.hide) {
43
43
  return null;
44
44
  }
45
- return (react_1.default.createElement(SidebarContent, { "data-component-name": "Sidebar/Sidebar", animate: true, opened: isOpen, className: className, collapsed: mappedCollapsed },
45
+ return (react_1.default.createElement(SidebarContent, { "data-component-name": "Sidebar/Sidebar", opened: isOpen, className: className, collapsed: mappedCollapsed },
46
46
  header ? react_1.default.createElement(SidebarHeader, { collapsed: mappedCollapsed }, header) : null,
47
47
  !mappedCollapsed && versions ? versions : null,
48
48
  react_1.default.createElement(MenuContainer_1.MenuContainer, { hidden: mappedCollapsed, growContent: growContent, animation: menuItemsAnimation }, menu),
@@ -67,14 +67,8 @@ const SidebarContent = styled_components_1.default.aside `
67
67
  top: var(--navbar-height);
68
68
  height: calc(100vh - var(--navbar-height));
69
69
  overflow-x: hidden;
70
- ${({ opened, animate }) => `
71
- opacity: ${opened ? '1' : '0'};
72
- pointer-events: ${opened ? 'auto' : 'none'};
73
-
74
- & > * {
75
- transform: ${opened ? 'translate(0, 0)' : 'translate(0, 40px)'};
76
- transition: ${animate ? 'transform 0.65s ease, opacity 0.25s ease;' : 'none'};
77
- }
70
+ ${({ opened }) => `
71
+ display: ${opened ? 'flex' : 'none'}
78
72
  `};
79
73
 
80
74
  @media screen and (min-width: ${utils_1.breakpoints.medium}) {
@@ -141,8 +141,8 @@ const TooltipBody = styled_components_1.default.span `
141
141
  position: absolute;
142
142
  text-align: center;
143
143
 
144
- padding: 10px 20px;
145
- max-width: 250px;
144
+ padding: var(--tooltip-padding);
145
+ max-width: var(--tooltip-max-width);
146
146
  white-space: normal;
147
147
  overflow-wrap: break-word;
148
148
 
@@ -10,6 +10,10 @@ exports.tooltip = (0, styled_components_1.css) `
10
10
 
11
11
  --tooltip-text-color: var(--text-color-secondary);
12
12
  --tooltip-bg-color: var(--bg-color-raised);
13
+ --tooltip-padding-vertical: var(--spacing-xs);
14
+ --tooltip-padding-horizontal: var(--spacing-sm);
15
+ --tooltip-padding: var(--tooltip-padding-vertical) var(--tooltip-padding-horizontal);
16
+ --tooltip-max-width: 250px;
13
17
 
14
18
  .tooltip-copy-button {
15
19
  --tooltip-text-color: var(--text-color-secondary);
@@ -13,6 +13,6 @@ exports.H1 = styled_components_1.default.h1.attrs(({ className }) => ({
13
13
  color: var(--h1-text-color);
14
14
  margin: var(--h1-margin-top) 0 var(--h1-margin-bottom);
15
15
 
16
- ${(0, utils_1.typography)('h1', 'h')};
16
+ ${(0, utils_1.typography)('h1')};
17
17
  `;
18
18
  //# sourceMappingURL=H1.js.map
@@ -13,6 +13,6 @@ exports.H2 = styled_components_1.default.h2.attrs(({ className }) => ({
13
13
  color: var(--h2-text-color);
14
14
  margin: var(--h2-margin-top) 0 var(--h2-margin-bottom);
15
15
 
16
- ${(0, utils_1.typography)('h2', 'h')};
16
+ ${(0, utils_1.typography)('h2')};
17
17
  `;
18
18
  //# sourceMappingURL=H2.js.map
@@ -13,6 +13,6 @@ exports.H3 = styled_components_1.default.h3.attrs(({ className }) => ({
13
13
  color: var(--h3-text-color);
14
14
  margin: var(--h3-margin-top) 0 var(--h3-margin-bottom);
15
15
 
16
- ${(0, utils_1.typography)('h3', 'h')};
16
+ ${(0, utils_1.typography)('h3')};
17
17
  `;
18
18
  //# sourceMappingURL=H3.js.map
@@ -13,6 +13,6 @@ exports.H4 = styled_components_1.default.h4.attrs(({ className }) => ({
13
13
  color: var(--h4-text-color);
14
14
  margin: var(--h4-margin-top) 0 var(--h4-margin-bottom);
15
15
 
16
- ${(0, utils_1.typography)('h4', 'h')};
16
+ ${(0, utils_1.typography)('h4')};
17
17
  `;
18
18
  //# sourceMappingURL=H4.js.map
@@ -72,7 +72,6 @@ const StyledDropdown = (0, styled_components_1.default)(Dropdown_1.Dropdown).att
72
72
  --dropdown-menu-padding: var(--user-menu-dropdown-padding);
73
73
  --dropdown-menu-border-radius: var(--user-menu-dropdown-border-radius);
74
74
  --dropdown-menu-box-shadow: var(--user-menu-dropdown-box-shadow);
75
- --dropdown-menu-color-disabled: var(--user-menu-dropdown-color-disabled);
76
75
  --dropdown-menu-border-color: var(--user-menu-dropdown-border-color);
77
76
  --dropdown-menu-bg-color: var(--user-menu-dropdown-bg-color);
78
77
  --dropdown-menu-item-padding-horizontal: var(--user-menu-dropdown-item-padding-horizontal);
@@ -84,9 +83,13 @@ const StyledDropdown = (0, styled_components_1.default)(Dropdown_1.Dropdown).att
84
83
  --dropdown-menu-item-border-radius: var(--user-menu-dropdown-item-border-radius);
85
84
  --dropdown-menu-item-bg-color-active: var(--user-menu-dropdown-item-bg-color-active);
86
85
  --dropdown-menu-item-bg-color-hover: var(--user-menu-dropdown-item-bg-color-hover);
86
+ --dropdown-menu-item-bg-color-disabled: var(--user-menu-dropdown-item-bg-color-disabled);
87
87
  --dropdown-menu-item-separator-border-color: var(
88
88
  --user-menu-dropdown-item-separator-border-color
89
89
  );
90
90
  --dropdown-menu-item-color-dangerous: var(--user-menu-dropdown-item-color-dangerous);
91
+ --dropdown-menu-item-color-disabled: var(--user-menu-dropdown-item-color-disabled);
92
+ --dropdown-menu-item-color-active: var(--user-menu-dropdown-item-color-active);
93
+ --dropdown-menu-item-color-hover: var(--user-menu-dropdown-item-color-hover);
91
94
  `;
92
95
  //# sourceMappingURL=UserMenu.js.map
@@ -44,7 +44,6 @@ exports.userMenu = (0, styled_components_1.css) `
44
44
  --user-menu-dropdown-padding: var(--dropdown-menu-padding ); // @presenter Spacing
45
45
  --user-menu-dropdown-border-radius: var(--dropdown-menu-border-radius); // @presenter BorderRadius
46
46
  --user-menu-dropdown-box-shadow: var(--dropdown-menu-box-shadow); // @presenter Shadow
47
- --user-menu-dropdown-color-disabled: var(--dropdown-menu-color-disabled); // @presenter Color
48
47
  --user-menu-dropdown-border-color: var(--dropdown-menu-border-color); // @presenter Color
49
48
  --user-menu-dropdown-bg-color: var(--dropdown-menu-bg-color); // @presenter Color
50
49
 
@@ -55,8 +54,12 @@ exports.userMenu = (0, styled_components_1.css) `
55
54
  --user-menu-dropdown-item-border-radius: var(--dropdown-menu-item-border-radius ); // @presenter BorderRadius
56
55
  --user-menu-dropdown-item-bg-color-active: var(--dropdown-menu-item-bg-color-active); // @presenter Color
57
56
  --user-menu-dropdown-item-bg-color-hover: var(--dropdown-menu-item-bg-color-hover); // @presenter Color
57
+ --user-menu-dropdown-item-bg-color-disabled: var(--dropdown-menu-item-bg-color-disabled); // @presenter Color
58
58
  --user-menu-dropdown-item-separator-border-color: var(--dropdown-menu-item-separator-border-color); // @presenter Color
59
59
  --user-menu-dropdown-item-color-dangerous: var(--dropdown-menu-item-color-dangerous);
60
+ --user-menu-dropdown-item-color-disabled: var(--dropdown-menu-item-color-disabled);
61
+ --user-menu-dropdown-item-color-active: var(--dropdown-menu-item-color-active);
62
+ --user-menu-dropdown-item-color-hover: var(--dropdown-menu-item-color-hover);
60
63
  --user-menu-dropdown-item-border-color-focused: var(--dropdown-menu-item-border-color-focused);
61
64
 
62
65
  // @tokens End
@@ -973,10 +973,9 @@ const error = (0, styled_components_1.css) `
973
973
  --detailed-error-overlay-opacity: 0.9;
974
974
  --detailed-error-overlay-z-index: var(--z-index-raised);
975
975
 
976
- --detailed-error-modal-width: 70%;
977
- --detailed-error-modal-height: calc(100vh - 100px - var(--navbar-height));
978
- --detailed-error-modal-top: calc(50px + var(--navbar-height));
979
- --detailed-error-modal-left: 15%;
976
+ --detailed-error-modal-width: calc(100% - var(--spacing-lg) * 2);
977
+ --detailed-error-modal-height: calc(100vh - var(--navbar-height) - var(--spacing-lg) * 2);
978
+ --detailed-error-modal-top: calc(var(--spacing-lg) + var(--navbar-height));
980
979
  --detailed-error-modal-border-radius: var(--border-radius-md);
981
980
  --detailed-error-modal-bg-color: var(--bg-color-raised);
982
981
  --detailed-error-modal-color: var(--text-color-primary);
@@ -39,5 +39,8 @@ export type CatalogItem = {
39
39
  }>;
40
40
  scoreCardSlug?: string;
41
41
  tags?: unknown[];
42
+ versions?: CatalogItem[];
43
+ version?: string;
44
+ versionFolderId?: string;
42
45
  [k: string]: unknown;
43
46
  };
@@ -1,5 +1,5 @@
1
1
  /// <reference types="react" />
2
- import type { ResolvedNavItemWithLink, Version } from '@redocly/config';
2
+ import type { PageProps, ResolvedNavItemWithLink, Version } from '@redocly/config';
3
3
  import type { Callback, TFunction as TFunc } from 'i18next';
4
4
  import type { To, Location } from 'react-router-dom';
5
5
  import type { CatalogConfig, ProductUiConfig } from '../../config';
@@ -60,6 +60,8 @@ export type ThemeHooks = {
60
60
  useTelemetry: () => {
61
61
  send(action: TelemetryEvent, data: unknown): void;
62
62
  };
63
+ useUserTeams: () => string[];
64
+ usePageProps: <T extends Record<string, unknown>>() => PageProps & T;
63
65
  };
64
66
  export type I18nConfig = {
65
67
  currentLocale: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@redocly/theme",
3
- "version": "0.82.2-rc.1",
3
+ "version": "0.82.2-rc.3",
4
4
  "description": "Shared UI components lib",
5
5
  "keywords": [
6
6
  "theme",
@@ -98,7 +98,7 @@
98
98
  "timeago.js": "^4.0.2",
99
99
  "i18next": "^22.4.12",
100
100
  "nprogress": "^0.2.0",
101
- "@redocly/config": "0.5.0"
101
+ "@redocly/config": "0.82.2-rc.3"
102
102
  },
103
103
  "scripts": {
104
104
  "start": "npm-run-all --parallel storybook storybook:tokens:watch",
@@ -191,7 +191,11 @@ const ButtonComponent: React.FC<ButtonProps> = (props) => {
191
191
  );
192
192
 
193
193
  if (props.to) {
194
- return <StyledButtonLink to={props.to}>{button}</StyledButtonLink>;
194
+ return (
195
+ <StyledButtonLink to={props.to} onClick={props.onClick}>
196
+ {button}
197
+ </StyledButtonLink>
198
+ );
195
199
  } else {
196
200
  return button;
197
201
  }