@redocly/theme 0.43.0 → 0.44.0

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 (83) hide show
  1. package/lib/components/Buttons/CopyButton.js +2 -2
  2. package/lib/components/Buttons/EditPageButton.js +1 -1
  3. package/lib/components/Catalog/CatalogActions.js +1 -1
  4. package/lib/components/Feedback/Comment.js +6 -6
  5. package/lib/components/Feedback/Mood.js +7 -7
  6. package/lib/components/Feedback/Rating.js +4 -4
  7. package/lib/components/Feedback/Reasons.js +3 -3
  8. package/lib/components/Feedback/Scale.js +10 -10
  9. package/lib/components/Feedback/Sentiment.js +5 -5
  10. package/lib/components/Filter/FilterContent.js +2 -2
  11. package/lib/components/Filter/FilterInput.js +1 -1
  12. package/lib/components/Filter/FilterPopover.js +2 -2
  13. package/lib/components/Filter/FilterSelect.js +1 -1
  14. package/lib/components/Footer/FooterCopyright.js +2 -2
  15. package/lib/components/LastUpdated/LastUpdated.js +1 -1
  16. package/lib/components/PageNavigation/NextButton.js +1 -1
  17. package/lib/components/PageNavigation/PreviousButton.js +1 -1
  18. package/lib/components/Product/ProductPicker.js +1 -1
  19. package/lib/components/Search/FilterFields/SearchFilterFieldSelect.js +1 -1
  20. package/lib/components/Search/SearchDialog.js +10 -10
  21. package/lib/components/Search/SearchFilter.js +2 -2
  22. package/lib/components/Search/SearchFilterField.js +1 -1
  23. package/lib/components/Search/SearchRecent.js +1 -1
  24. package/lib/components/Search/SearchSuggestedPages.js +1 -1
  25. package/lib/components/Search/SearchTrigger.js +2 -2
  26. package/lib/components/SidebarActions/ChangeViewButton.js +1 -1
  27. package/lib/components/SidebarActions/SidebarActions.js +2 -2
  28. package/lib/components/TableOfContent/TableOfContent.js +1 -1
  29. package/lib/components/UserMenu/LoginButton.js +1 -1
  30. package/lib/components/UserMenu/LogoutMenuItem.js +1 -1
  31. package/lib/components/UserMenu/UserMenu.js +1 -1
  32. package/lib/components/VersionPicker/VersionPicker.js +2 -2
  33. package/lib/core/hooks/feedback/use-report-dialog.js +3 -3
  34. package/lib/core/hooks/menu/use-mobile-menu-items.js +1 -1
  35. package/lib/core/hooks/menu/use-mobile-menu-levels.js +2 -2
  36. package/lib/core/types/l10n.d.ts +1 -1
  37. package/lib/core/utils/menu.js +1 -1
  38. package/lib/layouts/Forbidden.js +2 -2
  39. package/lib/layouts/NotFound.js +3 -3
  40. package/lib/layouts/OIDCForbidden.js +1 -1
  41. package/lib/markdoc/tags/partial.js +1 -1
  42. package/package.json +7 -7
  43. package/src/components/Buttons/CopyButton.tsx +2 -2
  44. package/src/components/Buttons/EditPageButton.tsx +2 -2
  45. package/src/components/Catalog/CatalogActions.tsx +2 -2
  46. package/src/components/Feedback/Comment.tsx +8 -8
  47. package/src/components/Feedback/Mood.tsx +8 -8
  48. package/src/components/Feedback/Rating.tsx +5 -5
  49. package/src/components/Feedback/Reasons.tsx +4 -4
  50. package/src/components/Feedback/Scale.tsx +13 -13
  51. package/src/components/Feedback/Sentiment.tsx +6 -6
  52. package/src/components/Filter/FilterContent.tsx +3 -3
  53. package/src/components/Filter/FilterInput.tsx +1 -1
  54. package/src/components/Filter/FilterPopover.tsx +3 -3
  55. package/src/components/Filter/FilterSelect.tsx +2 -2
  56. package/src/components/Footer/FooterCopyright.tsx +3 -3
  57. package/src/components/LastUpdated/LastUpdated.tsx +1 -2
  58. package/src/components/PageNavigation/NextButton.tsx +1 -1
  59. package/src/components/PageNavigation/PreviousButton.tsx +1 -1
  60. package/src/components/Product/ProductPicker.tsx +2 -2
  61. package/src/components/Search/FilterFields/SearchFilterFieldSelect.tsx +1 -1
  62. package/src/components/Search/SearchDialog.tsx +17 -20
  63. package/src/components/Search/SearchFilter.tsx +4 -4
  64. package/src/components/Search/SearchFilterField.tsx +2 -2
  65. package/src/components/Search/SearchRecent.tsx +2 -2
  66. package/src/components/Search/SearchSuggestedPages.tsx +2 -2
  67. package/src/components/Search/SearchTrigger.tsx +2 -2
  68. package/src/components/SidebarActions/ChangeViewButton.tsx +1 -1
  69. package/src/components/SidebarActions/SidebarActions.tsx +2 -2
  70. package/src/components/TableOfContent/TableOfContent.tsx +2 -2
  71. package/src/components/UserMenu/LoginButton.tsx +2 -2
  72. package/src/components/UserMenu/LogoutMenuItem.tsx +2 -2
  73. package/src/components/UserMenu/UserMenu.tsx +2 -2
  74. package/src/components/VersionPicker/VersionPicker.tsx +3 -3
  75. package/src/core/hooks/feedback/use-report-dialog.ts +3 -3
  76. package/src/core/hooks/menu/use-mobile-menu-items.ts +1 -1
  77. package/src/core/hooks/menu/use-mobile-menu-levels.ts +2 -2
  78. package/src/core/types/l10n.ts +67 -67
  79. package/src/core/utils/menu.ts +1 -1
  80. package/src/layouts/Forbidden.tsx +4 -9
  81. package/src/layouts/NotFound.tsx +6 -6
  82. package/src/layouts/OIDCForbidden.tsx +2 -2
  83. package/src/markdoc/tags/partial.ts +1 -1
@@ -110,9 +110,9 @@ export function SearchDialog({ onClose, className }: SearchDialogProps): JSX.Ele
110
110
  <SearchInput
111
111
  value={query}
112
112
  onChange={setQuery}
113
- placeholder={translate('theme.search.label', 'Search docs...')}
113
+ placeholder={translate('search.label', 'Search docs...')}
114
114
  isLoading={isSearchLoading}
115
- data-translation-key="theme.search.label"
115
+ data-translation-key="search.label"
116
116
  />
117
117
  {advancedSearch && (
118
118
  <SearchFilterToggleButton icon={<SettingsIcon />} onClick={onFilterToggle} />
@@ -135,12 +135,12 @@ export function SearchDialog({ onClose, className }: SearchDialogProps): JSX.Ele
135
135
  {items[key]?.map(mapItem)}
136
136
  {showLoadMore(key, items[key]?.length || 0) && (
137
137
  <SearchGroupFooter
138
- data-translation-key="theme.search.showMore"
138
+ data-translation-key="search.showMore"
139
139
  onClick={() =>
140
140
  setLoadMore({ groupKey: key, offset: items[key]?.length || 0 })
141
141
  }
142
142
  >
143
- {translate('theme.search.showMore', 'Show more')}
143
+ {translate('search.showMore', 'Show more')}
144
144
  </SearchGroupFooter>
145
145
  )}
146
146
  </Fragment>
@@ -149,15 +149,12 @@ export function SearchDialog({ onClose, className }: SearchDialogProps): JSX.Ele
149
149
  ) : isSearchLoading ? (
150
150
  <SearchMessage>
151
151
  <SpinnerLoader size="26px" color="var(--search-input-icon-color)" />
152
- {translate('theme.search.loading', 'Loading...')}
152
+ {translate('search.loading', 'Loading...')}
153
153
  </SearchMessage>
154
154
  ) : (
155
- <SearchMessage data-translation-key="theme.search.noResults">
156
- <b>{translate('theme.search.noResults.title', 'No results')}</b>
157
- {translate(
158
- 'theme.search.noResults.description',
159
- 'Prease, try with a different query.',
160
- )}
155
+ <SearchMessage data-translation-key="search.noResults">
156
+ <b>{translate('search.noResults.title', 'No results')}</b>
157
+ {translate('search.noResults.description', 'Prease, try with a different query.')}
161
158
  </SearchMessage>
162
159
  )
163
160
  ) : (
@@ -183,34 +180,34 @@ export function SearchDialog({ onClose, className }: SearchDialogProps): JSX.Ele
183
180
  <SearchDialogFooter>
184
181
  <SearchShortcuts>
185
182
  <SearchShortcut
186
- data-translation-key="theme.search.keys.navigate"
183
+ data-translation-key="search.keys.navigate"
187
184
  combination="Tab"
188
- text={translate('theme.search.keys.navigate', 'to navigate')}
185
+ text={translate('search.keys.navigate', 'to navigate')}
189
186
  />
190
187
  <SearchShortcut
191
- data-translation-key="theme.search.keys.select"
188
+ data-translation-key="search.keys.select"
192
189
  combination="⏎"
193
- text={translate('theme.search.keys.select', 'to select')}
190
+ text={translate('search.keys.select', 'to select')}
194
191
  />
195
192
  <SearchShortcut
196
- data-translation-key="theme.search.keys.exit"
193
+ data-translation-key="search.keys.exit"
197
194
  combination="Esc"
198
- text={translate('theme.search.keys.exit', 'to exit')}
195
+ text={translate('search.keys.exit', 'to exit')}
199
196
  />
200
197
  </SearchShortcuts>
201
198
  {isSearchLoading && (
202
199
  <SearchLoading>
203
200
  <SpinnerLoader size="16px" color="var(--search-input-icon-color)" />
204
- {translate('theme.search.loading', 'Loading...')}
201
+ {translate('search.loading', 'Loading...')}
205
202
  </SearchLoading>
206
203
  )}
207
204
  <SearchCancelButton
208
- data-translation-key="theme.search.cancel"
205
+ data-translation-key="search.cancel"
209
206
  variant="secondary"
210
207
  size="small"
211
208
  onClick={onClose}
212
209
  >
213
- {translate('theme.search.cancel', 'Cancel')}
210
+ {translate('search.cancel', 'Cancel')}
214
211
  </SearchCancelButton>
215
212
  </SearchDialogFooter>
216
213
  </SearchDialogWrapper>
@@ -32,16 +32,16 @@ export function SearchFilter({
32
32
  return (
33
33
  <SearchFilterWrapper data-component-name="Search/SearchFilter" className={className}>
34
34
  <SearchFilterHeader>
35
- <span data-translation-key="theme.search.filter.title">
36
- {translate('theme.search.filter.title', 'Advanced filter')}
35
+ <span data-translation-key="search.filter.title">
36
+ {translate('search.filter.title', 'Advanced filter')}
37
37
  </span>
38
38
  <Button
39
- data-translation-key="theme.search.filter.reset"
39
+ data-translation-key="search.filter.reset"
40
40
  onClick={onFilterReset}
41
41
  variant="ghost"
42
42
  icon={<CleanIcon />}
43
43
  >
44
- {translate('theme.search.filter.reset', 'Reset filters')}
44
+ {translate('search.filter.reset', 'Reset filters')}
45
45
  </Button>
46
46
  </SearchFilterHeader>
47
47
 
@@ -44,13 +44,13 @@ export function SearchFilterField({
44
44
  {facet.name}
45
45
  {selectedValues.length > 0 && (
46
46
  <Button
47
- data-translation-key="theme.search.filter.field.reset"
47
+ data-translation-key="search.filter.field.reset"
48
48
  icon={<ResetIcon />}
49
49
  variant="ghost"
50
50
  size="small"
51
51
  onClick={onReset}
52
52
  >
53
- {translate('theme.search.filter.field.reset', 'Reset')}
53
+ {translate('search.filter.field.reset', 'Reset')}
54
54
  </Button>
55
55
  )}
56
56
  </FilterFieldLabel>
@@ -34,8 +34,8 @@ export function SearchRecent({ onSelect, className }: SearchRecentProps): JSX.El
34
34
 
35
35
  return (
36
36
  <SearchRecentWrapper data-component-name="Search/SearchRecent" className={className}>
37
- <SearchRecentTitle data-translation-key="theme.search.recent">
38
- {translate('theme.search.recent', 'Recent searches')}
37
+ <SearchRecentTitle data-translation-key="search.recent">
38
+ {translate('search.recent', 'Recent searches')}
39
39
  </SearchRecentTitle>
40
40
  <SearchRecentItems>
41
41
  {items.map((item) => (
@@ -17,8 +17,8 @@ export function SearchSuggestedPages({ className }: SearchSuggestedPagesProps):
17
17
 
18
18
  return (
19
19
  <SearchSuggestedWrapper data-component-name="Search/SearchSuggestedPages" className={className}>
20
- <SearchSuggestedTitle data-translation-key="theme.search.suggested">
21
- {translate('theme.search.suggested', 'Suggested pages')}
20
+ <SearchSuggestedTitle data-translation-key="search.suggested">
21
+ {translate('search.suggested', 'Suggested pages')}
22
22
  </SearchSuggestedTitle>
23
23
  <SearchSuggestedItems>
24
24
  {pages.map((page) =>
@@ -43,10 +43,10 @@ export function SearchTrigger({ onClick, className }: SearchTriggerProps): JSX.E
43
43
  />
44
44
  <SearchTriggerInput
45
45
  data-testid="search-trigger-input"
46
- data-translation-key="theme.search.navbar.label"
46
+ data-translation-key="search.navbar.label"
47
47
  >
48
48
  <SearchIcon />
49
- {translate('theme.search.navbar.label', 'Search')}
49
+ {translate('search.navbar.label', 'Search')}
50
50
  {mainShortcutKey && <span>{mainShortcutKey}</span>}
51
51
  </SearchTriggerInput>
52
52
  </SearchTriggerWrapper>
@@ -25,7 +25,7 @@ export const ChangeViewButton = ({
25
25
 
26
26
  return (
27
27
  <StyledChangeViewButton
28
- title={translate('theme.sidebar.actions.changeLayout', 'Change layout')}
28
+ title={translate('sidebar.actions.changeLayout', 'Change layout')}
29
29
  onClick={onClick}
30
30
  collapsedSidebar={collapsedSidebar}
31
31
  >
@@ -53,8 +53,8 @@ export const SidebarActions = ({
53
53
  }}
54
54
  title={
55
55
  collapsedSidebar
56
- ? translate('theme.sidebar.actions.show', 'Show sidebar')
57
- : translate('theme.sidebar.actions.hide', 'Hide sidebar')
56
+ ? translate('sidebar.actions.show', 'Show sidebar')
57
+ : translate('sidebar.actions.hide', 'Hide sidebar')
58
58
  }
59
59
  size="small"
60
60
  variant="outlined"
@@ -48,8 +48,8 @@ export function TableOfContent(props: TableOfContentProps): JSX.Element | null {
48
48
  <TableOfContentMenu data-component-name="TableOfContent/TableOfContent" className={className}>
49
49
  <TableOfContentItems ref={sidebar}>
50
50
  {displayedHeadings.length ? (
51
- <TableOfContentHeader data-translation-key="theme.toc.header">
52
- {translate('theme.toc.header', toc.header || 'On this page')}
51
+ <TableOfContentHeader data-translation-key="toc.header">
52
+ {translate('toc.header', toc.header || 'On this page')}
53
53
  </TableOfContentHeader>
54
54
  ) : null}
55
55
  {displayedHeadings.map((heading: MdHeading | null, idx: number) => {
@@ -16,7 +16,7 @@ export function LoginButton({ href, className }: LoginButtonProps): JSX.Element
16
16
  return (
17
17
  <div data-component-name="UserMenu/LoginButton" className={className}>
18
18
  <Button
19
- data-translation-key="theme.userMenu.login"
19
+ data-translation-key="userMenu.login"
20
20
  to={href}
21
21
  onClick={() => telemetry.send('login_button_clicked', {})}
22
22
  data-testid="login-btn"
@@ -24,7 +24,7 @@ export function LoginButton({ href, className }: LoginButtonProps): JSX.Element
24
24
  variant="primary"
25
25
  size="medium"
26
26
  >
27
- {translate('theme.userMenu.login', 'Login')}
27
+ {translate('userMenu.login', 'Login')}
28
28
  </Button>
29
29
  </div>
30
30
  );
@@ -27,11 +27,11 @@ export function LogoutMenuItem({ iconOnly, className }: LogoutMenuItemProps): JS
27
27
  dangerous
28
28
  data-component-name="UserMenu/LogoutMenuItem"
29
29
  onAction={handleClick}
30
- data-translation-key="theme.userMenu.logout"
30
+ data-translation-key="userMenu.logout"
31
31
  prefix={<LogoutIcon />}
32
32
  style={{ width: iconOnly ? 'fit-content' : '100%' }}
33
33
  >
34
- {iconOnly ? null : translate('theme.userMenu.logout', 'Log out')}
34
+ {iconOnly ? null : translate('userMenu.logout', 'Log out')}
35
35
  </DropdownMenuItem>
36
36
  );
37
37
  }
@@ -45,10 +45,10 @@ export function UserMenu({ className }: UserMenuProps) {
45
45
  <DropdownMenuItem
46
46
  key="my-apps"
47
47
  to="/apps"
48
- data-translation-key="theme.userMenu.devOnboardingLabel"
48
+ data-translation-key="userMenu.devOnboardingLabel"
49
49
  prefix={<GridIcon />}
50
50
  >
51
- {translate('theme.userMenu.devOnboardingLabel')}
51
+ {translate('userMenu.devOnboardingLabel')}
52
52
  </DropdownMenuItem>,
53
53
  ]
54
54
  : [];
@@ -36,11 +36,11 @@ export function VersionPicker(props: { versions?: Version[]; onChange: (v: Versi
36
36
 
37
37
  return (
38
38
  <VersionsPickerWrapper data-component-name="VersionPicker/VersionPicker">
39
- <VersionPickerLabel data-translation-key="theme.versionPicker.label">
40
- {translate('theme.versionPicker.label', 'Version:')}
39
+ <VersionPickerLabel data-translation-key="versionPicker.label">
40
+ {translate('versionPicker.label', 'Version:')}
41
41
  </VersionPickerLabel>
42
42
  <VersionPickerSelect
43
- placeholder={translate('theme.versionPicker.unversioned', 'All versions')}
43
+ placeholder={translate('versionPicker.unversioned', 'All versions')}
44
44
  disabled={!options.length}
45
45
  options={options}
46
46
  value={value}
@@ -36,13 +36,13 @@ export function useReportDialog(): Record<string, ReportComponentsProps> {
36
36
  };
37
37
  const reportButtonProps: ReportButtonProps = {
38
38
  onClick: showReportDialog,
39
- buttonText: buttonText || translate('theme.codeSnippet.report.buttonText', 'Report'),
40
- tooltip: tooltipText || translate('theme.codeSnippet.report.tooltipText', 'Report a problem'),
39
+ buttonText: buttonText || translate('codeSnippet.report.buttonText', 'Report'),
40
+ tooltip: tooltipText || translate('codeSnippet.report.tooltipText', 'Report a problem'),
41
41
  hide: report?.hide === true,
42
42
  };
43
43
  const reportDialogProps: Partial<ReportDialogProps> = {
44
44
  settings: {
45
- label: label || translate('theme.codeSnippet.report.label', 'What is wrong with this code?'),
45
+ label: label || translate('codeSnippet.report.label', 'What is wrong with this code?'),
46
46
  },
47
47
  onSubmit: hideReportDialog,
48
48
  onCancel: closeReportDialog,
@@ -76,7 +76,7 @@ export const useMobileMenuItems = (menuType: MobileMenuType) => {
76
76
  if (productMenuItems.length) {
77
77
  menuItems.push({
78
78
  type: 'separator',
79
- label: translate('theme.mobileMenu.products', 'Products'),
79
+ label: translate('mobileMenu.products', 'Products'),
80
80
  });
81
81
 
82
82
  menuItems.push(...productMenuItems);
@@ -24,7 +24,7 @@ export const useMobileMenuLevels = () => {
24
24
  const menuLevels = useMemo(() => {
25
25
  const menuLevels = [
26
26
  {
27
- label: translate('theme.mobileMenu.mainMenu', 'Main Menu'),
27
+ label: translate('mobileMenu.mainMenu', 'Main Menu'),
28
28
  type: MobileMenuType.MAIN_MENU,
29
29
  },
30
30
  ];
@@ -38,7 +38,7 @@ export const useMobileMenuLevels = () => {
38
38
 
39
39
  if (sidebarItems.length || activeVersion) {
40
40
  menuLevels.push({
41
- label: translate('theme.mobileMenu.previous', 'Previous'),
41
+ label: translate('mobileMenu.previous', 'Previous'),
42
42
  type: MobileMenuType.PAGE,
43
43
  });
44
44
  }
@@ -69,73 +69,73 @@ export type TranslationKey =
69
69
  | 'dev.app.overview.created'
70
70
  | 'dev.app.overview.visibilityToggle.hide'
71
71
  | 'dev.app.overview.visibilityToggle.show'
72
- | 'theme.search.loading'
73
- | 'theme.search.noResults.title'
74
- | 'theme.search.noResults.description'
75
- | 'theme.search.keys.navigate'
76
- | 'theme.search.keys.select'
77
- | 'theme.search.keys.exit'
78
- | 'theme.search.label'
79
- | 'theme.search.cancel'
80
- | 'theme.search.recent'
81
- | 'theme.search.navbar.label'
82
- | 'theme.search.suggested'
83
- | 'theme.search.showMore'
84
- | 'theme.search.filter.title'
85
- | 'theme.search.filter.reset'
86
- | 'theme.search.filter.field.reset'
87
- | 'theme.toc.header'
88
- | 'theme.footer.copyrightText'
89
- | 'theme.page.homeButton'
90
- | 'theme.page.forbidden.title'
91
- | 'theme.page.notFound.title'
92
- | 'theme.page.notFound.description'
93
- | 'theme.page.lastUpdated.timeago'
94
- | 'theme.page.lastUpdated.on'
95
- | 'theme.catalog.filters.placeholder'
96
- | 'theme.catalog.filters.title'
97
- | 'theme.catalog.filters.clearAll'
98
- | 'theme.catalog.filters.select.addFilter'
99
- | 'theme.catalog.filters.select.all'
100
- | 'theme.catalog.filters.done'
101
- | 'theme.sidebar.menu.backLabel'
102
- | 'theme.sidebar.actions.show'
103
- | 'theme.sidebar.actions.hide'
104
- | 'theme.sidebar.actions.changeLayout'
105
- | 'theme.versionPicker.label'
106
- | 'theme.versionPicker.unversioned'
107
- | 'theme.codeSnippet.copy.buttonText'
108
- | 'theme.codeSnippet.copy.tooltipText'
109
- | 'theme.codeSnippet.copy.toasterText'
110
- | 'theme.markdown.editPage.text'
111
- | 'theme.feedback.settings.comment.submitText'
112
- | 'theme.feedback.settings.comment.label'
113
- | 'theme.feedback.settings.comment.send'
114
- | 'theme.feedback.settings.comment.cancel'
115
- | 'theme.feedback.settings.comment.satisfiedLabel'
116
- | 'theme.feedback.settings.comment.neutralLabel'
117
- | 'theme.feedback.settings.comment.dissatisfiedLabel'
118
- | 'theme.feedback.settings.submitText'
119
- | 'theme.feedback.settings.label'
120
- | 'theme.feedback.settings.reasons.label'
121
- | 'theme.feedback.settings.reasons.send'
122
- | 'theme.feedback.settings.comment.likeLabel'
123
- | 'theme.feedback.settings.comment.dislikeLabel'
124
- | 'theme.feedback.sentiment.thumbUp'
125
- | 'theme.feedback.sentiment.thumbDown'
126
- | 'theme.feedback.settings.leftScaleLabel'
127
- | 'theme.feedback.settings.rightScaleLabel'
128
- | 'theme.codeSnippet.report.buttonText'
129
- | 'theme.codeSnippet.report.tooltipText'
130
- | 'theme.codeSnippet.report.label'
131
- | 'theme.userMenu.login'
132
- | 'theme.userMenu.logout'
133
- | 'theme.userMenu.devOnboardingLabel'
134
- | 'theme.mobileMenu.mainMenu'
135
- | 'theme.mobileMenu.previous'
136
- | 'theme.mobileMenu.products'
137
- | 'theme.page.nextButton'
138
- | 'theme.page.previousButton'
72
+ | 'search.loading'
73
+ | 'search.noResults.title'
74
+ | 'search.noResults.description'
75
+ | 'search.keys.navigate'
76
+ | 'search.keys.select'
77
+ | 'search.keys.exit'
78
+ | 'search.label'
79
+ | 'search.cancel'
80
+ | 'search.recent'
81
+ | 'search.navbar.label'
82
+ | 'search.suggested'
83
+ | 'search.showMore'
84
+ | 'search.filter.title'
85
+ | 'search.filter.reset'
86
+ | 'search.filter.field.reset'
87
+ | 'toc.header'
88
+ | 'footer.copyrightText'
89
+ | 'page.homeButton'
90
+ | 'page.forbidden.title'
91
+ | 'page.notFound.title'
92
+ | 'page.notFound.description'
93
+ | 'page.lastUpdated.timeago'
94
+ | 'page.lastUpdated.on'
95
+ | 'catalog.filters.placeholder'
96
+ | 'catalog.filters.title'
97
+ | 'catalog.filters.clearAll'
98
+ | 'catalog.filters.select.addFilter'
99
+ | 'catalog.filters.select.all'
100
+ | 'catalog.filters.done'
101
+ | 'sidebar.menu.backLabel'
102
+ | 'sidebar.actions.show'
103
+ | 'sidebar.actions.hide'
104
+ | 'sidebar.actions.changeLayout'
105
+ | 'versionPicker.label'
106
+ | 'versionPicker.unversioned'
107
+ | 'codeSnippet.copy.buttonText'
108
+ | 'codeSnippet.copy.tooltipText'
109
+ | 'codeSnippet.copy.toasterText'
110
+ | 'markdown.editPage.text'
111
+ | 'feedback.settings.comment.submitText'
112
+ | 'feedback.settings.comment.label'
113
+ | 'feedback.settings.comment.send'
114
+ | 'feedback.settings.comment.cancel'
115
+ | 'feedback.settings.comment.satisfiedLabel'
116
+ | 'feedback.settings.comment.neutralLabel'
117
+ | 'feedback.settings.comment.dissatisfiedLabel'
118
+ | 'feedback.settings.submitText'
119
+ | 'feedback.settings.label'
120
+ | 'feedback.settings.reasons.label'
121
+ | 'feedback.settings.reasons.send'
122
+ | 'feedback.settings.comment.likeLabel'
123
+ | 'feedback.settings.comment.dislikeLabel'
124
+ | 'feedback.sentiment.thumbUp'
125
+ | 'feedback.sentiment.thumbDown'
126
+ | 'feedback.settings.leftScaleLabel'
127
+ | 'feedback.settings.rightScaleLabel'
128
+ | 'codeSnippet.report.buttonText'
129
+ | 'codeSnippet.report.tooltipText'
130
+ | 'codeSnippet.report.label'
131
+ | 'userMenu.login'
132
+ | 'userMenu.logout'
133
+ | 'userMenu.devOnboardingLabel'
134
+ | 'mobileMenu.mainMenu'
135
+ | 'mobileMenu.previous'
136
+ | 'mobileMenu.products'
137
+ | 'page.nextButton'
138
+ | 'page.previousButton'
139
139
  | 'openapi.download.description.title'
140
140
  | 'openapi.info.title'
141
141
  | 'openapi.info.contact.url'
@@ -7,7 +7,7 @@ import { type Locale, type TFunction, type ItemState } from '@redocly/theme/core
7
7
  import { MenuItemType } from '@redocly/theme/core/constants';
8
8
 
9
9
  const TRANSLATION_KEYS = {
10
- version: 'theme.mobileMenu.version',
10
+ version: 'mobileMenu.version',
11
11
  };
12
12
 
13
13
  export const mapNavbarItems = (
@@ -11,16 +11,11 @@ export function Forbidden(): JSX.Element {
11
11
  return (
12
12
  <Wrapper data-component-name="Pages/Forbidden">
13
13
  <Header>403</Header>
14
- <Description data-translation-key="theme.page.forbidden.title">
15
- {translate('theme.page.forbidden.title', 'Access forbidden')}
14
+ <Description data-translation-key="page.forbidden.title">
15
+ {translate('page.forbidden.title', 'Access forbidden')}
16
16
  </Description>
17
- <HomeButton
18
- variant="primary"
19
- size="large"
20
- to="/"
21
- data-translation-key="theme.page.homeButton"
22
- >
23
- {translate('theme.page.homeButton', 'Go home')}
17
+ <HomeButton variant="primary" size="large" to="/" data-translation-key="page.homeButton">
18
+ {translate('page.homeButton', 'Go home')}
24
19
  </HomeButton>
25
20
  </Wrapper>
26
21
  );
@@ -12,12 +12,12 @@ export function NotFound(): JSX.Element {
12
12
  return (
13
13
  <NotFoundWrapper data-component-name="layouts/NotFound">
14
14
  <StatusText>404</StatusText>
15
- <Title data-translation-key="theme.page.notFound.title">
16
- {translate('theme.page.notFound.title', 'Something went missing...')}
15
+ <Title data-translation-key="page.notFound.title">
16
+ {translate('page.notFound.title', 'Something went missing...')}
17
17
  </Title>
18
- <Description data-translation-key="theme.page.notFound.description">
18
+ <Description data-translation-key="page.notFound.description">
19
19
  {translate(
20
- 'theme.page.notFound.description',
20
+ 'page.notFound.description',
21
21
  "The page you were trying to reach doesn't exist or may have been moved. You can go back to the previous page, return to the homepage, or use the search bar to find what you're looking for.",
22
22
  )}
23
23
  </Description>
@@ -25,10 +25,10 @@ export function NotFound(): JSX.Element {
25
25
  variant="primary"
26
26
  size="large"
27
27
  to="/"
28
- data-translation-key="theme.page.homeButton"
28
+ data-translation-key="page.homeButton"
29
29
  icon={<ArrowLeftIcon />}
30
30
  >
31
- {translate('theme.page.homeButton', 'Go home')}
31
+ {translate('page.homeButton', 'Go home')}
32
32
  </Button>
33
33
  </NotFoundWrapper>
34
34
  );
@@ -35,8 +35,8 @@ export function OIDCForbidden(): JSX.Element {
35
35
  return (
36
36
  <Wrapper data-component-name="Pages/OIDCForbidden">
37
37
  <Header>403</Header>
38
- <Description data-translation-key="theme.page.forbidden.title">
39
- {translate('theme.page.forbidden.title', 'Access forbidden')}
38
+ <Description data-translation-key="page.forbidden.title">
39
+ {translate('page.forbidden.title', 'Access forbidden')}
40
40
  </Description>
41
41
  {errorDescription && <ErrorDescription>{renderText(errorDescription)}</ErrorDescription>}
42
42
  </Wrapper>
@@ -20,7 +20,7 @@ export const partial: MarkdocSchemaWrapper = {
20
20
  return [
21
21
  {
22
22
  id: '',
23
- message: `Could not resolve partial ${node.attributes.file}. theme.markdown.partialsFolders is empty.`,
23
+ message: `Could not resolve partial ${node.attributes.file}. markdown.partialsFolders is empty.`,
24
24
  level: 'error',
25
25
  },
26
26
  ];