@redocly/theme 0.25.1 → 0.25.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 (74) 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/Markdown/styledVariables.js +54 -0
  17. package/lib/components/Menu/hooks/use-mobile-menu-items.js +1 -4
  18. package/lib/components/Menu/hooks/use-mobile-menu-levels.js +2 -6
  19. package/lib/components/Menu/utils.d.ts +2 -1
  20. package/lib/components/Profile/LoginLink.js +2 -5
  21. package/lib/components/Profile/MobileUserProfile.js +1 -4
  22. package/lib/components/Profile/UserProfile.js +3 -7
  23. package/lib/components/Search/CancelSearch.js +1 -4
  24. package/lib/components/Search/RecentSearches.js +1 -4
  25. package/lib/components/Search/SearchDialog.js +4 -10
  26. package/lib/components/Search/SearchTrigger.js +1 -4
  27. package/lib/components/Search/SuggestedPages.js +1 -4
  28. package/lib/components/Sidebar/DrilldownMenu.js +2 -5
  29. package/lib/components/Sidebar/VersionPicker.js +2 -6
  30. package/lib/components/TableOfContent/TableOfContent.js +1 -4
  31. package/lib/components/Tabs/Tab.js +30 -6
  32. package/lib/components/Tabs/Tabs.js +22 -8
  33. package/lib/layouts/Forbidden.js +2 -6
  34. package/lib/layouts/NotFound.js +2 -6
  35. package/lib/layouts/OIDCForbidden.js +1 -4
  36. package/lib/mocks/hooks/index.d.ts +3 -2
  37. package/lib/mocks/hooks/index.js +3 -4
  38. package/package.json +2 -2
  39. package/src/components/Catalog/Catalog.tsx +1 -4
  40. package/src/components/CopyButton/CopyButton.tsx +3 -8
  41. package/src/components/EditPageButton/EditPageButton.tsx +2 -5
  42. package/src/components/Feedback/Comment.tsx +14 -14
  43. package/src/components/Feedback/Mood.tsx +14 -15
  44. package/src/components/Feedback/Rating.tsx +4 -8
  45. package/src/components/Feedback/Reasons.tsx +6 -11
  46. package/src/components/Feedback/Sentiment.tsx +6 -12
  47. package/src/components/Feedback/Thumbs.tsx +2 -9
  48. package/src/components/Feedback/useReportDialog.ts +3 -8
  49. package/src/components/Filter/Filter.tsx +3 -5
  50. package/src/components/Filter/FilterContent.tsx +2 -6
  51. package/src/components/Filter/FilterPopover.tsx +2 -6
  52. package/src/components/Footer/FooterCopyright.tsx +2 -5
  53. package/src/components/LastUpdated/LastUpdated.tsx +1 -1
  54. package/src/components/Markdown/styledVariables.ts +54 -0
  55. package/src/components/Menu/hooks/use-mobile-menu-items.ts +1 -5
  56. package/src/components/Menu/hooks/use-mobile-menu-levels.ts +2 -7
  57. package/src/components/Menu/utils.ts +2 -1
  58. package/src/components/Profile/LoginLink.tsx +2 -5
  59. package/src/components/Profile/MobileUserProfile.tsx +1 -4
  60. package/src/components/Profile/UserProfile.tsx +5 -8
  61. package/src/components/Search/CancelSearch.tsx +2 -5
  62. package/src/components/Search/RecentSearches.tsx +2 -5
  63. package/src/components/Search/SearchDialog.tsx +8 -15
  64. package/src/components/Search/SearchTrigger.tsx +3 -5
  65. package/src/components/Search/SuggestedPages.tsx +2 -6
  66. package/src/components/Sidebar/DrilldownMenu.tsx +2 -5
  67. package/src/components/Sidebar/VersionPicker.tsx +3 -7
  68. package/src/components/TableOfContent/TableOfContent.tsx +2 -5
  69. package/src/components/Tabs/Tab.tsx +30 -6
  70. package/src/components/Tabs/Tabs.tsx +22 -8
  71. package/src/layouts/Forbidden.tsx +4 -13
  72. package/src/layouts/NotFound.tsx +4 -13
  73. package/src/layouts/OIDCForbidden.tsx +2 -6
  74. 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,
@@ -211,10 +211,64 @@ exports.markdown = (0, styled_components_1.css) `
211
211
  /**
212
212
  * @tokens Markdown Tabs
213
213
  */
214
+
215
+ --md-tabs-container-text-color: inherit; // @presenter Color
216
+ --md-tabs-container-font-size: var(--font-size-base); // @presenter FontSize
217
+ --md-tabs-container-font-family: var(--font-size-base); // @presenter FontFamily
218
+ --md-tabs-container-font-style: normal; // @presenter FontStyle
219
+ --md-tabs-container-font-weight: var(--font-weight-regular); // @presenter FontWeight
220
+ --md-tabs-container-background-color: inherit; // @presenter Color
221
+ --md-tabs-container-margin: 10px 0; // @presenter Spacing
222
+ --md-tabs-container-padding: 0; // @presenter Spacing
223
+ --md-tabs-container-border: none; // @presenter Border
224
+
225
+ --md-tabs-border: solid var(--border-primary); // @presenter Color
226
+ --md-tabs-border-width: 0 0 1px 0; // @presenter Spacing
227
+ --md-tabs-padding: 0; // @presenter Spacing
228
+
229
+ --md-tabs-content-text-color: inherit; // @presenter Color
230
+ --md-tabs-content-font-size: var(--font-size-base); // @presenter FontSize
231
+ --md-tabs-content-font-family: var(--font-size-base); // @presenter FontFamily
232
+ --md-tabs-content-font-style: normal; // @presenter FontStyle
233
+ --md-tabs-content-font-weight: var(--font-weight-regular); // @presenter FontWeight
234
+ --md-tabs-content-background-color: inherit; // @presenter Color
235
+ --md-tabs-content-margin: 0; // @presenter Spacing
236
+ --md-tabs-content-padding: var(--spacing-base) 0; // @presenter Spacing
237
+ --md-tabs-content-border: none; // @presenter Border
214
238
 
215
239
  --md-tabs-tab-text-color: var(--text-secondary); // @presenter Color
240
+ --md-tabs-tab-font-size: var(--font-size-base); // @presenter FontSize
241
+ --md-tabs-tab-font-family: var(--font-size-base); // @presenter FontFamily
242
+ --md-tabs-tab-font-style: normal; // @presenter FontStyle
243
+ --md-tabs-tab-font-weight: var(--font-weight-regular); // @presenter FontWeight
244
+ --md-tabs-tab-background-color: none; // @presenter Color
245
+ --md-tabs-tab-margin: 0 0 -1px 0; // @presenter Spacing
246
+ --md-tabs-tab-padding: var(--spacing-sm) var(--spacing-base); // @presenter Spacing
247
+ --md-tabs-tab-border: none; // @presenter Color
248
+ --md-tabs-tab-border-width: 0; // @presenter Spacing
249
+ --md-tabs-tab-border-radius: 0; // @presenter BorderRadius
250
+
251
+ --md-tabs-active-tab-text-color: var(--text-primary); // @presenter Color
252
+ --md-tabs-active-tab-font-size: var(--md-tabs-tab-font-size); // @presenter FontSize
253
+ --md-tabs-active-tab-font-family: var(--md-tabs-tab-font-family); // @presenter FontFamily
254
+ --md-tabs-active-tab-font-style: normal; // @presenter FontStyle
255
+ --md-tabs-active-tab-font-weight: var(--md-tabs-tab-font-weight); // @presenter FontWeight
256
+ --md-tabs-active-tab-background-color: var(--background-color); // @presenter Color
257
+ --md-tabs-active-tab-padding: var(--md-tabs-tab-padding); // @presenter Spacing
216
258
  --md-tabs-active-tab-border-color: var(--border-primary); // @presenter Color
259
+ --md-tabs-active-tab-border-width: 0 0 1px 0; // @presenter Spacing
260
+ --md-tabs-active-tab-border-radius: var(--md-tabs-tab-border-radius); // @presenter BorderRadius
261
+
262
+ --md-tabs-hover-tab-text-color: var(--md-tabs-tab-text-color); // @presenter Color
263
+ --md-tabs-hover-tab-font-size: var(--md-tabs-tab-font-size); // @presenter FontSize
264
+ --md-tabs-hover-tab-font-family: var(--md-tabs-tab-font-family); // @presenter FontFamily
265
+ --md-tabs-hover-tab-font-style: normal; // @presenter FontStyle
266
+ --md-tabs-hover-tab-font-weight: var(--md-tabs-tab-font-weight); // @presenter FontWeight
267
+ --md-tabs-hover-tab-background-color: var(--md-tabs-tab-background-color); // @presenter Color
268
+ --md-tabs-hover-tab-padding: var(--md-tabs-tab-padding); // @presenter Spacing
217
269
  --md-tabs-hover-tab-border-color: var(--border-secondary); // @presenter Color
270
+ --md-tabs-hover-tab-border-width: 0 0 1px 0; // @presenter Spacing
271
+ --md-tabs-hover-tab-border-radius: var(--md-tabs-tab-border-radius); // @presenter BorderRadius
218
272
 
219
273
  // @tokens End
220
274
  `;
@@ -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 `