@redocly/theme 0.82.2-rc.2 → 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 (55) 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/Tooltip/Tooltip.js +2 -2
  19. package/lib/components/Tooltip/variables.js +4 -0
  20. package/lib/components/Typography/H1.js +1 -1
  21. package/lib/components/Typography/H2.js +1 -1
  22. package/lib/components/Typography/H3.js +1 -1
  23. package/lib/components/Typography/H4.js +1 -1
  24. package/lib/components/UserMenu/UserMenu.js +4 -1
  25. package/lib/components/UserMenu/variables.js +4 -1
  26. package/lib/core/types/catalog.d.ts +3 -0
  27. package/lib/core/types/hooks.d.ts +3 -1
  28. package/package.json +2 -2
  29. package/src/components/Button/Button.tsx +5 -1
  30. package/src/components/Catalog/CatalogCard.tsx +20 -23
  31. package/src/components/CodeBlock/CodeBlock.tsx +1 -1
  32. package/src/components/Dropdown/Dropdown.tsx +12 -6
  33. package/src/components/Dropdown/DropdownMenuItem.tsx +24 -5
  34. package/src/components/Dropdown/variables.ts +5 -1
  35. package/src/components/Feedback/Comment.tsx +1 -1
  36. package/src/components/Feedback/Mood.tsx +5 -4
  37. package/src/components/Feedback/Rating.tsx +1 -1
  38. package/src/components/Feedback/Scale.tsx +1 -1
  39. package/src/components/Feedback/Sentiment.tsx +4 -3
  40. package/src/components/Filter/FilterContent.tsx +1 -1
  41. package/src/components/LanguagePicker/LanguagePicker.tsx +5 -2
  42. package/src/components/LanguagePicker/variables.ts +4 -1
  43. package/src/components/Markdown/Markdown.tsx +6 -6
  44. package/src/components/Product/ProductPicker.tsx +4 -1
  45. package/src/components/Product/variables.ts +4 -1
  46. package/src/components/Tooltip/Tooltip.tsx +2 -2
  47. package/src/components/Tooltip/variables.ts +4 -0
  48. package/src/components/Typography/H1.ts +1 -1
  49. package/src/components/Typography/H2.ts +1 -1
  50. package/src/components/Typography/H3.ts +1 -1
  51. package/src/components/Typography/H4.ts +1 -1
  52. package/src/components/UserMenu/UserMenu.tsx +4 -1
  53. package/src/components/UserMenu/variables.ts +4 -1
  54. package/src/core/types/catalog.ts +3 -1
  55. package/src/core/types/hooks.ts +3 -1
@@ -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
  `;
@@ -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
@@ -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.2",
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.82.2-rc.2"
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
  }
@@ -16,7 +16,6 @@ type CatalogCardProps = { item: CatalogItem };
16
16
  export function CatalogCard({ item }: CatalogCardProps): JSX.Element {
17
17
  const { useTelemetry } = useThemeHooks();
18
18
  const telemetry = useTelemetry();
19
- const hasTags = item.scorecardLevel || item.tags?.length;
20
19
  return (
21
20
  <Link key={item.docsLink || item.link} to={item.docsLink || item.link}>
22
21
  <StyledCard
@@ -34,28 +33,26 @@ export function CatalogCard({ item }: CatalogCardProps): JSX.Element {
34
33
  </CardDescription>
35
34
  </CardContent>
36
35
  <CardFooter>
37
- {hasTags && (
38
- <CardTags>
39
- {((item.tags as string[]) || []).map((tag, index) => (
40
- <CardTag key={tag + index} color={slug(tag)}>
41
- <CatalogHighlight>{capitalize(tag)}</CatalogHighlight>
42
- </CardTag>
43
- ))}
44
- {(item.scorecardLevel && (
45
- <Tag
46
- borderless
47
- withStatusDot
48
- statusDotColor={`var(${getScorecardColorVariable(
49
- item.scorecardLevelIdx || 0,
50
- Object.keys(item.scorecardLevels || {}).length,
51
- )})`}
52
- >
53
- <CatalogHighlight>{item.scorecardLevel}</CatalogHighlight>
54
- </Tag>
55
- )) ||
56
- null}
57
- </CardTags>
58
- )}
36
+ <CardTags>
37
+ {((item.tags as string[]) || []).map((tag, index) => (
38
+ <CardTag key={tag + index} color={slug(tag)}>
39
+ <CatalogHighlight>{capitalize(tag)}</CatalogHighlight>
40
+ </CardTag>
41
+ ))}
42
+ {(item.scorecardLevel && (
43
+ <Tag
44
+ borderless
45
+ withStatusDot
46
+ statusDotColor={`var(${getScorecardColorVariable(
47
+ item.scorecardLevelIdx || 0,
48
+ Object.keys(item.scorecardLevels || {}).length,
49
+ )})`}
50
+ >
51
+ <CatalogHighlight>{item.scorecardLevel}</CatalogHighlight>
52
+ </Tag>
53
+ )) ||
54
+ null}
55
+ </CardTags>
59
56
  <SelectButton size="medium" variant="secondary" icon={<ArrowRightIcon />} />
60
57
  </CardFooter>
61
58
  </StyledCard>
@@ -69,7 +69,7 @@ export function CodeBlock({
69
69
  (source || externalSource?.sample?.get?.(externalSource)) ?? '',
70
70
  );
71
71
 
72
- const highlightedCode = highlightedHtml || children ? null : highlight(sourceCode, lang);
72
+ const highlightedCode = highlightedHtml || (children ? null : highlight(sourceCode, lang));
73
73
 
74
74
  // The same initial value should be returned for ssr and frontend to avoid issues
75
75
  // Because we don't have session storage in ssr and can't get the security details there
@@ -44,15 +44,21 @@ export function Dropdown({
44
44
  setIsOpen(false);
45
45
  };
46
46
 
47
- const handleToggle = () => {
47
+ const handleChildClick = (event: React.UIEvent) => {
48
+ event.stopPropagation();
49
+ event.preventDefault();
50
+ handleClose();
51
+ };
52
+
53
+ const handleToggle = (event: React.UIEvent) => {
54
+ event.stopPropagation();
55
+ event.preventDefault();
48
56
  setIsOpen(!isOpen);
49
57
  };
50
58
 
51
- const handleKeyDown = (event: KeyboardEvent) => {
59
+ const handleKeyDown = (event: React.KeyboardEvent) => {
52
60
  if (event.key === 'Enter' || event.key === ' ') {
53
- handleToggle();
54
- event.stopPropagation();
55
- event.preventDefault();
61
+ handleToggle(event);
56
62
  }
57
63
  };
58
64
 
@@ -85,7 +91,7 @@ export function Dropdown({
85
91
  <ChildrenWrapper
86
92
  placement={placement}
87
93
  alignment={alignment}
88
- onClick={closeOnClick ? handleClose : undefined}
94
+ onClick={closeOnClick ? handleChildClick : undefined}
89
95
  >
90
96
  {children}
91
97
  </ChildrenWrapper>
@@ -53,6 +53,8 @@ export function DropdownMenuItem({
53
53
  }
54
54
  };
55
55
 
56
+ className = className || '' + (active ? ' active' : '');
57
+
56
58
  if (to) {
57
59
  return (
58
60
  <DropdownMenuItemWrapper
@@ -139,8 +141,21 @@ const DropdownMenuItemWrapper = styled.li<{
139
141
  `}
140
142
 
141
143
  background-color: var(--dropdown-menu-item-bg-color);
144
+ color: var(--dropdown-menu-item-color);
145
+
146
+ ${({ active }) =>
147
+ active &&
148
+ css`
149
+ background-color: var(--dropdown-menu-item-bg-color-active);
150
+ color: var(--dropdown-menu-item-color-active);
151
+ svg {
152
+ fill: var(--dropdown-menu-item-color-active);
153
+ }
154
+ `}
155
+
142
156
  &:hover {
143
157
  background-color: var(--dropdown-menu-item-bg-color-hover);
158
+ color: var(--dropdown-menu-item-color-hover);
144
159
  }
145
160
 
146
161
  ${({ disabled }) =>
@@ -148,9 +163,10 @@ const DropdownMenuItemWrapper = styled.li<{
148
163
  css`
149
164
  cursor: default;
150
165
  pointer-events: none;
151
- color: var(--dropdown-menu-color-disabled);
166
+ background-color: var(--dropdown-menu-item-bg-color-disabled);
167
+ color: var(--dropdown-menu-item-color-disabled);
152
168
  svg {
153
- fill: var(--dropdown-menu-color-disabled);
169
+ fill: var(--dropdown-menu-item-color-disabled);
154
170
  }
155
171
  `}
156
172
 
@@ -171,9 +187,12 @@ const DropdownMenuItemWrapper = styled.li<{
171
187
  ${({ dangerous }) =>
172
188
  dangerous &&
173
189
  css`
174
- color: var(--dropdown-menu-item-color-dangerous);
175
- svg {
176
- fill: var(--dropdown-menu-item-color-dangerous);
190
+ &:hover,
191
+ & {
192
+ color: var(--dropdown-menu-item-color-dangerous);
193
+ svg {
194
+ fill: var(--dropdown-menu-item-color-dangerous);
195
+ }
177
196
  }
178
197
  `}
179
198
  `;
@@ -15,7 +15,6 @@ export const dropdown = css`
15
15
  --dropdown-menu-padding: var(--spacing-xxs); // @presenter Spacing
16
16
  --dropdown-menu-border-radius: var(--border-radius-lg); // @presenter BorderRadius
17
17
  --dropdown-menu-box-shadow: var(--bg-raised-shadow); // @presenter Shadow
18
- --dropdown-menu-color-disabled: var(--text-color-disabled); // @presenter Color
19
18
  --dropdown-menu-border-color: var(--border-color-secondary); // @presenter Color
20
19
  --dropdown-menu-bg-color: var(--bg-color-raised); // @presenter Color
21
20
 
@@ -28,11 +27,16 @@ export const dropdown = css`
28
27
  --dropdown-menu-item-bg-color: transparent;
29
28
  --dropdown-menu-item-bg-color-active: var(--bg-color-hover); // @presenter Color
30
29
  --dropdown-menu-item-bg-color-hover: var(--bg-color-hover); // @presenter Color
30
+ --dropdown-menu-item-bg-color-disabled: var(--dropdown-menu-item-bg-color); // @presenter Color
31
31
  --dropdown-menu-item-separator-border-color: var(--border-color-primary); // @presenter Color
32
32
  --dropdown-menu-item-separator-font-size: var(--font-size-sm); // @presenter FontSize
33
33
  --dropdown-menu-item-separator-line-height: var(--line-height-sm); // @presenter LineHeight
34
34
  --dropdown-menu-item-separator-text-color: var(--text-color-disabled); // @presenter Color
35
35
  --dropdown-menu-item-justify-content: flex-start;
36
+ --dropdown-menu-item-color: var(--dropdown-menu-text-color); // @presenter Color
37
+ --dropdown-menu-item-color-hover: var(--dropdown-menu-item-color); // @presenter Color
38
+ --dropdown-menu-item-color-active: var(--dropdown-menu-item-color); // @presenter Color
39
+ --dropdown-menu-item-color-disabled: var(--text-color-disabled); // @presenter Color
36
40
 
37
41
  --dropdown-menu-item-color-dangerous: var(--color-error-base);
38
42
 
@@ -93,7 +93,7 @@ export function Comment({
93
93
  <Button
94
94
  data-translation-key="theme.feedback.settings.comment.send"
95
95
  onClick={send}
96
- variant="primary"
96
+ variant="secondary"
97
97
  size="small"
98
98
  >
99
99
  {translate('theme.feedback.settings.comment.send', 'Send')}
@@ -125,8 +125,9 @@ export function Mood({ settings, onSubmit, className }: MoodProps): JSX.Element
125
125
  <>
126
126
  <Button
127
127
  type="button"
128
- disabled={score === MOOD_STATES.DISSATISFIED}
129
128
  size="medium"
129
+ variant={score === MOOD_STATES.DISSATISFIED ? 'primary' : 'secondary'}
130
+ tone={score === MOOD_STATES.DISSATISFIED ? 'danger' : 'default'}
130
131
  onClick={() => {
131
132
  setScore(MOOD_STATES.DISSATISFIED);
132
133
  }}
@@ -134,7 +135,7 @@ export function Mood({ settings, onSubmit, className }: MoodProps): JSX.Element
134
135
  />
135
136
  <Button
136
137
  type="button"
137
- disabled={score === MOOD_STATES.NEUTRAL}
138
+ variant={score === MOOD_STATES.NEUTRAL ? 'primary' : 'secondary'}
138
139
  size="medium"
139
140
  onClick={() => {
140
141
  setScore(MOOD_STATES.NEUTRAL);
@@ -143,7 +144,7 @@ export function Mood({ settings, onSubmit, className }: MoodProps): JSX.Element
143
144
  />
144
145
  <Button
145
146
  type="button"
146
- disabled={score === MOOD_STATES.SATISFIED}
147
+ variant={score === MOOD_STATES.SATISFIED ? 'primary' : 'secondary'}
147
148
  size="medium"
148
149
  onClick={() => {
149
150
  setScore(MOOD_STATES.SATISFIED);
@@ -180,7 +181,7 @@ export function Mood({ settings, onSubmit, className }: MoodProps): JSX.Element
180
181
  <Button onClick={onCancelMoodForm} variant="text" size="small">
181
182
  Cancel
182
183
  </Button>
183
- <Button onClick={onCancelMoodForm} variant="primary" size="small">
184
+ <Button onClick={onSubmitMoodForm} variant="secondary" size="small">
184
185
  Submit
185
186
  </Button>
186
187
  </ButtonsContainer>
@@ -123,7 +123,7 @@ export function Rating({ settings, onSubmit, className }: RatingProps): JSX.Elem
123
123
  <Button onClick={onCancelRatingForm} variant="text" size="small">
124
124
  Cancel
125
125
  </Button>
126
- <Button onClick={onCancelRatingForm} variant="primary" size="small">
126
+ <Button onClick={onCancelRatingForm} variant="secondary" size="small">
127
127
  Submit
128
128
  </Button>
129
129
  </ButtonsContainer>
@@ -163,7 +163,7 @@ export function Scale({ settings, onSubmit, className }: ScaleProps): JSX.Elemen
163
163
  <Button
164
164
  data-translation-key="theme.feedback.settings.scale.send"
165
165
  onClick={onSubmitScaleForm}
166
- variant="primary"
166
+ variant="secondary"
167
167
  size="small"
168
168
  >
169
169
  {translate('theme.feedback.settings.scale.send', 'Submit')}
@@ -101,7 +101,7 @@ export function Sentiment({ settings, onSubmit, className }: SentimentProps): JS
101
101
  <Button
102
102
  type="button"
103
103
  size="medium"
104
- disabled={score === 1}
104
+ variant={score === 1 ? 'primary' : 'secondary'}
105
105
  onClick={() => {
106
106
  setScore(1);
107
107
  }}
@@ -111,7 +111,8 @@ export function Sentiment({ settings, onSubmit, className }: SentimentProps): JS
111
111
  <Button
112
112
  size="medium"
113
113
  type="button"
114
- disabled={score === -1}
114
+ variant={score === -1 ? 'primary' : 'secondary'}
115
+ tone={score === -1 ? 'danger' : 'default'}
115
116
  onClick={() => {
116
117
  setScore(-1);
117
118
  }}
@@ -147,7 +148,7 @@ export function Sentiment({ settings, onSubmit, className }: SentimentProps): JS
147
148
  <Button onClick={onCancelSentimentForm} variant="text" size="small">
148
149
  Cancel
149
150
  </Button>
150
- <Button onClick={onSubmitSentimentForm} variant="primary" size="small">
151
+ <Button onClick={onSubmitSentimentForm} variant="secondary" size="small">
151
152
  Submit
152
153
  </Button>
153
154
  </ButtonsContainer>
@@ -46,7 +46,7 @@ export function FilterContent({
46
46
  {translate('theme.catalog.filters.title', 'Filters')}
47
47
  </FiltersTitle>
48
48
  {hasActiveFilters ? (
49
- <Button size="medium" variant="ghost" onClick={handleClearAll}>
49
+ <Button size="medium" tone="danger" variant="ghost" onClick={handleClearAll}>
50
50
  {translate('theme.catalog.filters.clearAll', 'Clear filters')}
51
51
  </Button>
52
52
  ) : null}
@@ -67,7 +67,7 @@ const LanguageDropdown = styled(Dropdown).attrs(() => ({
67
67
  }
68
68
 
69
69
  --dropdown-menu-item-justify-content: space-between;
70
-
70
+ --dropdown-menu-item-gap: var(--spacing-xxs);
71
71
  --dropdown-menu-font-size: var(--language-picker-dropdown-font-size);
72
72
  --dropdown-menu-font-weight: var(--language-picker-dropdown-font-weight);
73
73
  --dropdown-menu-line-height: var(--language-picker-dropdown-line-height);
@@ -78,7 +78,6 @@ const LanguageDropdown = styled(Dropdown).attrs(() => ({
78
78
  --dropdown-menu-padding: var(--language-picker-dropdown-padding);
79
79
  --dropdown-menu-border-radius: var(--language-picker-dropdown-border-radius);
80
80
  --dropdown-menu-box-shadow: var(--language-picker-dropdown-box-shadow);
81
- --dropdown-menu-color-disabled: var(--language-picker-dropdown-color-disabled);
82
81
  --dropdown-menu-border-color: var(--language-picker-dropdown-border-color);
83
82
  --dropdown-menu-bg-color: var(--language-picker-dropdown-bg-color);
84
83
  --dropdown-menu-item-padding-horizontal: var(--language-picker-dropdown-item-padding-horizontal);
@@ -92,8 +91,12 @@ const LanguageDropdown = styled(Dropdown).attrs(() => ({
92
91
  --dropdown-menu-item-border-radius: var(--language-picker-dropdown-item-border-radius);
93
92
  --dropdown-menu-item-bg-color-active: var(--language-picker-dropdown-item-bg-color-active);
94
93
  --dropdown-menu-item-bg-color-hover: var(--language-picker-dropdown-item-bg-color-hover);
94
+ --dropdown-menu-item-bg-color-disabled: var(--language-picker-dropdown-item-bg-color-disabled);
95
95
  --dropdown-menu-item-separator-border-color: var(
96
96
  --language-picker-dropdown-item-separator-border-color
97
97
  );
98
98
  --dropdown-menu-item-color-dangerous: var(--language-picker-dropdown-item-color-dangerous);
99
+ --dropdown-menu-item-color-disabled: var(--language-picker-dropdown-item-color-disabled);
100
+ --dropdown-menu-item-color-active: var(--language-picker-dropdown-item-color-active);
101
+ --dropdown-menu-item-color-hover: var(--language-picker-dropdown-item-color-hover);
99
102
  `;
@@ -15,7 +15,6 @@ export const languagePicker = css`
15
15
  --language-picker-dropdown-padding: var(--dropdown-menu-padding ); // @presenter Spacing
16
16
  --language-picker-dropdown-border-radius: var(--dropdown-menu-border-radius); // @presenter BorderRadius
17
17
  --language-picker-dropdown-box-shadow: var(--dropdown-menu-box-shadow); // @presenter Shadow
18
- --language-picker-dropdown-color-disabled: var(--dropdown-menu-color-disabled); // @presenter Color
19
18
  --language-picker-dropdown-border-color: var(--dropdown-menu-border-color); // @presenter Color
20
19
  --language-picker-dropdown-bg-color: var(--dropdown-menu-bg-color); // @presenter Color
21
20
 
@@ -26,8 +25,12 @@ export const languagePicker = css`
26
25
  --language-picker-dropdown-item-border-radius: var(--dropdown-menu-item-border-radius ); // @presenter BorderRadius
27
26
  --language-picker-dropdown-item-bg-color-active: var(--dropdown-menu-item-bg-color-active); // @presenter Color
28
27
  --language-picker-dropdown-item-bg-color-hover: var(--dropdown-menu-item-bg-color-hover); // @presenter Color
28
+ --language-picker-dropdown-item-bg-color-disabled: var(--dropdown-menu-item-bg-color-disabled); // @presenter Color
29
29
  --language-picker-dropdown-item-separator-border-color: var(--dropdown-menu-item-separator-border-color); // @presenter Color
30
30
  --language-picker-dropdown-item-color-dangerous: var(--dropdown-menu-item-color-dangerous);
31
+ --language-picker-dropdown-item-color-disabled: var(--dropdown-menu-item-color-disabled);
32
+ --language-picker-dropdown-item-color-active: var(--dropdown-menu-item-color-active);
33
+ --language-picker-dropdown-item-color-hover: var(--dropdown-menu-item-color-hover);
31
34
  --language-picker-dropdown-item-border-color-focused: var(--dropdown-menu-item-border-color-focused);
32
35
 
33
36
  // @tokens End
@@ -103,37 +103,37 @@ export const Markdown = styled.main.attrs<{
103
103
  }
104
104
 
105
105
  h1.md {
106
- ${typography('h1', 'h')};
106
+ ${typography('h1')};
107
107
  margin: var(--h1-margin-top) 0 var(--h1-margin-bottom) 0;
108
108
  ${headingAnchorCss()};
109
109
  }
110
110
 
111
111
  h2.md {
112
- ${typography('h2', 'h')};
112
+ ${typography('h2')};
113
113
  margin: var(--h2-margin-top) 0 var(--h2-margin-bottom) 0;
114
114
  ${headingAnchorCss()};
115
115
  }
116
116
 
117
117
  h3.md {
118
- ${typography('h3', 'h')};
118
+ ${typography('h3')};
119
119
  margin: var(--h3-margin-top) 0 var(--h3-margin-bottom) 0;
120
120
  ${headingAnchorCss()};
121
121
  }
122
122
 
123
123
  h4.md {
124
- ${typography('h4', 'h')};
124
+ ${typography('h4')};
125
125
  margin: var(--h4-margin-top) 0 var(--h4-margin-bottom) 0;
126
126
  ${headingAnchorCss()};
127
127
  }
128
128
 
129
129
  h5.md {
130
- ${typography('h5', 'h')};
130
+ ${typography('h5')};
131
131
  margin: var(--h5-margin-top) 0 var(--h5-margin-bottom) 0;
132
132
  ${headingAnchorCss()};
133
133
  }
134
134
 
135
135
  h6.md {
136
- ${typography('h6', 'h')};
136
+ ${typography('h6')};
137
137
  margin: var(--h6-margin-top) 0 var(--h6-margin-bottom) 0;
138
138
  ${headingAnchorCss()};
139
139
  }
@@ -66,7 +66,6 @@ const ProductDropdown = styled(Dropdown).attrs(() => ({
66
66
  --dropdown-menu-padding: var(--product-picker-dropdown-padding);
67
67
  --dropdown-menu-border-radius: var(--product-picker-dropdown-border-radius);
68
68
  --dropdown-menu-box-shadow: var(--product-picker-dropdown-box-shadow);
69
- --dropdown-menu-color-disabled: var(--product-picker-dropdown-color-disabled);
70
69
  --dropdown-menu-border-color: var(--product-picker-dropdow--border-color);
71
70
  --dropdown-menu-bg-color: var(--product-picker-dropdown-bg-color);
72
71
  --dropdown-menu-item-padding-horizontal: var(--product-picker-dropdown-item-padding-horizontal);
@@ -80,8 +79,12 @@ const ProductDropdown = styled(Dropdown).attrs(() => ({
80
79
  --dropdown-menu-item-border-radius: var(--product-picker-dropdown-item-border-radius);
81
80
  --dropdown-menu-item-bg-color-active: var(--product-picker-dropdown-item-bg-color-active);
82
81
  --dropdown-menu-item-bg-color-hover: var(--product-picker-dropdown-item-bg-color-hover);
82
+ --dropdown-menu-item-bg-color-disabled: var(--product-picker-dropdown-item-bg-color-disabled);
83
83
  --dropdown-menu-item-separator-border-color: var(
84
84
  --product-picker-dropdown-item-separator-border-color
85
85
  );
86
86
  --dropdown-menu-item-color-dangerous: var(--product-picker-dropdown-item-color-dangerous);
87
+ --dropdown-menu-item-color-disabled: var(--product-picker-dropdown-item-color-disabled);
88
+ --dropdown-menu-item-color-active: var(--product-picker-dropdown-item-color-active);
89
+ --dropdown-menu-item-color-hover: var(--product-picker-dropdown-item-color-hover);
87
90
  `;
@@ -18,7 +18,6 @@ export const productPicker = css`
18
18
  --product-picker-dropdown-padding: var(--dropdown-menu-padding ); // @presenter Spacing
19
19
  --product-picker-dropdown-border-radius: var(--dropdown-menu-border-radius); // @presenter BorderRadius
20
20
  --product-picker-dropdown-box-shadow: var(--dropdown-menu-box-shadow); // @presenter Shadow
21
- --product-picker-dropdown-color-disabled: var(--dropdown-menu-color-disabled); // @presenter Color
22
21
  --product-picker-dropdown-border-color: var(--dropdown-menu-border-color); // @presenter Color
23
22
  --product-picker-dropdown-bg-color: var(--dropdown-menu-bg-color); // @presenter Color
24
23
 
@@ -29,8 +28,12 @@ export const productPicker = css`
29
28
  --product-picker-dropdown-item-border-radius: var(--dropdown-menu-item-border-radius ); // @presenter BorderRadius
30
29
  --product-picker-dropdown-item-bg-color-active: var(--dropdown-menu-item-bg-color-active); // @presenter Color
31
30
  --product-picker-dropdown-item-bg-color-hover: var(--dropdown-menu-item-bg-color-hover); // @presenter Color
31
+ --product-picker-dropdown-item-bg-color-disabled: var(--dropdown-menu-item-bg-color-disabled); // @presenter Color
32
32
  --product-picker-dropdown-item-separator-border-color: var(--dropdown-menu-item-separator-border-color); // @presenter Color
33
33
  --product-picker-dropdown-item-color-dangerous: var(--dropdown-menu-item-color-dangerous);
34
+ --product-picker-dropdown-item-color-disabled: var(--dropdown-menu-item-color-disabled);
35
+ --product-picker-dropdown-item-color-active: var(--dropdown-menu-item-color-active);
36
+ --product-picker-dropdown-item-color-hover: var(--dropdown-menu-item-color-hover);
34
37
  --product-picker-dropdown-item-border-color-focused: var(--dropdown-menu-item-border-color-focused);
35
38
 
36
39
  `;
@@ -168,8 +168,8 @@ const TooltipBody = styled.span<
168
168
  position: absolute;
169
169
  text-align: center;
170
170
 
171
- padding: 10px 20px;
172
- max-width: 250px;
171
+ padding: var(--tooltip-padding);
172
+ max-width: var(--tooltip-max-width);
173
173
  white-space: normal;
174
174
  overflow-wrap: break-word;
175
175
 
@@ -8,6 +8,10 @@ export const tooltip = css`
8
8
 
9
9
  --tooltip-text-color: var(--text-color-secondary);
10
10
  --tooltip-bg-color: var(--bg-color-raised);
11
+ --tooltip-padding-vertical: var(--spacing-xs);
12
+ --tooltip-padding-horizontal: var(--spacing-sm);
13
+ --tooltip-padding: var(--tooltip-padding-vertical) var(--tooltip-padding-horizontal);
14
+ --tooltip-max-width: 250px;
11
15
 
12
16
  .tooltip-copy-button {
13
17
  --tooltip-text-color: var(--text-color-secondary);
@@ -9,5 +9,5 @@ export const H1 = styled.h1.attrs<{ className?: string }>(({ className }) => ({
9
9
  color: var(--h1-text-color);
10
10
  margin: var(--h1-margin-top) 0 var(--h1-margin-bottom);
11
11
 
12
- ${typography('h1', 'h')};
12
+ ${typography('h1')};
13
13
  `;
@@ -9,5 +9,5 @@ export const H2 = styled.h2.attrs<{ className?: string }>(({ className }) => ({
9
9
  color: var(--h2-text-color);
10
10
  margin: var(--h2-margin-top) 0 var(--h2-margin-bottom);
11
11
 
12
- ${typography('h2', 'h')};
12
+ ${typography('h2')};
13
13
  `;
@@ -9,5 +9,5 @@ export const H3 = styled.h3.attrs<{ className?: string }>(({ className }) => ({
9
9
  color: var(--h3-text-color);
10
10
  margin: var(--h3-margin-top) 0 var(--h3-margin-bottom);
11
11
 
12
- ${typography('h3', 'h')};
12
+ ${typography('h3')};
13
13
  `;
@@ -9,5 +9,5 @@ export const H4 = styled.h4.attrs<{ className?: string }>(({ className }) => ({
9
9
  color: var(--h4-text-color);
10
10
  margin: var(--h4-margin-top) 0 var(--h4-margin-bottom);
11
11
 
12
- ${typography('h4', 'h')};
12
+ ${typography('h4')};
13
13
  `;
@@ -111,7 +111,6 @@ const StyledDropdown = styled(Dropdown).attrs(() => ({
111
111
  --dropdown-menu-padding: var(--user-menu-dropdown-padding);
112
112
  --dropdown-menu-border-radius: var(--user-menu-dropdown-border-radius);
113
113
  --dropdown-menu-box-shadow: var(--user-menu-dropdown-box-shadow);
114
- --dropdown-menu-color-disabled: var(--user-menu-dropdown-color-disabled);
115
114
  --dropdown-menu-border-color: var(--user-menu-dropdown-border-color);
116
115
  --dropdown-menu-bg-color: var(--user-menu-dropdown-bg-color);
117
116
  --dropdown-menu-item-padding-horizontal: var(--user-menu-dropdown-item-padding-horizontal);
@@ -123,8 +122,12 @@ const StyledDropdown = styled(Dropdown).attrs(() => ({
123
122
  --dropdown-menu-item-border-radius: var(--user-menu-dropdown-item-border-radius);
124
123
  --dropdown-menu-item-bg-color-active: var(--user-menu-dropdown-item-bg-color-active);
125
124
  --dropdown-menu-item-bg-color-hover: var(--user-menu-dropdown-item-bg-color-hover);
125
+ --dropdown-menu-item-bg-color-disabled: var(--user-menu-dropdown-item-bg-color-disabled);
126
126
  --dropdown-menu-item-separator-border-color: var(
127
127
  --user-menu-dropdown-item-separator-border-color
128
128
  );
129
129
  --dropdown-menu-item-color-dangerous: var(--user-menu-dropdown-item-color-dangerous);
130
+ --dropdown-menu-item-color-disabled: var(--user-menu-dropdown-item-color-disabled);
131
+ --dropdown-menu-item-color-active: var(--user-menu-dropdown-item-color-active);
132
+ --dropdown-menu-item-color-hover: var(--user-menu-dropdown-item-color-hover);
130
133
  `;
@@ -42,7 +42,6 @@ export const userMenu = css`
42
42
  --user-menu-dropdown-padding: var(--dropdown-menu-padding ); // @presenter Spacing
43
43
  --user-menu-dropdown-border-radius: var(--dropdown-menu-border-radius); // @presenter BorderRadius
44
44
  --user-menu-dropdown-box-shadow: var(--dropdown-menu-box-shadow); // @presenter Shadow
45
- --user-menu-dropdown-color-disabled: var(--dropdown-menu-color-disabled); // @presenter Color
46
45
  --user-menu-dropdown-border-color: var(--dropdown-menu-border-color); // @presenter Color
47
46
  --user-menu-dropdown-bg-color: var(--dropdown-menu-bg-color); // @presenter Color
48
47
 
@@ -53,8 +52,12 @@ export const userMenu = css`
53
52
  --user-menu-dropdown-item-border-radius: var(--dropdown-menu-item-border-radius ); // @presenter BorderRadius
54
53
  --user-menu-dropdown-item-bg-color-active: var(--dropdown-menu-item-bg-color-active); // @presenter Color
55
54
  --user-menu-dropdown-item-bg-color-hover: var(--dropdown-menu-item-bg-color-hover); // @presenter Color
55
+ --user-menu-dropdown-item-bg-color-disabled: var(--dropdown-menu-item-bg-color-disabled); // @presenter Color
56
56
  --user-menu-dropdown-item-separator-border-color: var(--dropdown-menu-item-separator-border-color); // @presenter Color
57
57
  --user-menu-dropdown-item-color-dangerous: var(--dropdown-menu-item-color-dangerous);
58
+ --user-menu-dropdown-item-color-disabled: var(--dropdown-menu-item-color-disabled);
59
+ --user-menu-dropdown-item-color-active: var(--dropdown-menu-item-color-active);
60
+ --user-menu-dropdown-item-color-hover: var(--dropdown-menu-item-color-hover);
58
61
  --user-menu-dropdown-item-border-color-focused: var(--dropdown-menu-item-border-color-focused);
59
62
 
60
63
  // @tokens End
@@ -34,6 +34,8 @@ export type CatalogItem = {
34
34
  scorecardLevels?: Record<string, { uniqueErrors: number; uniqueWarnings: number }>;
35
35
  scoreCardSlug?: string;
36
36
  tags?: unknown[];
37
-
37
+ versions?: CatalogItem[];
38
+ version?: string;
39
+ versionFolderId?: string;
38
40
  [k: string]: unknown;
39
41
  };
@@ -1,4 +1,4 @@
1
- import type { ResolvedNavItemWithLink, Version } from '@redocly/config';
1
+ import type { PageProps, ResolvedNavItemWithLink, Version } from '@redocly/config';
2
2
  import type { Callback, TFunction as TFunc } from 'i18next';
3
3
  import type { To, Location } from 'react-router-dom';
4
4
  import type { CatalogConfig, ProductUiConfig } from '@redocly/theme/config';
@@ -62,6 +62,8 @@ export type ThemeHooks = {
62
62
  | undefined;
63
63
  useCatalog: (config: CatalogConfig) => FilteredCatalog;
64
64
  useTelemetry: () => { send(action: TelemetryEvent, data: unknown): void };
65
+ useUserTeams: () => string[];
66
+ usePageProps: <T extends Record<string, unknown>>() => PageProps & T;
65
67
  };
66
68
 
67
69
  export type I18nConfig = {