@redocly/theme 0.25.1 → 0.25.2

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 (68) hide show
  1. package/lib/components/Catalog/Catalog.js +1 -4
  2. package/lib/components/CopyButton/CopyButton.js +2 -7
  3. package/lib/components/EditPageButton/EditPageButton.js +1 -4
  4. package/lib/components/Feedback/Comment.js +4 -10
  5. package/lib/components/Feedback/Mood.js +6 -13
  6. package/lib/components/Feedback/Rating.js +2 -6
  7. package/lib/components/Feedback/Reasons.js +4 -9
  8. package/lib/components/Feedback/Sentiment.js +4 -10
  9. package/lib/components/Feedback/Thumbs.js +2 -8
  10. package/lib/components/Feedback/useReportDialog.js +3 -8
  11. package/lib/components/Filter/Filter.js +1 -5
  12. package/lib/components/Filter/FilterContent.js +2 -6
  13. package/lib/components/Filter/FilterPopover.js +2 -6
  14. package/lib/components/Footer/FooterCopyright.js +2 -5
  15. package/lib/components/LastUpdated/LastUpdated.js +1 -1
  16. package/lib/components/Menu/hooks/use-mobile-menu-items.js +1 -4
  17. package/lib/components/Menu/hooks/use-mobile-menu-levels.js +2 -6
  18. package/lib/components/Menu/utils.d.ts +2 -1
  19. package/lib/components/Profile/LoginLink.js +2 -5
  20. package/lib/components/Profile/MobileUserProfile.js +1 -4
  21. package/lib/components/Profile/UserProfile.js +3 -7
  22. package/lib/components/Search/CancelSearch.js +1 -4
  23. package/lib/components/Search/RecentSearches.js +1 -4
  24. package/lib/components/Search/SearchDialog.js +4 -10
  25. package/lib/components/Search/SearchTrigger.js +1 -4
  26. package/lib/components/Search/SuggestedPages.js +1 -4
  27. package/lib/components/Sidebar/DrilldownMenu.js +2 -5
  28. package/lib/components/Sidebar/VersionPicker.js +2 -6
  29. package/lib/components/TableOfContent/TableOfContent.js +1 -4
  30. package/lib/layouts/Forbidden.js +2 -6
  31. package/lib/layouts/NotFound.js +2 -6
  32. package/lib/layouts/OIDCForbidden.js +1 -4
  33. package/lib/mocks/hooks/index.d.ts +3 -2
  34. package/lib/mocks/hooks/index.js +3 -4
  35. package/package.json +2 -2
  36. package/src/components/Catalog/Catalog.tsx +1 -4
  37. package/src/components/CopyButton/CopyButton.tsx +3 -8
  38. package/src/components/EditPageButton/EditPageButton.tsx +2 -5
  39. package/src/components/Feedback/Comment.tsx +14 -14
  40. package/src/components/Feedback/Mood.tsx +14 -15
  41. package/src/components/Feedback/Rating.tsx +4 -8
  42. package/src/components/Feedback/Reasons.tsx +6 -11
  43. package/src/components/Feedback/Sentiment.tsx +6 -12
  44. package/src/components/Feedback/Thumbs.tsx +2 -9
  45. package/src/components/Feedback/useReportDialog.ts +3 -8
  46. package/src/components/Filter/Filter.tsx +3 -5
  47. package/src/components/Filter/FilterContent.tsx +2 -6
  48. package/src/components/Filter/FilterPopover.tsx +2 -6
  49. package/src/components/Footer/FooterCopyright.tsx +2 -5
  50. package/src/components/LastUpdated/LastUpdated.tsx +1 -1
  51. package/src/components/Menu/hooks/use-mobile-menu-items.ts +1 -5
  52. package/src/components/Menu/hooks/use-mobile-menu-levels.ts +2 -7
  53. package/src/components/Menu/utils.ts +2 -1
  54. package/src/components/Profile/LoginLink.tsx +2 -5
  55. package/src/components/Profile/MobileUserProfile.tsx +1 -4
  56. package/src/components/Profile/UserProfile.tsx +5 -8
  57. package/src/components/Search/CancelSearch.tsx +2 -5
  58. package/src/components/Search/RecentSearches.tsx +2 -5
  59. package/src/components/Search/SearchDialog.tsx +8 -15
  60. package/src/components/Search/SearchTrigger.tsx +3 -5
  61. package/src/components/Search/SuggestedPages.tsx +2 -6
  62. package/src/components/Sidebar/DrilldownMenu.tsx +2 -5
  63. package/src/components/Sidebar/VersionPicker.tsx +3 -7
  64. package/src/components/TableOfContent/TableOfContent.tsx +2 -5
  65. package/src/layouts/Forbidden.tsx +4 -13
  66. package/src/layouts/NotFound.tsx +4 -13
  67. package/src/layouts/OIDCForbidden.tsx +2 -6
  68. package/src/mocks/hooks/index.ts +7 -6
@@ -21,15 +21,12 @@ function Catalog(props) {
21
21
  const items = (0, index_1.usePageSharedData)('catalog');
22
22
  const { filterTerm, setFilterTerm, groups, filters } = (0, Catalog_1.useCatalog)(items, catalogConfig);
23
23
  const [isAddingFilter, setIsAddingFilter] = react_1.default.useState(false);
24
- const translationKeys = {
25
- addFilter: 'theme.catalog.filters.select.addFilter',
26
- };
27
24
  const { translate } = (0, index_1.useTranslate)();
28
25
  (0, useModalScrollLock_1.default)(isAddingFilter);
29
26
  return (react_1.default.createElement(Highlight_1.HighlightContext.Provider, { value: [filterTerm] },
30
27
  react_1.default.createElement(exports.CatalogPageWrapper, { withoutFilters: !filters.length },
31
28
  !!filters.length && (react_1.default.createElement(FilterTagsWrapper, null,
32
- react_1.default.createElement(Button_1.Button, { variant: "text", size: "small", icon: react_1.default.createElement(PlusIcon_1.PlusIcon, null), onClick: () => setIsAddingFilter(true) }, translate(translationKeys.addFilter, 'Add filter')),
29
+ react_1.default.createElement(Button_1.Button, { variant: "text", size: "small", icon: react_1.default.createElement(PlusIcon_1.PlusIcon, null), onClick: () => setIsAddingFilter(true) }, translate('theme.catalog.filters.select.addFilter', 'Add filter')),
33
30
  react_1.default.createElement(FilterTags_1.FilterTags, { filters: filters }))),
34
31
  react_1.default.createElement(FilterContent_1.FilterContent, { setFilterTerm: setFilterTerm, filters: filters, filterTerm: filterTerm, isMobile: false, filterValuesCasing: catalogConfig.filterValuesCasing }),
35
32
  isAddingFilter && (react_1.default.createElement(FilterPopover_1.FilterPopover, { setIsAddingFilter: setIsAddingFilter, filters: filters, filterValuesCasing: catalogConfig.filterValuesCasing })),
@@ -34,11 +34,6 @@ const hooks_2 = require("../../mocks/hooks");
34
34
  function CopyButtonComponent({ data, type = 'icon', toasterPlacement = 'top', toasterText, toasterDuration, buttonText, tooltipText, onCopyClick, dataTestId = 'copy-button', }) {
35
35
  const tooltip = (0, hooks_1.useControl)();
36
36
  const { translate } = (0, hooks_2.useTranslate)();
37
- const translationKeys = {
38
- buttonText: 'theme.codeSnippet.copy.buttonText',
39
- tooltipText: 'theme.codeSnippet.copy.tooltipText',
40
- toasterText: 'theme.codeSnippet.copy.toasterText',
41
- };
42
37
  const showTooltip = (duration = 1500) => {
43
38
  tooltip.handleOpen();
44
39
  setTimeout(() => {
@@ -51,8 +46,8 @@ function CopyButtonComponent({ data, type = 'icon', toasterPlacement = 'top', to
51
46
  showTooltip(duration);
52
47
  onCopyClick === null || onCopyClick === void 0 ? void 0 : onCopyClick();
53
48
  };
54
- return (react_1.default.createElement(Tooltip_1.Tooltip, { className: "copy-button", tip: translate(translationKeys.toasterText, toasterText || 'Copied!'), isOpen: tooltip.isOpened, placement: toasterPlacement },
55
- react_1.default.createElement(CodeBlock_1.CodeBlockControlButton, { onClick: () => copy(toasterDuration), "data-cy": dataTestId, asIcon: type === 'icon', title: translate(translationKeys.tooltipText, tooltipText || 'Copy to clipboard'), "data-testid": dataTestId }, type === 'icon' ? (react_1.default.createElement(icons_1.CopyIcon, null)) : (translate(translationKeys.buttonText, buttonText || 'Copy')))));
49
+ return (react_1.default.createElement(Tooltip_1.Tooltip, { className: "copy-button", tip: translate('theme.codeSnippet.copy.buttonText', toasterText || 'Copied!'), isOpen: tooltip.isOpened, placement: toasterPlacement },
50
+ react_1.default.createElement(CodeBlock_1.CodeBlockControlButton, { onClick: () => copy(toasterDuration), "data-cy": dataTestId, asIcon: type === 'icon', title: translate('theme.codeSnippet.copy.tooltipText', tooltipText || 'Copy to clipboard'), "data-testid": dataTestId }, type === 'icon' ? (react_1.default.createElement(icons_1.CopyIcon, null)) : (translate('theme.codeSnippet.copy.toasterText', buttonText || 'Copy')))));
56
51
  }
57
52
  exports.CopyButton = (0, react_1.memo)(CopyButtonComponent);
58
53
  //# sourceMappingURL=CopyButton.js.map
@@ -12,12 +12,9 @@ const icons_1 = require("../../icons");
12
12
  const hooks_1 = require("../../mocks/hooks");
13
13
  const EditPageButton = ({ to }) => {
14
14
  const { translate } = (0, hooks_1.useTranslate)();
15
- const translationKeys = {
16
- text: 'theme.markdown.editPage.text',
17
- };
18
15
  return (react_1.default.createElement(EditButton, { "data-component-name": "EditPageButton/EditPageButton", to: to, onClick: () => telemetry_1.telemetry.send('edit_page_link_clicked', {}) },
19
16
  react_1.default.createElement(ButtonIcon, null),
20
- react_1.default.createElement(ButtonText, { "data-translation-key": translationKeys.text }, translate(translationKeys.text, 'Edit'))));
17
+ react_1.default.createElement(ButtonText, { "data-translation-key": "theme.markdown.editPage.text" }, translate('theme.markdown.editPage.text', 'Edit'))));
21
18
  };
22
19
  exports.EditPageButton = EditPageButton;
23
20
  const EditButton = (0, styled_components_1.default)(Link_1.Link) `
@@ -36,12 +36,6 @@ const Comment = ({ settings, onSubmit, onCancel, className }) => {
36
36
  const [text, setText] = React.useState('');
37
37
  const [submitValue, setSubmitValue] = React.useState('');
38
38
  const { translate } = (0, hooks_1.useTranslate)();
39
- const translationKeys = {
40
- submitText: 'theme.feedback.settings.comment.submitText',
41
- label: 'theme.feedback.settings.comment.label',
42
- send: 'theme.feedback.settings.comment.send',
43
- cancel: 'theme.feedback.settings.comment.cancel',
44
- };
45
39
  const send = () => {
46
40
  if (!text)
47
41
  return;
@@ -53,14 +47,14 @@ const Comment = ({ settings, onSubmit, onCancel, className }) => {
53
47
  };
54
48
  if (submitValue) {
55
49
  return (React.createElement(Wrapper, { className: className },
56
- React.createElement(Label, { "data-translation-key": translationKeys.submitText }, translate(translationKeys.submitText, submitText || 'Thank you for helping improve our documentation!'))));
50
+ React.createElement(Label, { "data-translation-key": "theme.feedback.settings.comment.submitText" }, translate('theme.feedback.settings.comment.submitText', submitText || 'Thank you for helping improve our documentation!'))));
57
51
  }
58
52
  return (React.createElement(Wrapper, { "data-component-name": "Feedback/Comment", className: className },
59
- React.createElement(Label, { "data-translation-key": translationKeys.label }, translate(translationKeys.label, label || 'Please share your feedback with us.')),
53
+ React.createElement(Label, { "data-translation-key": "theme.feedback.settings.comment.label" }, translate('theme.feedback.settings.comment.label', label || 'Please share your feedback with us.')),
60
54
  React.createElement(TextArea, { rows: 3, onChange: handleTextAreaChange }),
61
55
  React.createElement(ButtonsContainer, null,
62
- React.createElement(SendButton, { "data-translation-key": translationKeys.send, onClick: send }, translate(translationKeys.send, 'Send')),
63
- onCancel && (React.createElement(CancelButton, { "data-translation-key": translationKeys.cancel, onClick: onCancel }, translate(translationKeys.cancel, 'Cancel'))))));
56
+ React.createElement(SendButton, { "data-translation-key": "theme.feedback.settings.comment.send", onClick: send }, translate('theme.feedback.settings.comment.send', 'Send')),
57
+ onCancel && (React.createElement(CancelButton, { "data-translation-key": "theme.feedback.settings.comment.cancel", onClick: onCancel }, translate('theme.feedback.settings.comment.cancel', 'Cancel'))))));
64
58
  };
65
59
  exports.Comment = Comment;
66
60
  const Wrapper = styled_components_1.default.div `
@@ -45,13 +45,6 @@ const Mood = ({ settings, onSubmit, className }) => {
45
45
  const [comment, setComment] = React.useState('');
46
46
  const [reasons, setReasons] = React.useState([]);
47
47
  const { translate } = (0, hooks_1.useTranslate)();
48
- const translationKeys = {
49
- submitText: 'theme.feedback.settings.submitText',
50
- label: 'theme.feedback.settings.label',
51
- satisfiedLabel: 'theme.feedback.settings.comment.satisfiedLabel',
52
- neutralLabel: 'theme.feedback.settings.comment.neutralLabel',
53
- dissatisfiedLabel: 'theme.feedback.settings.comment.dissatisfiedLabel',
54
- };
55
48
  if (score && (reasonsSettings === null || reasonsSettings === void 0 ? void 0 : reasonsSettings.enable) && !reasons.length) {
56
49
  const { label: reasonsLabel, items, multi } = reasonsSettings;
57
50
  const buttonText = (commentSettings === null || commentSettings === void 0 ? void 0 : commentSettings.enable) ? 'Next' : 'Send';
@@ -61,13 +54,13 @@ const Mood = ({ settings, onSubmit, className }) => {
61
54
  const renderCommentLabel = (score) => {
62
55
  switch (score) {
63
56
  case MOOD_STATES.SATISFIED:
64
- return translate(translationKeys.satisfiedLabel, commentSettings.satisfiedLabel || 'What was most helpful?');
57
+ return translate('theme.feedback.settings.comment.satisfiedLabel', commentSettings.satisfiedLabel || 'What was most helpful?');
65
58
  case MOOD_STATES.NEUTRAL:
66
- return translate(translationKeys.neutralLabel, commentSettings.neutralLabel || 'What can we improve?');
59
+ return translate('theme.feedback.settings.comment.neutralLabel', commentSettings.neutralLabel || 'What can we improve?');
67
60
  case MOOD_STATES.DISSATISFIED:
68
- return translate(translationKeys.dissatisfiedLabel, commentSettings.dissatisfiedLabel || 'What can we improve?');
61
+ return translate('theme.feedback.settings.comment.dissatisfiedLabel', commentSettings.dissatisfiedLabel || 'What can we improve?');
69
62
  default:
70
- return translate(translationKeys.satisfiedLabel, 'What can we improve?');
63
+ return translate('theme.feedback.settings.comment.satisfiedLabel', 'What can we improve?');
71
64
  }
72
65
  };
73
66
  return (React.createElement(Feedback_1.Comment, { onSubmit: ({ comment }) => setComment(comment), settings: { label: renderCommentLabel(score) } }));
@@ -82,10 +75,10 @@ const Mood = ({ settings, onSubmit, className }) => {
82
75
  setIsSubmitted(true);
83
76
  }
84
77
  return (React.createElement(Wrapper, null,
85
- React.createElement(Label, { "data-translation-key": translationKeys.submitText }, translate(translationKeys.submitText, submitText || 'Thank you for your feedback!'))));
78
+ React.createElement(Label, { "data-translation-key": "theme.feedback.settings.submitText" }, translate('theme.feedback.settings.submitText', submitText || 'Thank you for your feedback!'))));
86
79
  }
87
80
  return (React.createElement(Wrapper, { "data-component-name": "Feedback/Mood", className: className },
88
- React.createElement(Label, { "data-translation-key": translationKeys.label }, translate(translationKeys.label, label || 'Was this page helpful?')),
81
+ React.createElement(Label, { "data-translation-key": "theme.feedback.settings.label" }, translate('theme.feedback.settings.label', label || 'Was this page helpful?')),
89
82
  React.createElement(Vote, { onClick: () => {
90
83
  setScore(MOOD_STATES.DISSATISFIED);
91
84
  } },
@@ -38,10 +38,6 @@ const Rating = ({ settings, onSubmit, className }) => {
38
38
  const [comment, setComment] = React.useState('');
39
39
  const [reasons, setReasons] = React.useState([]);
40
40
  const { translate } = (0, hooks_1.useTranslate)();
41
- const translationKeys = {
42
- submitText: 'theme.feedback.settings.submitText',
43
- label: 'theme.feedback.settings.label',
44
- };
45
41
  const maxRating = max || 5;
46
42
  if (score && (reasonsSettings === null || reasonsSettings === void 0 ? void 0 : reasonsSettings.enable) && !reasons.length) {
47
43
  const { label: reasonsLabel, items, multi } = reasonsSettings;
@@ -62,10 +58,10 @@ const Rating = ({ settings, onSubmit, className }) => {
62
58
  setIsSubmitted(true);
63
59
  }
64
60
  return (React.createElement(Wrapper, null,
65
- React.createElement(Label, { "data-translation-key": translationKeys.submitText }, translate(translationKeys.submitText, submitText || 'Thank you for helping improve our documentation!'))));
61
+ React.createElement(Label, { "data-translation-key": "theme.feedback.settings.submitText" }, translate('theme.feedback.settings.submitText', submitText || 'Thank you for helping improve our documentation!'))));
66
62
  }
67
63
  return (React.createElement(Wrapper, { "data-component-name": "Feedback/Rating", className: className },
68
- React.createElement(Label, { "data-translation-key": translationKeys.label }, translate(translationKeys.label, label || 'How helpful was this page?')),
64
+ React.createElement(Label, { "data-translation-key": "theme.feedback.settings.label" }, translate('theme.feedback.settings.label', label || 'How helpful was this page?')),
69
65
  React.createElement(Stars, { max: maxRating, onSubmit: setScore })));
70
66
  };
71
67
  exports.Rating = Rating;
@@ -35,11 +35,6 @@ const Reasons = ({ settings, onSubmit, className }) => {
35
35
  const { label, multi, buttonText, items = [] } = settings;
36
36
  const [checkedState, setCheckedState] = React.useState(new Array(items.length).fill(false));
37
37
  const { translate } = (0, hooks_1.useTranslate)();
38
- const translationKeys = {
39
- label: 'theme.feedback.settings.reasons.label',
40
- items: 'theme.feedback.settings.reasons.items',
41
- send: 'theme.feedback.settings.reasons.send',
42
- };
43
38
  if (!items.length) {
44
39
  return React.createElement(React.Fragment, null);
45
40
  }
@@ -53,12 +48,12 @@ const Reasons = ({ settings, onSubmit, className }) => {
53
48
  const submitForm = () => {
54
49
  onSubmit({ reasons: items.filter((_, index) => !!checkedState[index]) });
55
50
  };
56
- return (React.createElement(Wrapper, { "data-component-name": "Feedback/Reasons", "data-translation-key": translationKeys.label, className: className },
57
- React.createElement(Label, null, translate(translationKeys.label, label || 'Which statement describes your thoughts about this page?')),
51
+ return (React.createElement(Wrapper, { "data-component-name": "Feedback/Reasons", "data-translation-key": "theme.feedback.settings.reasons.label", className: className },
52
+ React.createElement(Label, null, translate('theme.feedback.settings.reasons.label', label || 'Which statement describes your thoughts about this page?')),
58
53
  items.map((reason, idx) => (React.createElement(OptionWrapper, { key: reason },
59
54
  React.createElement("input", { type: input_type, value: reason, checked: checkedState[idx], name: "reasons", onChange: () => handleOptionChange(idx) }),
60
- React.createElement("label", { "data-translation-key": `${translationKeys.items}.${idx + 1}`, id: reason, onClick: () => handleOptionChange(idx) }, translate(`${translationKeys.items}.${idx + 1}`, reason))))),
61
- React.createElement(SendButton, { "data-translation-key": translationKeys.send, onClick: submitForm }, translate(translationKeys.send, buttonText || 'Send'))));
55
+ React.createElement("label", { "data-translation-key": `theme.feedback.settings.reasons.items.${idx + 1}`, id: reason, onClick: () => handleOptionChange(idx) }, translate(`theme.feedback.settings.reasons.items.${idx + 1}`, reason))))),
56
+ React.createElement(SendButton, { "data-translation-key": "theme.feedback.settings.reasons.send", onClick: submitForm }, translate('theme.feedback.settings.reasons.send', buttonText || 'Send'))));
62
57
  };
63
58
  exports.Reasons = Reasons;
64
59
  const Wrapper = styled_components_1.default.div `
@@ -39,12 +39,6 @@ const Sentiment = ({ settings, onSubmit, className }) => {
39
39
  const [comment, setComment] = React.useState('');
40
40
  const [reasons, setReasons] = React.useState([]);
41
41
  const { translate } = (0, hooks_1.useTranslate)();
42
- const translationKeys = {
43
- submitText: 'theme.feedback.settings.submitText',
44
- label: 'theme.feedback.settings.label',
45
- likeLabel: 'theme.feedback.settings.comment.likeLabel',
46
- dislikeLabel: 'theme.feedback.settings.comment.dislikeLabel',
47
- };
48
42
  if (score && (reasonsSettings === null || reasonsSettings === void 0 ? void 0 : reasonsSettings.enable) && !reasons.length) {
49
43
  const { label: reasonsLabel, items, multi } = reasonsSettings;
50
44
  const buttonText = (commentSettings === null || commentSettings === void 0 ? void 0 : commentSettings.enable) ? 'Next' : 'Send';
@@ -52,8 +46,8 @@ const Sentiment = ({ settings, onSubmit, className }) => {
52
46
  }
53
47
  if (score && (commentSettings === null || commentSettings === void 0 ? void 0 : commentSettings.enable) && !comment) {
54
48
  const commentLabel = score === 1
55
- ? translate(translationKeys.likeLabel, commentSettings.likeLabel || 'What was most helpful?')
56
- : translate(translationKeys.dislikeLabel, commentSettings.dislikeLabel || 'What can we improve?');
49
+ ? translate('theme.feedback.settings.comment.likeLabel', commentSettings.likeLabel || 'What was most helpful?')
50
+ : translate('theme.feedback.settings.comment.dislikeLabel', commentSettings.dislikeLabel || 'What can we improve?');
57
51
  return (React.createElement(Feedback_1.Comment, { onSubmit: ({ comment }) => setComment(comment), settings: { label: commentLabel } }));
58
52
  }
59
53
  if (score) {
@@ -66,10 +60,10 @@ const Sentiment = ({ settings, onSubmit, className }) => {
66
60
  setIsSubmitted(true);
67
61
  }
68
62
  return (React.createElement(Wrapper, null,
69
- React.createElement(Label, { "data-translation-key": translationKeys.submitText }, translate(translationKeys.submitText, submitText || 'Thank you for helping improve our documentation!'))));
63
+ React.createElement(Label, { "data-translation-key": "theme.feedback.settings.submitText" }, translate('theme.feedback.settings.submitText', submitText || 'Thank you for helping improve our documentation!'))));
70
64
  }
71
65
  return (React.createElement(Wrapper, { "data-component-name": "Feedback/Sentiment", className: className },
72
- React.createElement(Label, { "data-translation-key": translationKeys.label }, translate(translationKeys.label, label || 'Was this page helpful?')),
66
+ React.createElement(Label, { "data-translation-key": "theme.feedback.settings.label" }, translate('theme.feedback.settings.label', label || 'Was this page helpful?')),
73
67
  React.createElement(Vote, { onClick: () => {
74
68
  setScore(1);
75
69
  } },
@@ -32,9 +32,6 @@ const styled_components_1 = __importDefault(require("styled-components"));
32
32
  const hooks_1 = require("../../mocks/hooks");
33
33
  const ThumbUp = ({ text }) => {
34
34
  const { translate } = (0, hooks_1.useTranslate)();
35
- const translationKeys = {
36
- thumbUp: 'theme.feedback.sentiment.thumbUp',
37
- };
38
35
  return (React.createElement(Wrapper, { style: { alignItems: 'normal' } },
39
36
  React.createElement(Icon, null,
40
37
  React.createElement("svg", { version: "1.1", xmlns: "http://www.w3.org/2000/svg", x: "0px", y: "0px", viewBox: "0 0 512 512" },
@@ -45,14 +42,11 @@ const ThumbUp = ({ text }) => {
45
42
  React.createElement("path", { d: "M76.8,443.733c9.412,0,17.067-7.654,17.067-17.067S86.212,409.6,76.8,409.6c-9.412,0-17.067,7.654-17.067,17.067\n S67.388,443.733,76.8,443.733z" }),
46
43
  React.createElement("path", { d: "M179.2,247.467c25.353,0,57.429-28.297,74.3-45.167c36.634-36.634,36.634-82.167,36.634-151.1\n c0-5.342,3.191-8.533,8.533-8.533c29.508,0,42.667,13.158,42.667,42.667v102.4c0,4.71,3.814,8.533,8.533,8.533\n s8.533-3.823,8.533-8.533v-102.4c0-39.083-20.659-59.733-59.733-59.733c-14.831,0-25.6,10.769-25.6,25.6\n c0,66.978,0,107.401-31.633,139.034C216.661,215.006,192.811,230.4,179.2,230.4c-4.719,0-8.533,3.823-8.533,8.533\n S174.481,247.467,179.2,247.467z" }),
47
44
  React.createElement("path", { d: "M145.067,213.333H8.533c-4.719,0-8.533,3.823-8.533,8.533v256c0,4.71,3.814,8.533,8.533,8.533h136.533\n c4.719,0,8.533-3.823,8.533-8.533v-256C153.6,217.156,149.786,213.333,145.067,213.333z M136.533,469.333H17.067V230.4h119.467\n V469.333z" })))))),
48
- React.createElement("span", null, translate(translationKeys.thumbUp, text || 'Yes'))));
45
+ React.createElement("span", null, translate('theme.feedback.sentiment.thumbUp', text || 'Yes'))));
49
46
  };
50
47
  exports.ThumbUp = ThumbUp;
51
48
  const ThumbDown = ({ text }) => {
52
49
  const { translate } = (0, hooks_1.useTranslate)();
53
- const translationKeys = {
54
- thumbDown: 'theme.feedback.sentiment.thumbDown',
55
- };
56
50
  return (React.createElement(Wrapper, { style: { alignItems: 'end' } },
57
51
  React.createElement(Icon, null,
58
52
  React.createElement("svg", { version: "1.1", xmlns: "http://www.w3.org/2000/svg", x: "0px", y: "0px", viewBox: "0 0 512 512" },
@@ -63,7 +57,7 @@ const ThumbDown = ({ text }) => {
63
57
  React.createElement("path", { d: "M495.736,221.227C505.634,213.41,512,201.301,512,187.733c0-18.295-11.58-33.946-27.802-39.996\n\t\t\t\tc6.673-7.535,10.735-17.434,10.735-28.271c0-22.281-17.169-40.627-38.963-42.505c3.055-5.094,4.83-10.999,4.83-17.229\n\t\t\t\tc0-17.86-16.265-34.133-34.133-34.133h-128c-40.021,0-56.03,8.832-71.526,17.374c-11.827,6.519-24.047,13.261-49.152,16.845\n\t\t\t\tc-4.668,0.666-7.902,4.992-7.236,9.66c0.666,4.659,4.949,7.885,9.66,7.236c28.177-4.028,42.411-11.87,54.963-18.79\n\t\t\t\tc14.848-8.183,27.665-15.258,63.292-15.258h128c8.619,0,17.067,8.456,17.067,17.067c0,8.934-8.132,17.067-17.067,17.067\n\t\t\t\tc-4.719,0-8.533,3.823-8.533,8.533s3.814,8.533,8.533,8.533h25.6c14.114,0,25.6,11.486,25.6,25.6s-11.486,25.6-25.6,25.6\n\t\t\t\tc-4.719,0-8.533,3.823-8.533,8.533c0,4.71,3.814,8.533,8.533,8.533h17.067c14.114,0,25.6,11.486,25.6,25.6\n\t\t\t\ts-11.486,25.6-25.6,25.6c-4.531,0-8.277,3.541-8.516,8.064c-0.247,4.531,3.081,8.457,7.586,8.951\n\t\t\t\tc26.53,2.91,26.53,16.418,26.53,20.847c0,13.773-11.418,30.404-25.6,30.404H349.867c-14.763,0-42.667,8.917-42.667,42.667\n\t\t\t\tc0,4.71,3.814,8.533,8.533,8.533s8.533-3.823,8.533-8.533c0-24.09,21.367-25.549,25.6-25.6h119.467\n\t\t\t\tc24.414,0,42.667-25.054,42.667-47.471C512,242.603,509.397,229.683,495.736,221.227z" }),
64
58
  React.createElement("path", { d: "M349.867,315.733c-4.719,0-8.533,3.823-8.533,8.533v102.4c0,29.508-13.158,42.667-42.667,42.667\n\t\t\t\tc-5.342,0-8.533-3.192-8.533-8.533c0-68.932,0-114.466-36.634-151.1c-16.87-16.87-48.947-45.167-74.3-45.167\n\t\t\t\tc-4.719,0-8.533,3.823-8.533,8.533s3.814,8.533,8.533,8.533c13.611,0,37.461,15.394,62.234,40.166\n\t\t\t\tc31.633,31.633,31.633,72.055,31.633,139.034c0,14.831,10.769,25.6,25.6,25.6c39.074,0,59.733-20.651,59.733-59.733v-102.4\n\t\t\t\tC358.4,319.556,354.586,315.733,349.867,315.733z" }),
65
59
  React.createElement("path", { d: "M145.067,25.6H8.533C3.814,25.6,0,29.423,0,34.133v256c0,4.71,3.814,8.533,8.533,8.533h136.533\n\t\t\t\tc4.719,0,8.533-3.823,8.533-8.533v-256C153.6,29.423,149.786,25.6,145.067,25.6z M136.533,281.6H17.067V42.667h119.467V281.6z" })))))),
66
- React.createElement("span", null, translate(translationKeys.thumbDown, text || 'No'))));
60
+ React.createElement("span", null, translate('theme.feedback.sentiment.thumbDown', text || 'No'))));
67
61
  };
68
62
  exports.ThumbDown = ThumbDown;
69
63
  const Wrapper = styled_components_1.default.div `
@@ -11,11 +11,6 @@ function useReportDialog() {
11
11
  const isReportButtonShown = (report === null || report === void 0 ? void 0 : report.hide) === false; // TODO: report temporary disabled by default
12
12
  const { translate } = (0, hooks_1.useTranslate)();
13
13
  const { submitFeedback } = (0, useSubmitFeedback_1.useSubmitFeedback)();
14
- const translationKeys = {
15
- buttonText: 'theme.codeSnippet.report.buttonText',
16
- tooltipText: 'theme.codeSnippet.report.tooltipText',
17
- label: 'theme.codeSnippet.report.label',
18
- };
19
14
  const showReportDialog = () => {
20
15
  setIsReportDialogShown(true);
21
16
  };
@@ -24,13 +19,13 @@ function useReportDialog() {
24
19
  };
25
20
  const reportButtonProps = {
26
21
  onClick: showReportDialog,
27
- buttonText: translate(translationKeys.buttonText, 'Report'),
28
- tooltip: translate(translationKeys.tooltipText, 'Report a problem'),
22
+ buttonText: translate('theme.codeSnippet.report.buttonText', 'Report'),
23
+ tooltip: translate('theme.codeSnippet.report.tooltipText', 'Report a problem'),
29
24
  visible: isReportButtonShown,
30
25
  };
31
26
  const reportDialogProps = {
32
27
  settings: {
33
- label: translate(translationKeys.label, 'What is wrong with this code?'),
28
+ label: translate('theme.codeSnippet.report.label', 'What is wrong with this code?'),
34
29
  },
35
30
  onSubmit: hideReportDialog,
36
31
  onCancel: hideReportDialog,
@@ -13,10 +13,6 @@ const Select_1 = require("../../components/Select");
13
13
  function Filter({ filter, filterValuesCasing, }) {
14
14
  var _a;
15
15
  const { translate } = (0, hooks_1.useTranslate)();
16
- const translationKeys = {
17
- selectAll: 'theme.catalog.filters.select.all',
18
- clear: 'theme.catalog.filters.clear',
19
- };
20
16
  if (!filter.parentUsed)
21
17
  return null;
22
18
  let selectOptions = [];
@@ -26,7 +22,7 @@ function Filter({ filter, filterValuesCasing, }) {
26
22
  {
27
23
  value: '',
28
24
  element: (react_1.default.createElement(FilterOption, { key: "all", onClick: () => filter.selectOption('') },
29
- react_1.default.createElement(FilterOptionLabel, null, translate(translationKeys.selectAll, 'All')),
25
+ react_1.default.createElement(FilterOptionLabel, null, translate('theme.catalog.filters.select.all', 'All')),
30
26
  react_1.default.createElement(FilterOptionCount, null, defaultOptionCount))),
31
27
  },
32
28
  ];
@@ -14,10 +14,6 @@ const Sidebar_1 = require("../../components/Sidebar");
14
14
  const FilterPopover_1 = require("../../components/Filter/FilterPopover");
15
15
  function FilterContent({ setFilterTerm, filters, filterTerm, isMobile, filterValuesCasing, }) {
16
16
  const { translate } = (0, hooks_1.useTranslate)();
17
- const translationKeys = {
18
- placeholder: 'theme.catalog.filters.placeholder',
19
- clearAll: 'theme.catalog.filters.clearAll',
20
- };
21
17
  const hasActiveFilters = filters.some((filter) => {
22
18
  if (filterTerm)
23
19
  return true;
@@ -34,10 +30,10 @@ function FilterContent({ setFilterTerm, filters, filterTerm, isMobile, filterVal
34
30
  };
35
31
  return (react_1.default.createElement(FilterContentWrapper, { isMobile: isMobile },
36
32
  react_1.default.createElement(Catalog_1.FilterControls, null,
37
- react_1.default.createElement(FilterPopover_1.StyledInput, { placeholder: translate(translationKeys.placeholder, 'Type to filter...'), value: filterTerm, onChange: (e) => setFilterTerm(e.target.value) })),
33
+ react_1.default.createElement(FilterPopover_1.StyledInput, { placeholder: translate('theme.catalog.filters.placeholder', 'Type to filter...'), value: filterTerm, onChange: (e) => setFilterTerm(e.target.value) })),
38
34
  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 })))),
39
35
  hasActiveFilters && (react_1.default.createElement(ActionsContainer, null,
40
- react_1.default.createElement(ClearAllButton, { size: "default", variant: "outlined", onClick: handleClearAll }, translate(translationKeys.placeholder, 'Clear all filters'))))));
36
+ react_1.default.createElement(ClearAllButton, { size: "default", variant: "outlined", onClick: handleClearAll }, translate('theme.catalog.filters.clearAll', 'Clear all filters'))))));
41
37
  }
42
38
  exports.FilterContent = FilterContent;
43
39
  const FilterContentWrapper = (0, styled_components_1.default)(Sidebar_1.Sidebar) `
@@ -19,18 +19,14 @@ function FilterPopover({ setIsAddingFilter, filters, filterValuesCasing, }) {
19
19
  ? Object.assign(Object.assign({}, filter), { filteredOptions: options }) : null;
20
20
  })
21
21
  .filter(Boolean);
22
- const translationKeys = {
23
- placeholder: 'theme.catalog.filters.placeholder',
24
- done: 'theme.catalog.filters.done',
25
- };
26
22
  const { translate } = (0, hooks_1.useTranslate)();
27
23
  return (react_1.default.createElement(FilterPopoverWrapper, null,
28
24
  react_1.default.createElement(FilterPopoverHeader, null,
29
25
  react_1.default.createElement(FilterPopoverHeaderLabel, null, "Add Filter"),
30
- react_1.default.createElement(FilterPopoverHeaderButton, { onClick: () => setIsAddingFilter(false) }, translate(translationKeys.placeholder, 'Done'))),
26
+ react_1.default.createElement(FilterPopoverHeaderButton, { onClick: () => setIsAddingFilter(false) }, translate('theme.catalog.filters.done', 'Done'))),
31
27
  react_1.default.createElement(FilterContent_1.FilterContent, { setFilterTerm: setFilterTerm, filters: filters, filterTerm: filterTerm, filterValuesCasing: filterValuesCasing, isMobile: true }),
32
28
  react_1.default.createElement(Catalog_1.FilterControls, null,
33
- react_1.default.createElement(exports.StyledInput, { placeholder: translate(translationKeys.placeholder, 'Type to filter...'), value: filterTerm, onChange: (e) => setFilterTerm(e.target.value) })),
29
+ react_1.default.createElement(exports.StyledInput, { placeholder: translate('theme.catalog.filters.placeholder', 'Type to filter...'), value: filterTerm, onChange: (e) => setFilterTerm(e.target.value) })),
34
30
  react_1.default.createElement(FilterContent_1.FilterItems, null, filteredFilters.map((filter, idx) => (react_1.default.createElement(Filter_1.Filter, { filter: filter, key: filter.property + '-' + idx }))))));
35
31
  }
36
32
  exports.FilterPopover = FilterPopover;
@@ -11,11 +11,8 @@ const hooks_1 = require("../../mocks/hooks");
11
11
  function FooterCopyright({ copyrightText = '', className, }) {
12
12
  const { translate } = (0, hooks_1.useTranslate)();
13
13
  const { changeLanguage } = (0, hooks_1.useI18n)();
14
- const translationKeys = {
15
- copyrightText: 'theme.footer.copyrightText',
16
- };
17
- return copyrightText ? (react_1.default.createElement(Wrapper, { className: className, "data-component-name": "Footer/FooterCopyright", "data-translation-key": translationKeys.copyrightText },
18
- react_1.default.createElement(Label, null, translate(translationKeys.copyrightText, copyrightText)),
14
+ return copyrightText ? (react_1.default.createElement(Wrapper, { className: className, "data-component-name": "Footer/FooterCopyright", "data-translation-key": "theme.footer.copyrightText" },
15
+ react_1.default.createElement(Label, null, translate('theme.footer.copyrightText', copyrightText)),
19
16
  react_1.default.createElement(LanguagePicker_1.LanguagePicker, { onChangeLanguage: changeLanguage, placement: "top", alignment: "end" }))) : null;
20
17
  }
21
18
  exports.FooterCopyright = FooterCopyright;
@@ -51,7 +51,7 @@ function LastUpdated(props) {
51
51
  const lastUpdatedString = FORMATS[format](lastModified, locale);
52
52
  const translationKey = format === 'timeago' ? 'theme.page.lastUpdated.timeago' : 'theme.page.lastUpdated.on';
53
53
  const text = format === 'timeago'
54
- ? translate(translationKey, 'Last updated ')
54
+ ? translate(translationKey, 'Last updated') + ' '
55
55
  : translate(translationKey, 'Last updated on');
56
56
  return (React.createElement(Wrapper, { className: props.className, "data-component-name": "LastUpdated/LastUpdated", rawOnPrint: format === 'timeago', "data-print-datetime": isoDate, "data-translation-key": translationKey },
57
57
  text,
@@ -11,9 +11,6 @@ const MENU_SEPARATOR = {
11
11
  type: 'separator',
12
12
  separatorLine: true,
13
13
  };
14
- const TRANSLATION_KEYS = {
15
- products: 'theme.mobileMenu.products',
16
- };
17
14
  const useMobileMenuItems = (menuType) => {
18
15
  var _a, _b, _c;
19
16
  const { versions = [] } = (0, hooks_1.usePageVersions)() || {};
@@ -59,7 +56,7 @@ const useMobileMenuItems = (menuType) => {
59
56
  if (productMenuItems.length) {
60
57
  menuItems.push({
61
58
  type: 'separator',
62
- label: translate(TRANSLATION_KEYS.products, 'Products'),
59
+ label: translate('theme.mobileMenu.products', 'Products'),
63
60
  });
64
61
  menuItems.push(...productMenuItems);
65
62
  }
@@ -7,10 +7,6 @@ const hooks_1 = require("../../../mocks/hooks");
7
7
  const useSidebarItems_1 = require("../../../mocks/Sidebar/useSidebarItems");
8
8
  const constants_1 = require("../../../components/Menu/constants");
9
9
  const hooks_2 = require("../../../hooks");
10
- const TRANSLATION_KEYS = {
11
- mainMenu: 'theme.mobileMenu.mainMenu',
12
- previous: 'theme.mobileMenu.previous',
13
- };
14
10
  const useMobileMenuLevels = () => {
15
11
  var _a, _b;
16
12
  const { versions = [] } = (0, hooks_1.usePageVersions)() || {};
@@ -25,7 +21,7 @@ const useMobileMenuLevels = () => {
25
21
  const menuLevels = (0, react_1.useMemo)(() => {
26
22
  const menuLevels = [
27
23
  {
28
- label: translate(TRANSLATION_KEYS.mainMenu, 'Main Menu'),
24
+ label: translate('theme.mobileMenu.mainMenu', 'Main Menu'),
29
25
  type: constants_1.MenuType.MAIN_MENU,
30
26
  },
31
27
  ];
@@ -37,7 +33,7 @@ const useMobileMenuLevels = () => {
37
33
  }
38
34
  if (sidebarItems.length || activeVersion) {
39
35
  menuLevels.push({
40
- label: translate(TRANSLATION_KEYS.previous, 'Previous'),
36
+ label: translate('theme.mobileMenu.previous', 'Previous'),
41
37
  type: constants_1.MenuType.PAGE,
42
38
  });
43
39
  }
@@ -1,6 +1,7 @@
1
1
  import type { Location } from 'react-router-dom';
2
+ import type { TFunction } from '@redocly/portal-types';
2
3
  import type { ItemState } from '../../components/Sidebar/types';
3
- import type { Locale, ResolvedNavItem, TFunction, Version } from '../../types/portal';
4
+ import type { Locale, ResolvedNavItem, Version } from '../../types/portal';
4
5
  export declare const mapNavbarItems: (items: ResolvedNavItem[], defaultLocale: string, currentLocale: string, locales: Locale[], location: Location) => ItemState[];
5
6
  export declare const isItemActive: (item: ResolvedNavItem, defaultLocale: string, currentLocale: string, locales: Locale[], location: Location) => boolean;
6
7
  export declare const buildLanguagesGroup: (locales: Locale[], currentLocale: string, defaultLocale: string) => ResolvedNavItem | undefined;
@@ -12,12 +12,9 @@ const telemetry_1 = require("../../mocks/telemetry");
12
12
  function LoginLink({ href }) {
13
13
  const { userProfile } = (0, useThemeConfig_1.useThemeConfig)();
14
14
  const { translate } = (0, hooks_1.useTranslate)();
15
- const translationKeys = {
16
- login: 'theme.profile.login',
17
- };
18
- return (react_1.default.createElement(StyledLink, { href: href, "data-translation-key": translationKeys.login, onClick: () => {
15
+ return (react_1.default.createElement(StyledLink, { href: href, "data-translation-key": "theme.profile.login", onClick: () => {
19
16
  telemetry_1.telemetry.send('login_button_clicked', {});
20
- } }, translate(translationKeys.login, (userProfile === null || userProfile === void 0 ? void 0 : userProfile.loginLabel) || 'Login')));
17
+ } }, translate('theme.profile.login', (userProfile === null || userProfile === void 0 ? void 0 : userProfile.loginLabel) || 'Login')));
21
18
  }
22
19
  exports.LoginLink = LoginLink;
23
20
  const StyledLink = styled_components_1.default.a.attrs(() => ({
@@ -16,12 +16,9 @@ function MobileUserProfile() {
16
16
  const { userProfile } = (0, useThemeConfig_1.useThemeConfig)();
17
17
  const { userData, handleLogout, loginUrl } = (0, useProfileProps_1.useProfileProps)();
18
18
  const { translate } = (0, hooks_1.useTranslate)();
19
- const translationKeys = {
20
- login: 'theme.profile.login',
21
- };
22
19
  if (!(userData === null || userData === void 0 ? void 0 : userData.isAuthenticated) && !loginUrl)
23
20
  return null;
24
- return (react_1.default.createElement(MobileProfileWrapper, { "data-component-name": "Navbar/MobileUserProfile" }, !(userData === null || userData === void 0 ? void 0 : userData.isAuthenticated) ? (react_1.default.createElement(LoginButton, { href: loginUrl, "data-cy": "login-btn", onClick: () => telemetry_1.telemetry.send('login_button_clicked', {}) }, translate(translationKeys.login, (userProfile === null || userProfile === void 0 ? void 0 : userProfile.loginLabel) || 'Login'))) : (react_1.default.createElement(react_1.default.Fragment, null,
21
+ return (react_1.default.createElement(MobileProfileWrapper, { "data-component-name": "Navbar/MobileUserProfile" }, !(userData === null || userData === void 0 ? void 0 : userData.isAuthenticated) ? (react_1.default.createElement(LoginButton, { href: loginUrl, "data-cy": "login-btn", onClick: () => telemetry_1.telemetry.send('login_button_clicked', {}) }, translate('theme.profile.login', (userProfile === null || userProfile === void 0 ? void 0 : userProfile.loginLabel) || 'Login'))) : (react_1.default.createElement(react_1.default.Fragment, null,
25
22
  react_1.default.createElement(UserProfileData_1.UserProfileData, { userData: userData }),
26
23
  react_1.default.createElement(LogoutButton, { onClick: () => {
27
24
  handleLogout();
@@ -40,14 +40,10 @@ const icons_1 = require("../../icons");
40
40
  function UserProfile({ userData, handleLogout, hasDeveloperOnboarding = false, }) {
41
41
  const { userProfile } = (0, useThemeConfig_1.useThemeConfig)();
42
42
  const { translate } = (0, hooks_1.useTranslate)();
43
- const translationKeys = {
44
- myApps: 'theme.profile.myApps',
45
- logout: 'theme.profile.logout',
46
- };
47
43
  const [isOpened, setIsOpened] = (0, react_1.useState)(false);
48
44
  const menuItems = [react_1.default.createElement(UserProfileData_1.UserProfileData, { key: userData.name, userData: userData })];
49
45
  if (hasDeveloperOnboarding) {
50
- menuItems.push(react_1.default.createElement(Link_1.Link, { to: "/apps", "data-translation-key": translationKeys.myApps }, translate(translationKeys.myApps, 'My Apps')));
46
+ menuItems.push(react_1.default.createElement(Link_1.Link, { to: "/apps", "data-translation-key": "theme.profile.myApps" }, translate('theme.profile.myApps', 'My Apps')));
51
47
  }
52
48
  if (userProfile && userProfile.menu) {
53
49
  for (const item of userProfile.menu) {
@@ -57,9 +53,9 @@ function UserProfile({ userData, handleLogout, hasDeveloperOnboarding = false, }
57
53
  menuItems.push(react_1.default.createElement(Logout, { onClick: () => {
58
54
  handleLogout();
59
55
  telemetry_1.telemetry.send('logout_menu_item_clicked', {});
60
- }, "data-translation-key": translationKeys.logout, role: "link" },
56
+ }, "data-translation-key": "theme.profile.logout", role: "link" },
61
57
  react_1.default.createElement(icons_1.LogoutIcon, null),
62
- translate(translationKeys.logout, (userProfile === null || userProfile === void 0 ? void 0 : userProfile.logoutLabel) || 'Log out')));
58
+ translate('theme.profile.logout', (userProfile === null || userProfile === void 0 ? void 0 : userProfile.logoutLabel) || 'Log out')));
63
59
  return (react_1.default.createElement(ProfileDropdown, { items: menuItems, alignment: "end" },
64
60
  react_1.default.createElement(Profile_1.Profile, { name: userData.name, imageUrl: userData.picture, onClick: userData.logoutDisabled ? undefined : () => setIsOpened(!isOpened) })));
65
61
  }
@@ -33,11 +33,8 @@ const hooks_1 = require("../../mocks/hooks");
33
33
  const Button_1 = require("../../components/Button");
34
34
  function CancelSearch({ onClick, className, }) {
35
35
  const { translate } = (0, hooks_1.useTranslate)();
36
- const translationKeys = {
37
- cancel: 'theme.search.cancel',
38
- };
39
36
  return (React.createElement(Wrapper, { "data-component-name": "Search/CancelSearch", onClick: onClick, className: className },
40
- React.createElement(Button_1.Button, { "data-translation-keys": translationKeys.cancel, fullWidth: true, variant: "outlined" }, translate(translationKeys.cancel, 'Cancel'))));
37
+ React.createElement(Button_1.Button, { "data-translation-keys": "theme.search.cancel", fullWidth: true, variant: "outlined" }, translate('theme.search.cancel', 'Cancel'))));
41
38
  }
42
39
  exports.CancelSearch = CancelSearch;
43
40
  const Wrapper = styled_components_1.default.div `
@@ -36,9 +36,6 @@ const hooks_1 = require("../../mocks/hooks");
36
36
  function RecentSearches({ onSelect, className, }) {
37
37
  const { items, removeSearchHistoryItem } = (0, search_1.useRecentSearches)();
38
38
  const { translate } = (0, hooks_1.useTranslate)();
39
- const translationKeys = {
40
- title: 'theme.search.recent',
41
- };
42
39
  if (!items || !items.length)
43
40
  return null;
44
41
  const removeItem = (e, item) => {
@@ -51,7 +48,7 @@ function RecentSearches({ onSelect, className, }) {
51
48
  }
52
49
  };
53
50
  return (React.createElement(Wrapper, { "data-component-name": "Search/RecentSearches", className: className },
54
- React.createElement(Title, { "data-translation-key": translationKeys.title }, translate(translationKeys.title, 'Recent searches')),
51
+ React.createElement(Title, { "data-translation-key": "theme.search.recent" }, translate('theme.search.recent', 'Recent searches')),
55
52
  React.createElement(RecentItems, null, items.map((item) => (React.createElement(Item, { key: item, onClick: () => onSelect(item), onKeyDown: (e) => handleKeyDown(e, item), tabIndex: 0, role: "link" },
56
53
  React.createElement(Group, null,
57
54
  React.createElement(ClockBackwardsIcon, null),
@@ -56,12 +56,6 @@ const SearchDialog = ({ onClose, className, }) => {
56
56
  onClose();
57
57
  }
58
58
  };
59
- const translationKeys = {
60
- noResults: 'theme.search.noResults',
61
- navigate: 'theme.search.keys.navigate',
62
- select: 'theme.search.keys.select',
63
- exit: 'theme.search.keys.exit',
64
- };
65
59
  const mapItem = (item) => {
66
60
  var _a;
67
61
  return (react_1.default.createElement(SearchItem_1.SearchItem, { key: item.id, item: item, product: !product ? (_a = item.product) === null || _a === void 0 ? void 0 : _a.name : undefined }));
@@ -71,14 +65,14 @@ const SearchDialog = ({ onClose, className, }) => {
71
65
  react_1.default.createElement(TopContainer, null,
72
66
  react_1.default.createElement(InputWrapper_1.InputWrapper, { value: query, change: setQuery, placeholder: translate('theme.search.label', 'Search docs...'), isLoading: isLoading }),
73
67
  product && react_1.default.createElement(ProductTag_1.ProductTag, { label: product.name, onRemove: () => setProduct(undefined) })),
74
- react_1.default.createElement(Results, null, items !== null ? (items.length ? (items.map(mapItem)) : (react_1.default.createElement(Message, { "data-translation-key": translationKeys.noResults }, translate(translationKeys.noResults, 'No results')))) : (react_1.default.createElement(react_1.default.Fragment, null,
68
+ react_1.default.createElement(Results, null, items !== null ? (items.length ? (items.map(mapItem)) : (react_1.default.createElement(Message, { "data-translation-key": "theme.search.noResults" }, translate('theme.search.noResults', 'No results')))) : (react_1.default.createElement(react_1.default.Fragment, null,
75
69
  react_1.default.createElement(RecentSearches_1.RecentSearches, { onSelect: setQuery }),
76
70
  react_1.default.createElement(SuggestedPages_1.SuggestedPages, null)))),
77
71
  react_1.default.createElement(BottomContainer, null,
78
72
  react_1.default.createElement(Shortcuts, null,
79
- react_1.default.createElement(Shortcut_1.Shortcut, { "data-translation-key": translationKeys.navigate, combination: "Tab", text: translate(translationKeys.navigate, 'to navigate') }),
80
- react_1.default.createElement(Shortcut_1.Shortcut, { "data-translation-key": translationKeys.select, combination: "\u21B5", text: translate(translationKeys.select, 'to select') }),
81
- react_1.default.createElement(Shortcut_1.Shortcut, { "data-translation-key": translationKeys.exit, combination: "Esc", text: translate(translationKeys.exit, 'to exit') })),
73
+ react_1.default.createElement(Shortcut_1.Shortcut, { "data-translation-key": "theme.search.keys.navigate", combination: "Tab", text: translate('theme.search.keys.navigate', 'to navigate') }),
74
+ react_1.default.createElement(Shortcut_1.Shortcut, { "data-translation-key": "theme.search.keys.select", combination: "\u21B5", text: translate('theme.search.keys.select', 'to select') }),
75
+ react_1.default.createElement(Shortcut_1.Shortcut, { "data-translation-key": "theme.search.keys.exit", combination: "Esc", text: translate('theme.search.keys.exit', 'to exit') })),
82
76
  react_1.default.createElement(CancelSearch_1.CancelSearch, { onClick: onClose })))));
83
77
  };
84
78
  exports.SearchDialog = SearchDialog;
@@ -34,13 +34,10 @@ function SearchTrigger({ onClick, className, }) {
34
34
  var _a, _b;
35
35
  const themeSettings = (0, hooks_1.useThemeConfig)();
36
36
  const { translate } = (0, hooks_2.useTranslate)();
37
- const translationKeys = {
38
- label: 'theme.search.navbar.label',
39
- };
40
37
  const keyShortcuts = (_b = (_a = themeSettings === null || themeSettings === void 0 ? void 0 : themeSettings.search) === null || _a === void 0 ? void 0 : _a.shortcuts) !== null && _b !== void 0 ? _b : ['/'];
41
38
  return (React.createElement(Wrapper, { "data-component-name": "Search/SearchTrigger", onClick: onClick, className: className },
42
39
  React.createElement(SearchIconSmall, null),
43
- React.createElement(Label, { "data-translation-key": translationKeys.label }, translate(translationKeys.label, 'Search')),
40
+ React.createElement(Label, { "data-translation-key": "theme.search.navbar.label" }, translate('theme.search.navbar.label', 'Search')),
44
41
  React.createElement(ShortcutKey_1.ShortcutKey, { keyShortcuts: keyShortcuts })));
45
42
  }
46
43
  exports.SearchTrigger = SearchTrigger;