@drodil/backstage-plugin-qeta-react 3.2.1 → 3.4.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 (202) hide show
  1. package/dist/components/AnswerCard/AnswerCard.esm.js +6 -1
  2. package/dist/components/AnswerCard/AnswerCard.esm.js.map +1 -1
  3. package/dist/components/AnswerForm/AnswerForm.esm.js +20 -8
  4. package/dist/components/AnswerForm/AnswerForm.esm.js.map +1 -1
  5. package/dist/components/AnswersContainer/AnswerList.esm.js +16 -38
  6. package/dist/components/AnswersContainer/AnswerList.esm.js.map +1 -1
  7. package/dist/components/AnswersContainer/AnswerListItem.esm.js +6 -1
  8. package/dist/components/AnswersContainer/AnswerListItem.esm.js.map +1 -1
  9. package/dist/components/AnswersContainer/AnswersContainer.esm.js +5 -1
  10. package/dist/components/AnswersContainer/AnswersContainer.esm.js.map +1 -1
  11. package/dist/components/ArticleContent/ArticleButtons.esm.js +6 -1
  12. package/dist/components/ArticleContent/ArticleButtons.esm.js.map +1 -1
  13. package/dist/components/ArticleContent/ArticleContent.esm.js +7 -1
  14. package/dist/components/ArticleContent/ArticleContent.esm.js.map +1 -1
  15. package/dist/components/AuthorBox/AuthorBox.esm.js +7 -1
  16. package/dist/components/AuthorBox/AuthorBox.esm.js.map +1 -1
  17. package/dist/components/Buttons/AddToCollectionButton.esm.js +4 -1
  18. package/dist/components/Buttons/AddToCollectionButton.esm.js.map +1 -1
  19. package/dist/components/Buttons/AskQuestionButton.esm.js +5 -1
  20. package/dist/components/Buttons/AskQuestionButton.esm.js.map +1 -1
  21. package/dist/components/Buttons/BackToArticlesButton.esm.js +5 -1
  22. package/dist/components/Buttons/BackToArticlesButton.esm.js.map +1 -1
  23. package/dist/components/Buttons/BackToCollectionsButton.esm.js +5 -1
  24. package/dist/components/Buttons/BackToCollectionsButton.esm.js.map +1 -1
  25. package/dist/components/Buttons/BackToQuestionsButton.esm.js +5 -1
  26. package/dist/components/Buttons/BackToQuestionsButton.esm.js.map +1 -1
  27. package/dist/components/Buttons/CollectionFollowButton.esm.js +40 -0
  28. package/dist/components/Buttons/CollectionFollowButton.esm.js.map +1 -0
  29. package/dist/components/Buttons/CreateCollectionButton.esm.js +5 -1
  30. package/dist/components/Buttons/CreateCollectionButton.esm.js.map +1 -1
  31. package/dist/components/Buttons/EntityFollowButton.esm.js +7 -1
  32. package/dist/components/Buttons/EntityFollowButton.esm.js.map +1 -1
  33. package/dist/components/Buttons/FavoriteButton.esm.js +4 -1
  34. package/dist/components/Buttons/FavoriteButton.esm.js.map +1 -1
  35. package/dist/components/Buttons/LinkButton.esm.js +6 -1
  36. package/dist/components/Buttons/LinkButton.esm.js.map +1 -1
  37. package/dist/components/Buttons/TagFollowButton.esm.js +7 -1
  38. package/dist/components/Buttons/TagFollowButton.esm.js.map +1 -1
  39. package/dist/components/Buttons/UserFollowButton.esm.js +40 -0
  40. package/dist/components/Buttons/UserFollowButton.esm.js.map +1 -0
  41. package/dist/components/Buttons/VoteButtons.esm.js +1 -1
  42. package/dist/components/Buttons/VoteButtons.esm.js.map +1 -1
  43. package/dist/components/Buttons/WriteArticleButton.esm.js +5 -1
  44. package/dist/components/Buttons/WriteArticleButton.esm.js.map +1 -1
  45. package/dist/components/CollectionCard/CollectionCard.esm.js +7 -3
  46. package/dist/components/CollectionCard/CollectionCard.esm.js.map +1 -1
  47. package/dist/components/CollectionForm/CollectionForm.esm.js +20 -14
  48. package/dist/components/CollectionForm/CollectionForm.esm.js.map +1 -1
  49. package/dist/components/CollectionsGrid/CollectionsGrid.esm.js +57 -14
  50. package/dist/components/CollectionsGrid/CollectionsGrid.esm.js.map +1 -1
  51. package/dist/components/CollectionsGrid/CollectionsGridContent.esm.js +13 -27
  52. package/dist/components/CollectionsGrid/CollectionsGridContent.esm.js.map +1 -1
  53. package/dist/components/CollectionsGrid/CollectionsGridItem.esm.js +28 -19
  54. package/dist/components/CollectionsGrid/CollectionsGridItem.esm.js.map +1 -1
  55. package/dist/components/CommentSection/CommentList.esm.js +4 -1
  56. package/dist/components/CommentSection/CommentList.esm.js.map +1 -1
  57. package/dist/components/CommentSection/CommentSection.esm.js +4 -1
  58. package/dist/components/CommentSection/CommentSection.esm.js.map +1 -1
  59. package/dist/components/DeleteModal/DeleteModal.esm.js +5 -1
  60. package/dist/components/DeleteModal/DeleteModal.esm.js.map +1 -1
  61. package/dist/components/EntitiesGrid/EntitiesGrid.esm.js +61 -22
  62. package/dist/components/EntitiesGrid/EntitiesGrid.esm.js.map +1 -1
  63. package/dist/components/EntitiesGrid/EntitiesGridContent.esm.js +31 -0
  64. package/dist/components/EntitiesGrid/EntitiesGridContent.esm.js.map +1 -0
  65. package/dist/components/EntitiesGrid/EntitiesGridItem.esm.js +9 -4
  66. package/dist/components/EntitiesGrid/EntitiesGridItem.esm.js.map +1 -1
  67. package/dist/components/FilterPanel/DateRangeFilter.esm.js +6 -1
  68. package/dist/components/FilterPanel/DateRangeFilter.esm.js.map +1 -1
  69. package/dist/components/FilterPanel/FilterPanel.esm.js +9 -5
  70. package/dist/components/FilterPanel/FilterPanel.esm.js.map +1 -1
  71. package/dist/components/FollowedLists/FollowedCollectionsList.esm.js +49 -0
  72. package/dist/components/FollowedLists/FollowedCollectionsList.esm.js.map +1 -0
  73. package/dist/components/FollowedLists/FollowedEntitiesList.esm.js +7 -1
  74. package/dist/components/FollowedLists/FollowedEntitiesList.esm.js.map +1 -1
  75. package/dist/components/FollowedLists/FollowedTagsList.esm.js +7 -1
  76. package/dist/components/FollowedLists/FollowedTagsList.esm.js.map +1 -1
  77. package/dist/components/HeaderImageInput/HeaderImageInput.esm.js +9 -3
  78. package/dist/components/HeaderImageInput/HeaderImageInput.esm.js.map +1 -1
  79. package/dist/components/HomePageCards/ImpactCard.esm.js +6 -1
  80. package/dist/components/HomePageCards/ImpactCard.esm.js.map +1 -1
  81. package/dist/components/HomePageCards/PostsCard.esm.js +8 -3
  82. package/dist/components/HomePageCards/PostsCard.esm.js.map +1 -1
  83. package/dist/components/LeftMenu/LeftMenu.esm.js +11 -3
  84. package/dist/components/LeftMenu/LeftMenu.esm.js.map +1 -1
  85. package/dist/components/Links/Links.esm.js +5 -1
  86. package/dist/components/Links/Links.esm.js.map +1 -1
  87. package/dist/components/MarkdownEditor/MarkdownEditor.esm.js +8 -2
  88. package/dist/components/MarkdownEditor/MarkdownEditor.esm.js.map +1 -1
  89. package/dist/components/MarkdownRenderer/MarkdownRenderer.esm.js +1 -1
  90. package/dist/components/MarkdownRenderer/MarkdownRenderer.esm.js.map +1 -1
  91. package/dist/components/PostAnonymouslyCheckbox/PostAnonymouslyCheckbox.esm.js +6 -1
  92. package/dist/components/PostAnonymouslyCheckbox/PostAnonymouslyCheckbox.esm.js.map +1 -1
  93. package/dist/components/PostForm/EntitiesInput.esm.js +5 -1
  94. package/dist/components/PostForm/EntitiesInput.esm.js.map +1 -1
  95. package/dist/components/PostForm/PostForm.esm.js +56 -17
  96. package/dist/components/PostForm/PostForm.esm.js.map +1 -1
  97. package/dist/components/PostForm/TagInput.esm.js +5 -2
  98. package/dist/components/PostForm/TagInput.esm.js.map +1 -1
  99. package/dist/components/PostHighlightList/PostHighlightList.esm.js +5 -1
  100. package/dist/components/PostHighlightList/PostHighlightList.esm.js.map +1 -1
  101. package/dist/components/PostsContainer/NoPostsCard.esm.js +6 -1
  102. package/dist/components/PostsContainer/NoPostsCard.esm.js.map +1 -1
  103. package/dist/components/PostsContainer/PostList.esm.js +16 -38
  104. package/dist/components/PostsContainer/PostList.esm.js.map +1 -1
  105. package/dist/components/PostsContainer/PostListItem.esm.js +6 -1
  106. package/dist/components/PostsContainer/PostListItem.esm.js.map +1 -1
  107. package/dist/components/PostsContainer/PostsContainer.esm.js +8 -2
  108. package/dist/components/PostsContainer/PostsContainer.esm.js.map +1 -1
  109. package/dist/components/PostsGrid/PostsGrid.esm.js +13 -3
  110. package/dist/components/PostsGrid/PostsGrid.esm.js.map +1 -1
  111. package/dist/components/PostsGrid/PostsGridContent.esm.js +23 -12
  112. package/dist/components/PostsGrid/PostsGridContent.esm.js.map +1 -1
  113. package/dist/components/PostsGrid/PostsGridItem.esm.js +6 -1
  114. package/dist/components/PostsGrid/PostsGridItem.esm.js.map +1 -1
  115. package/dist/components/QetaPagination/QetaPagination.esm.js +55 -0
  116. package/dist/components/QetaPagination/QetaPagination.esm.js.map +1 -0
  117. package/dist/components/QuestionCard/QuestionCard.esm.js +12 -4
  118. package/dist/components/QuestionCard/QuestionCard.esm.js.map +1 -1
  119. package/dist/components/QuestionsTable/QuestionsTable.esm.js +6 -1
  120. package/dist/components/QuestionsTable/QuestionsTable.esm.js.map +1 -1
  121. package/dist/components/SelectTemplateList/SelectTemplateList.esm.js +48 -0
  122. package/dist/components/SelectTemplateList/SelectTemplateList.esm.js.map +1 -0
  123. package/dist/components/StatsChart/StatsChart.esm.js +37 -13
  124. package/dist/components/StatsChart/StatsChart.esm.js.map +1 -1
  125. package/dist/components/StatsChart/util.esm.js +9 -0
  126. package/dist/components/StatsChart/util.esm.js.map +1 -0
  127. package/dist/components/SummaryStatsGrid/SummaryStatsGrid.esm.js +25 -1
  128. package/dist/components/SummaryStatsGrid/SummaryStatsGrid.esm.js.map +1 -1
  129. package/dist/components/TagsAndEntities/CollectionChip.esm.js +85 -0
  130. package/dist/components/TagsAndEntities/CollectionChip.esm.js.map +1 -0
  131. package/dist/components/TagsAndEntities/EntityChip.esm.js +5 -1
  132. package/dist/components/TagsAndEntities/EntityChip.esm.js.map +1 -1
  133. package/dist/components/TagsAndEntities/TagChip.esm.js +5 -1
  134. package/dist/components/TagsAndEntities/TagChip.esm.js.map +1 -1
  135. package/dist/components/TagsAndEntities/TagsAndEntities.esm.js +3 -0
  136. package/dist/components/TagsAndEntities/TagsAndEntities.esm.js.map +1 -1
  137. package/dist/components/TagsGrid/EditTagModal.esm.js +4 -1
  138. package/dist/components/TagsGrid/EditTagModal.esm.js.map +1 -1
  139. package/dist/components/TagsGrid/TagGridItem.esm.js +9 -4
  140. package/dist/components/TagsGrid/TagGridItem.esm.js.map +1 -1
  141. package/dist/components/TagsGrid/TagsGrid.esm.js +64 -22
  142. package/dist/components/TagsGrid/TagsGrid.esm.js.map +1 -1
  143. package/dist/components/TagsGrid/TagsGridContent.esm.js +31 -0
  144. package/dist/components/TagsGrid/TagsGridContent.esm.js.map +1 -0
  145. package/dist/components/TemplateList/TemplateForm.esm.js +207 -0
  146. package/dist/components/TemplateList/TemplateForm.esm.js.map +1 -0
  147. package/dist/components/TemplateList/TemplateList.esm.js +105 -0
  148. package/dist/components/TemplateList/TemplateList.esm.js.map +1 -0
  149. package/dist/components/TopRankingUsersCard/TopRankingUsersCard.esm.js +6 -1
  150. package/dist/components/TopRankingUsersCard/TopRankingUsersCard.esm.js.map +1 -1
  151. package/dist/components/UsersGrid/UsersGrid.esm.js +49 -19
  152. package/dist/components/UsersGrid/UsersGrid.esm.js.map +1 -1
  153. package/dist/components/UsersGrid/UsersGridContent.esm.js +31 -0
  154. package/dist/components/UsersGrid/UsersGridContent.esm.js.map +1 -0
  155. package/dist/components/UsersGrid/UsersGridItem.esm.js +31 -3
  156. package/dist/components/UsersGrid/UsersGridItem.esm.js.map +1 -1
  157. package/dist/hooks/useBasePath.esm.js +12 -0
  158. package/dist/hooks/useBasePath.esm.js.map +1 -0
  159. package/dist/hooks/useBaseUrl.esm.js +13 -0
  160. package/dist/hooks/useBaseUrl.esm.js.map +1 -0
  161. package/dist/hooks/useCollectionsFollow.esm.js +59 -0
  162. package/dist/hooks/useCollectionsFollow.esm.js.map +1 -0
  163. package/dist/hooks/useEntityAuthor.esm.js +90 -0
  164. package/dist/hooks/useEntityAuthor.esm.js.map +1 -0
  165. package/dist/hooks/useEntityFollow.esm.js +49 -0
  166. package/dist/hooks/useEntityFollow.esm.js.map +1 -0
  167. package/dist/hooks/useEntityQueryParameter.esm.js +14 -0
  168. package/dist/hooks/useEntityQueryParameter.esm.js.map +1 -0
  169. package/dist/hooks/useFormStyles.esm.js +26 -0
  170. package/dist/hooks/useFormStyles.esm.js.map +1 -0
  171. package/dist/hooks/useIdentityApi.esm.js +12 -0
  172. package/dist/hooks/useIdentityApi.esm.js.map +1 -0
  173. package/dist/hooks/useIsDarkTheme.esm.js +12 -0
  174. package/dist/hooks/useIsDarkTheme.esm.js.map +1 -0
  175. package/dist/hooks/useIsModerator.esm.js +23 -0
  176. package/dist/hooks/useIsModerator.esm.js.map +1 -0
  177. package/dist/hooks/usePaginatedPosts.esm.js +176 -0
  178. package/dist/hooks/usePaginatedPosts.esm.js.map +1 -0
  179. package/dist/hooks/useQetaApi.esm.js +13 -0
  180. package/dist/hooks/useQetaApi.esm.js.map +1 -0
  181. package/dist/hooks/useStyles.esm.js +141 -0
  182. package/dist/hooks/useStyles.esm.js.map +1 -0
  183. package/dist/hooks/useTagsFollow.esm.js +53 -0
  184. package/dist/hooks/useTagsFollow.esm.js.map +1 -0
  185. package/dist/hooks/useTranslation.esm.js +9 -0
  186. package/dist/hooks/useTranslation.esm.js.map +1 -0
  187. package/dist/hooks/useUserFollow.esm.js +53 -0
  188. package/dist/hooks/useUserFollow.esm.js.map +1 -0
  189. package/dist/hooks/useVoting.esm.js +110 -0
  190. package/dist/hooks/useVoting.esm.js.map +1 -0
  191. package/dist/index.d.ts +406 -303
  192. package/dist/index.esm.js +15 -2
  193. package/dist/index.esm.js.map +1 -1
  194. package/dist/routes.esm.js +6 -1
  195. package/dist/routes.esm.js.map +1 -1
  196. package/dist/translation.esm.js +68 -4
  197. package/dist/translation.esm.js.map +1 -1
  198. package/dist/utils/utils.esm.js +3 -2
  199. package/dist/utils/utils.esm.js.map +1 -1
  200. package/package.json +6 -3
  201. package/dist/utils/hooks.esm.js +0 -655
  202. package/dist/utils/hooks.esm.js.map +0 -1
package/dist/index.d.ts CHANGED
@@ -1,12 +1,12 @@
1
1
  import * as _backstage_core_plugin_api from '@backstage/core-plugin-api';
2
2
  import { IdentityApi } from '@backstage/core-plugin-api';
3
- import { QetaApi, PostType, PostResponse, PostsResponse, AnswersResponse, AnswerResponse, PostsQuery, CollectionResponse, Post, Answer, Comment, GlobalStat, UserStat, StatisticsResponse, Collection } from '@drodil/backstage-plugin-qeta-common';
3
+ import { QetaApi, PostType, PostResponse, Template, PostsResponse, AnswersResponse, AnswerResponse, Collection, PostsQuery, CollectionResponse, Post, Answer, Comment, Stat, StatisticsResponse, UserStat, GlobalStat, TemplatesResponse } from '@drodil/backstage-plugin-qeta-common';
4
4
  import React from 'react';
5
- import * as react_use_lib_useAsyncFn from 'react-use/lib/useAsyncFn';
6
- import * as _material_ui_styles from '@material-ui/styles';
7
- import * as _backstage_core_plugin_api_alpha from '@backstage/core-plugin-api/alpha';
8
5
  import { LinkProps } from '@backstage/core-components';
9
6
  import { SvgIconProps } from '@material-ui/core';
7
+ import * as _backstage_core_plugin_api_alpha from '@backstage/core-plugin-api/alpha';
8
+ import * as _material_ui_styles from '@material-ui/styles';
9
+ import * as react_use_lib_useAsyncFn from 'react-use/lib/useAsyncFn';
10
10
  import { Overrides } from '@material-ui/core/styles/overrides';
11
11
  import { StyleRules } from '@material-ui/core/styles/withStyles';
12
12
 
@@ -31,6 +31,7 @@ declare const tagsRouteRef: _backstage_core_plugin_api.SubRouteRef<undefined>;
31
31
  declare const tagRouteRef: _backstage_core_plugin_api.SubRouteRef<_backstage_core_plugin_api.PathParams<"/tags/:tag">>;
32
32
  declare const entitiesRouteRef: _backstage_core_plugin_api.SubRouteRef<undefined>;
33
33
  declare const entityRouteRef: _backstage_core_plugin_api.SubRouteRef<_backstage_core_plugin_api.PathParams<"/entities/:entityRef">>;
34
+ declare const moderatorRouteRef: _backstage_core_plugin_api.SubRouteRef<undefined>;
34
35
 
35
36
  declare const qetaApiRef: _backstage_core_plugin_api.ApiRef<QetaApi>;
36
37
 
@@ -41,6 +42,7 @@ type PostFormProps = {
41
42
  tags?: string[];
42
43
  onPost?: (question: PostResponse) => void;
43
44
  entityPage?: boolean;
45
+ template?: Template | null;
44
46
  };
45
47
  declare const PostForm: (props: PostFormProps) => React.JSX.Element;
46
48
 
@@ -68,278 +70,6 @@ interface FilterPanelProps {
68
70
  }
69
71
  declare const FilterPanel: (props: FilterPanelProps) => React.JSX.Element;
70
72
 
71
- declare const useTranslation: () => {
72
- t: _backstage_core_plugin_api_alpha.TranslationFunction<{
73
- readonly "favorite.remove": "Remove this post from favorites";
74
- readonly "favorite.add": "Mark this post as favorite";
75
- readonly "statistics.errorLoading": "Could not load statistics";
76
- readonly "statistics.notAvailable": "Statistics are unavailable";
77
- readonly "statistics.ranking": "Ranking Q&A 🏆";
78
- readonly "statistics.mostQuestions.title": "Most questions";
79
- readonly "statistics.mostQuestions.description": "People who have posted most questions";
80
- readonly "statistics.mostAnswers.title": "Most answers";
81
- readonly "statistics.mostAnswers.description": "People who have posted most answers";
82
- readonly "statistics.topVotedQuestions.title": "Top voted questions";
83
- readonly "statistics.topVotedQuestions.description": "People who have the highest rated questions";
84
- readonly "statistics.topVotedAnswers.title": "Top voted answers";
85
- readonly "statistics.topVotedAnswers.description": "People who have the highest rated answers";
86
- readonly "statistics.topVotedCorrectAnswers.title": "Top voted correct answers";
87
- readonly "statistics.topVotedCorrectAnswers.description": "People who have the highest rated correct answers";
88
- readonly "answer.questionTitle": "Q: {{question}}";
89
- readonly "answer.answeredTime": "answered";
90
- readonly "link.answer": "Copy link to this answer to clipboard";
91
- readonly "link.post": "Copy link to this post to clipboard";
92
- readonly "link.aria": "Copy link to clipboard";
93
- readonly pluginName: "Q&A";
94
- readonly "answerList.errorLoading": "Could not load answers";
95
- readonly "answerList.noAnswers": "No answers";
96
- readonly "answerList.limitSelect": "Answers per page";
97
- readonly "common.question": "question";
98
- readonly "common.article": "article";
99
- readonly "common.score": "{{score}} score";
100
- readonly "common.post": "post";
101
- readonly "common.comments": "Comments";
102
- readonly "common.anonymousAuthor": "Anonymous";
103
- readonly "common.answers_zero": "No answers";
104
- readonly "common.answers_one": "{{count}} answer";
105
- readonly "common.answers_other": "{{count}} answers";
106
- readonly "common.views_zero": "Viewed {{count}} times";
107
- readonly "common.views_one": "Viewed {{count}} time";
108
- readonly "common.views_other": "Viewed {{count}} times";
109
- readonly "common.viewsShort_zero": "0 views";
110
- readonly "common.viewsShort_one": "{{count}} view";
111
- readonly "common.viewsShort_other": "{{count}} views";
112
- readonly "common.votes_zero": "0 votes";
113
- readonly "common.votes_one": "{{count}} vote";
114
- readonly "common.votes_other": "{{count}} votes";
115
- readonly "common.posts_zero": "No {{itemType}}s";
116
- readonly "common.posts_one": "{{count}} {{itemType}}";
117
- readonly "common.posts_other": "{{count}} {{itemType}}s";
118
- readonly "common.collections_zero": "No collections";
119
- readonly "common.collections_one": "{{count}} collection";
120
- readonly "common.collections_other": "{{count}} collections";
121
- readonly "common.followers_zero": "No followers";
122
- readonly "common.followers_one": "{{count}} follower";
123
- readonly "common.followers_other": "{{count}} followers";
124
- readonly "answerContainer.title.answersBy": "Answers by";
125
- readonly "answerContainer.title.answersAbout": "Answers about";
126
- readonly "answerContainer.title.answersTagged": "Answers tagged with {{tags}}";
127
- readonly "answerContainer.search.label": "Search for answers";
128
- readonly "answerContainer.search.placeholder": "Search...";
129
- readonly "anonymousCheckbox.tooltip": "By enabling this, other users won't be able to see you as an author";
130
- readonly "anonymousCheckbox.answerAnonymously": "Answer anonymously";
131
- readonly "anonymousCheckbox.postAnonymously": "Post anonymously";
132
- readonly "fileInput.label": "Header image";
133
- readonly "fileInput.helperText": "URL of the header image to be used";
134
- readonly "fileInput.uploadHeaderImage": "Upload image";
135
- readonly "fileInput.preview": "Preview image";
136
- readonly "collectionForm.errorPosting": "Could not create collection";
137
- readonly "collectionForm.titleInput.label": "Title";
138
- readonly "collectionForm.titleInput.helperText": "Name of the colleciton";
139
- readonly "collectionForm.descriptionInput.placeholder": "Collection description, what does it contain?";
140
- readonly "collectionForm.submit.existingCollection": "Save";
141
- readonly "collectionForm.submit.newCollection": "Create";
142
- readonly "postForm.uploadHeaderImage": "Upload header image";
143
- readonly "postForm.errorPosting": "Could not post {{type}}";
144
- readonly "postForm.titleInput.label": "Title";
145
- readonly "postForm.titleInput.helperText": "Write good title for your {{type}} that people can understand";
146
- readonly "postForm.submit.existingPost": "Save";
147
- readonly "postForm.submit.newPost": "Post";
148
- readonly "postForm.contentInput.placeholder": "Your {{type}}";
149
- readonly "answerForm.errorPosting": "Could not post answer";
150
- readonly "answerForm.submit.existingAnswer": "Save";
151
- readonly "answerForm.submit.newAnswer": "Post";
152
- readonly "answerForm.contentInput.placeholder": "Your answer";
153
- readonly "entitiesInput.label": "Entities";
154
- readonly "entitiesInput.placeholder": "Type or select entities";
155
- readonly "entitiesInput.helperText": "Add up to {{max}} entities this question relates to";
156
- readonly "tagsInput.label": "Tags";
157
- readonly "tagsInput.placeholder": "Type or select tags";
158
- readonly "tagsInput.helperText": "Add up to {{max}} tags to categorize your question";
159
- readonly "askPage.title.existingQuestion": "Edit question";
160
- readonly "askPage.title.entityQuestion": "Ask a question about {{entity}}";
161
- readonly "askPage.title.newQuestion": "Ask a question";
162
- readonly "writePage.title.existingArticle": "Edit article";
163
- readonly "writePage.title.entityArticle": "Write an article about {{entity}}";
164
- readonly "writePage.title.newArticle": "New article";
165
- readonly "collectionCreatePage.title.existingCollection": "Edit collection";
166
- readonly "collectionCreatePage.title.newCollection": "New collection";
167
- readonly "askQuestionButton.title": "Ask a question";
168
- readonly "addToCollectionButton.title": "Collections";
169
- readonly "addToCollectionButton.manage": "Add or remove this post from collections";
170
- readonly "addToCollectionButton.close": "Close";
171
- readonly "writeArticleButton.title": "Write an article";
172
- readonly "createCollectionButton.title": "Create collection";
173
- readonly "backToQuestionsButton.title": "Back";
174
- readonly "backToCollectionsButton.title": "Back";
175
- readonly "commentList.deleteLink": "delete";
176
- readonly "commentSection.input.placeholder": "Your comment";
177
- readonly "commentSection.post": "Post";
178
- readonly "commentSection.addComment": "Add comment";
179
- readonly "editTagModal.title": "Edit tag {{tag}}";
180
- readonly "editTagModal.errorPosting": "Failed to edit";
181
- readonly "editTagModal.description": "Tag description";
182
- readonly "editTagModal.saveButton": "Save";
183
- readonly "editTagModal.cancelButton": "Cancel";
184
- readonly "deleteModal.title.question": "Are you sure you want to delete this post?";
185
- readonly "deleteModal.title.answer": "Are you sure you want to delete this answer?";
186
- readonly "deleteModal.title.collection": "Are you sure you want to delete this collection?";
187
- readonly "deleteModal.cancelButton": "Cancel";
188
- readonly "deleteModal.errorDeleting": "Failed to delete";
189
- readonly "deleteModal.deleteButton": "Delete";
190
- readonly "favoritePage.title": "Favorited posts";
191
- readonly "leftMenu.questions": "Questions";
192
- readonly "leftMenu.statistics": "Statistics";
193
- readonly "leftMenu.collections": "Collections";
194
- readonly "leftMenu.articles": "Articles";
195
- readonly "leftMenu.users": "Users";
196
- readonly "leftMenu.tags": "Tags";
197
- readonly "leftMenu.entities": "Entities";
198
- readonly "leftMenu.home": "Home";
199
- readonly "leftMenu.profile": "Profile";
200
- readonly "leftMenu.favoriteQuestions": "Favorites";
201
- readonly "leftMenu.content": "Content";
202
- readonly "leftMenu.community": "Community";
203
- readonly "homePage.title": "Home";
204
- readonly "impactCard.views": "views";
205
- readonly "impactCard.title": "Your impact";
206
- readonly "impactCard.contributions": "Your contributions helped {{lastWeek}} people this week";
207
- readonly "rightMenu.followedEntities": "Followed entities";
208
- readonly "rightMenu.followedTags": "Followed tags";
209
- readonly "highlights.loadError": "Failed to load questions";
210
- readonly "highlights.own.title": "Your latest questions";
211
- readonly "highlights.own.noQuestionsLabel": "No questions";
212
- readonly "highlights.hotQuestions.title": "Hot questions";
213
- readonly "highlights.hotQuestions.noQuestionsLabel": "No questions";
214
- readonly "highlights.hotArticles.title": "Hot articles";
215
- readonly "highlights.hotArticles.noArticlesLabel": "No articles";
216
- readonly "highlights.unanswered.title": "Unanswered questions";
217
- readonly "highlights.unanswered.noQuestionsLabel": "No unanswered questions";
218
- readonly "highlights.incorrect.title": "Questions without correct answer";
219
- readonly "highlights.incorrect.noQuestionsLabel": "No questions without correct answers";
220
- readonly "questionsPage.title": "All questions";
221
- readonly "articlesPage.title": "All articles";
222
- readonly "userLink.anonymous": "Anonymous";
223
- readonly "articlePage.errorLoading": "Could not load article";
224
- readonly "articlePage.deleteButton": "Delete this article";
225
- readonly "articlePage.editButton": "Edit this article";
226
- readonly "collectionsPage.title": "Collections";
227
- readonly "collectionPage.description": "Description";
228
- readonly "collectionPage.info": "You can add questions and articles to the collection from question and article pages";
229
- readonly "questionPage.errorLoading": "Could not load question";
230
- readonly "questionPage.editButton": "Edit";
231
- readonly "questionPage.sortAnswers.label": "Sort answers";
232
- readonly "questionPage.sortAnswers.default": "Default";
233
- readonly "questionPage.sortAnswers.createdDesc": "Created (desc)";
234
- readonly "questionPage.sortAnswers.createdAsc": "Created (asc)";
235
- readonly "questionPage.sortAnswers.scoreDesc": "Score (desc)";
236
- readonly "questionPage.sortAnswers.scoreAsc": "Score (asc)";
237
- readonly "questionPage.sortAnswers.commentsDesc": "Comments (desc)";
238
- readonly "questionPage.sortAnswers.commentsAsc": "Comments (asc)";
239
- readonly "questionPage.sortAnswers.authorDesc": "Author (desc)";
240
- readonly "questionPage.sortAnswers.authorAsc": "Author (asc)";
241
- readonly "questionPage.sortAnswers.updatedDesc": "Updated (desc)";
242
- readonly "questionPage.sortAnswers.updatedAsc": "Updated (asc)";
243
- readonly "authorBox.postedAtTime": "Posted";
244
- readonly "authorBox.updatedAtTime": "Updated";
245
- readonly "authorBox.updatedBy": "by";
246
- readonly "voteButtons.question.own": "You cannot vote your own post";
247
- readonly "voteButtons.question.good": "This post is good";
248
- readonly "voteButtons.question.bad": "This post is not good";
249
- readonly "voteButtons.answer.own": "You cannot vote your own answer";
250
- readonly "voteButtons.answer.markCorrect": "Mark this answer correct";
251
- readonly "voteButtons.answer.markIncorrect": "Mark this answer incorrect";
252
- readonly "voteButtons.answer.marked": "This answer has been marked as correct";
253
- readonly "voteButtons.answer.good": "This answer is good";
254
- readonly "voteButtons.answer.bad": "This answer is not good";
255
- readonly "datePicker.from": "From date";
256
- readonly "datePicker.to": "To date";
257
- readonly "datePicker.invalidRange": "Date range invalid, 'To date' should be greater than 'From date'";
258
- readonly "datePicker.range.label": "Date range";
259
- readonly "datePicker.range.default": "Select";
260
- readonly "datePicker.range.last7days": "Last 7 days";
261
- readonly "datePicker.range.last30days": "Last 30 days";
262
- readonly "datePicker.range.custom": "Custom";
263
- readonly "filterPanel.noAnswers.label": "No answers";
264
- readonly "filterPanel.filterButton": "Filter";
265
- readonly "filterPanel.noCorrectAnswers.label": "No correct answers";
266
- readonly "filterPanel.noVotes.label": "No votes";
267
- readonly "filterPanel.orderBy.views": "Views";
268
- readonly "filterPanel.orderBy.score": "Score";
269
- readonly "filterPanel.orderBy.created": "Created";
270
- readonly "filterPanel.orderBy.updated": "Updated";
271
- readonly "filterPanel.orderBy.answers": "Answers";
272
- readonly "filterPanel.orderBy.label": "Order by";
273
- readonly "filterPanel.order.desc": "Descending";
274
- readonly "filterPanel.order.asc": "Ascending";
275
- readonly "filterPanel.order.label": "Order";
276
- readonly "filterPanel.filters.tag.label": "Tag";
277
- readonly "filterPanel.filters.tag.placeholder": "Type or select tag";
278
- readonly "filterPanel.filters.label": "Filters";
279
- readonly "filterPanel.filters.entity.label": "Entity";
280
- readonly "filterPanel.filters.entity.placeholder": "Type or select entity";
281
- readonly "postsList.errorLoading": "Could not load {{itemType}}s";
282
- readonly "postsList.postsPerPage": "{{itemType}}s per page";
283
- readonly "postsContainer.title.favorite": "Your favorite {{itemType}}s";
284
- readonly "postsContainer.title.by": "{{itemType}}s by";
285
- readonly "postsContainer.title.about": "{{itemType}}s about";
286
- readonly "postsContainer.title.tagged": "{{itemType}} tagged with {{tags}}";
287
- readonly "postsContainer.search.label": "Search for {{itemType}}";
288
- readonly "postsContainer.search.placeholder": "Search...";
289
- readonly "postsContainer.noItems": "No {{itemType}}s";
290
- readonly "postsContainer.createButton": "Go ahead and create one!";
291
- readonly "questionsTable.errorLoading": "Could not load questions";
292
- readonly "questionsTable.latest": "Latest";
293
- readonly "questionsTable.mostViewed": "Most viewed";
294
- readonly "questionsTable.favorites": "Favorites";
295
- readonly "questionsTable.cells.updated": "Last updated";
296
- readonly "questionsTable.cells.author": "Author";
297
- readonly "questionsTable.cells.title": "Title";
298
- readonly "questionsTable.cells.asked": "Asked";
299
- readonly "tagPage.errorLoading": "Could not load tags";
300
- readonly "tagPage.search.label": "Search tag";
301
- readonly "tagPage.search.placeholder": "Search...";
302
- readonly "tagPage.defaultTitle": "Tags";
303
- readonly "tagPage.tags_zero": "No tags";
304
- readonly "tagPage.tags_one": "Showing {{count}} tag";
305
- readonly "tagPage.tags_other": "Showing {{count}} tags";
306
- readonly "entitiesPage.errorLoading": "Could not load entities";
307
- readonly "entitiesPage.search.label": "Search entity";
308
- readonly "entitiesPage.search.placeholder": "Search...";
309
- readonly "entitiesPage.defaultTitle": "Entities";
310
- readonly "entitiesPage.entities_zero": "No entities";
311
- readonly "entitiesPage.entities_one": "Showing {{count}} entity";
312
- readonly "entitiesPage.entities_other": "Showing {{count}} entities";
313
- readonly "usersPage.title": "Users";
314
- readonly "usersPage.errorLoading": "Could not load users";
315
- readonly "usersPage.search.label": "Search user";
316
- readonly "usersPage.search.placeholder": "Search...";
317
- readonly "usersPage.defaultTitle": "users";
318
- readonly "usersPage.users_zero": "No users";
319
- readonly "usersPage.users_one": "Showing {{count}} users";
320
- readonly "usersPage.users_other": "Showing {{count}} users";
321
- readonly "userPage.questions": "Questions";
322
- readonly "userPage.statistics": "Statistics";
323
- readonly "userPage.articles": "Articles";
324
- readonly "userPage.answers": "Answers";
325
- readonly "userPage.profileTab": "Profile";
326
- readonly "stats.questions": "Questions";
327
- readonly "stats.articles": "Articles";
328
- readonly "stats.views": "Views";
329
- readonly "stats.answers": "Answers";
330
- readonly "stats.comments": "Comments";
331
- readonly "stats.noStats": "No statistics available. Check back later!";
332
- readonly "stats.votes": "Votes";
333
- readonly "tagButton.edit": "Edit";
334
- readonly "tagButton.tooltip": "By following a tag, you will get notified when ever a new post with that tag is posted";
335
- readonly "tagButton.follow": "Follow";
336
- readonly "tagButton.unfollow": "Unfollow";
337
- readonly "entityButton.tooltip": "By following an entity, you will get notified when ever a new post for that entity is posted";
338
- readonly "entityButton.follow": "Follow";
339
- readonly "entityButton.unfollow": "Unfollow";
340
- }>;
341
- };
342
- type QetaFormClassKey = 'headerImage' | 'postButton' | 'postForm';
343
73
  type PaginatedPostsProps = {
344
74
  type?: PostType;
345
75
  tags?: string[];
@@ -355,29 +85,6 @@ type PaginatedPostsProps = {
355
85
  initialPageSize?: number;
356
86
  collectionId?: number;
357
87
  };
358
- declare function useQetaApi<T>(f: (api: QetaApi) => Promise<T>, deps?: any[]): {
359
- retry: () => void;
360
- loading: boolean;
361
- error?: undefined;
362
- value?: undefined;
363
- } | {
364
- retry: () => void;
365
- loading: false;
366
- error: Error;
367
- value?: undefined;
368
- } | {
369
- retry: () => void;
370
- loading: true;
371
- error?: Error | undefined;
372
- value?: T | undefined;
373
- } | {
374
- retry: () => void;
375
- loading: false;
376
- error?: undefined;
377
- value: T;
378
- };
379
- declare function useIdentityApi<T>(f: (api: IdentityApi) => Promise<T>, deps?: any[]): react_use_lib_useAsyncFn.AsyncState<T>;
380
- declare const useStyles: (props?: any) => _material_ui_styles.ClassNameMap<"deleteModal" | "filterPanel" | "questionDivider" | "marginLeft" | "marginRight" | "questionCard" | "questionCardVote" | "questionCardContent" | "questionListItem" | "questionListItemStats" | "questionListItemContent" | "questionListItemAuthor" | "questionListItemAvatar" | "answerCardContent" | "questionListPagination" | "questionsPerPageInput" | "questionsPerPage" | "postHighlightListContainer" | "postHighlightList" | "questionCardMetadata" | "questionCardActions" | "noPadding" | "highlight" | "@keyframes highlight" | "dateFilter">;
381
88
 
382
89
  declare const PostsContainer: (props: PaginatedPostsProps) => React.JSX.Element;
383
90
 
@@ -469,6 +176,14 @@ declare const AddToCollectionButton: (props: {
469
176
 
470
177
  declare const BackToCollectionsButton: () => React.JSX.Element;
471
178
 
179
+ declare const UserFollowButton: (props: {
180
+ userRef: string;
181
+ }) => React.JSX.Element | null;
182
+
183
+ declare const CollectionFollowButton: (props: {
184
+ collection: Collection;
185
+ }) => React.JSX.Element | null;
186
+
472
187
  declare const PostHighlightList: (props: {
473
188
  type: string;
474
189
  title: string;
@@ -514,6 +229,8 @@ declare const FollowedEntitiesList: () => React.JSX.Element | null;
514
229
 
515
230
  declare const FollowedTagsList: () => React.JSX.Element | null;
516
231
 
232
+ declare const FollowedCollectionsList: () => React.JSX.Element | null;
233
+
517
234
  declare const AnswerForm: (props: {
518
235
  post: PostResponse;
519
236
  onPost: (answer: AnswerResponse) => void;
@@ -546,11 +263,11 @@ declare const QuestionsTable: (props: {
546
263
 
547
264
  type QetaStatsChartClassKey = 'tooltipLabel' | 'tooltipWrapper' | 'xAxis' | 'lineChart' | 'barChart';
548
265
  declare const StatsChart: (props: {
549
- data: GlobalStat[] | UserStat[];
266
+ data: Stat[];
550
267
  }) => React.JSX.Element;
551
268
 
552
269
  declare const SummaryStatsGrid: (props: {
553
- stats: StatisticsResponse;
270
+ stats: StatisticsResponse<UserStat | GlobalStat>;
554
271
  }) => React.JSX.Element;
555
272
 
556
273
  declare const TopRankingUsers: (props: {
@@ -581,7 +298,10 @@ type CollectionFormProps = {
581
298
  };
582
299
  declare const CollectionForm: (props: CollectionFormProps) => React.JSX.Element;
583
300
 
584
- declare const CollectionsGrid: () => React.JSX.Element;
301
+ type CollectionsGridProps = {
302
+ owner?: string;
303
+ };
304
+ declare const CollectionsGrid: (props: CollectionsGridProps) => React.JSX.Element;
585
305
 
586
306
  declare const CollectionCard: (props: {
587
307
  collection: Collection;
@@ -597,6 +317,387 @@ declare const LeftMenu: (props: {
597
317
 
598
318
  declare const LeftMenuButton: () => React.JSX.Element;
599
319
 
320
+ declare const TemplateList: () => React.JSX.Element | null;
321
+
322
+ declare const SelectTemplateList: (props: {
323
+ templates: TemplatesResponse;
324
+ onTemplateSelect: (template: Template | null) => void;
325
+ }) => React.JSX.Element | null;
326
+
327
+ declare function useQetaApi<T>(f: (api: QetaApi) => Promise<T>, deps?: any[]): {
328
+ retry: () => void;
329
+ loading: boolean;
330
+ error?: undefined;
331
+ value?: undefined;
332
+ } | {
333
+ retry: () => void;
334
+ loading: false;
335
+ error: Error;
336
+ value?: undefined;
337
+ } | {
338
+ retry: () => void;
339
+ loading: true;
340
+ error?: Error | undefined;
341
+ value?: T | undefined;
342
+ } | {
343
+ retry: () => void;
344
+ loading: false;
345
+ error?: undefined;
346
+ value: T;
347
+ };
348
+
349
+ declare const useTagsFollow: () => {
350
+ tags: string[];
351
+ followTag: (tag: string) => void;
352
+ unfollowTag: (tag: string) => void;
353
+ isFollowingTag: (tag: string) => boolean;
354
+ loading: boolean;
355
+ };
356
+
357
+ declare const useTranslation: () => {
358
+ t: _backstage_core_plugin_api_alpha.TranslationFunction<{
359
+ readonly "favorite.add": "Mark this post as favorite";
360
+ readonly "favorite.remove": "Remove this post from favorites";
361
+ readonly "statistics.errorLoading": "Could not load statistics";
362
+ readonly "statistics.notAvailable": "Statistics are unavailable";
363
+ readonly "statistics.ranking": "Ranking Q&A 🏆";
364
+ readonly "statistics.mostQuestions.title": "Most questions";
365
+ readonly "statistics.mostQuestions.description": "People who have posted most questions";
366
+ readonly "statistics.mostAnswers.title": "Most answers";
367
+ readonly "statistics.mostAnswers.description": "People who have posted most answers";
368
+ readonly "statistics.topVotedQuestions.title": "Top voted questions";
369
+ readonly "statistics.topVotedQuestions.description": "People who have the highest rated questions";
370
+ readonly "statistics.topVotedAnswers.title": "Top voted answers";
371
+ readonly "statistics.topVotedAnswers.description": "People who have the highest rated answers";
372
+ readonly "statistics.topVotedCorrectAnswers.title": "Top voted correct answers";
373
+ readonly "statistics.topVotedCorrectAnswers.description": "People who have the highest rated correct answers";
374
+ readonly "answer.questionTitle": "Q: {{question}}";
375
+ readonly "answer.answeredTime": "answered";
376
+ readonly "link.answer": "Copy link to this answer to clipboard";
377
+ readonly "link.post": "Copy link to this post to clipboard";
378
+ readonly "link.aria": "Copy link to clipboard";
379
+ readonly pluginName: "Q&A";
380
+ readonly "answerList.errorLoading": "Could not load answers";
381
+ readonly "answerList.noAnswers": "No answers";
382
+ readonly "answerList.limitSelect": "Answers per page";
383
+ readonly "common.question": "question";
384
+ readonly "common.score": "{{score}} score";
385
+ readonly "common.article": "article";
386
+ readonly "common.post": "post";
387
+ readonly "common.comments": "Comments";
388
+ readonly "common.anonymousAuthor": "Anonymous";
389
+ readonly "common.answers_zero": "No answers";
390
+ readonly "common.answers_one": "{{count}} answer";
391
+ readonly "common.answers_other": "{{count}} answers";
392
+ readonly "common.views_zero": "Viewed {{count}} times";
393
+ readonly "common.views_one": "Viewed {{count}} time";
394
+ readonly "common.views_other": "Viewed {{count}} times";
395
+ readonly "common.viewsShort_zero": "0 views";
396
+ readonly "common.viewsShort_one": "{{count}} view";
397
+ readonly "common.viewsShort_other": "{{count}} views";
398
+ readonly "common.votes_zero": "0 votes";
399
+ readonly "common.votes_one": "{{count}} vote";
400
+ readonly "common.votes_other": "{{count}} votes";
401
+ readonly "common.posts_zero": "No {{itemType}}s";
402
+ readonly "common.posts_one": "{{count}} {{itemType}}";
403
+ readonly "common.posts_other": "{{count}} {{itemType}}s";
404
+ readonly "common.collections_zero": "No collections";
405
+ readonly "common.collections_one": "{{count}} collection";
406
+ readonly "common.collections_other": "{{count}} collections";
407
+ readonly "common.followers_zero": "No followers";
408
+ readonly "common.followers_one": "{{count}} follower";
409
+ readonly "common.followers_other": "{{count}} followers";
410
+ readonly "answerContainer.title.answersBy": "Answers by";
411
+ readonly "answerContainer.title.answersAbout": "Answers about";
412
+ readonly "answerContainer.title.answersTagged": "Answers tagged with {{tags}}";
413
+ readonly "answerContainer.search.label": "Search for answers";
414
+ readonly "answerContainer.search.placeholder": "Search...";
415
+ readonly "anonymousCheckbox.tooltip": "By enabling this, other users won't be able to see you as an author";
416
+ readonly "anonymousCheckbox.answerAnonymously": "Answer anonymously";
417
+ readonly "anonymousCheckbox.postAnonymously": "Post anonymously";
418
+ readonly "fileInput.label": "Header image";
419
+ readonly "fileInput.helperText": "URL of the header image to be used";
420
+ readonly "fileInput.uploadHeaderImage": "Upload image";
421
+ readonly "fileInput.preview": "Preview image";
422
+ readonly "collectionForm.errorPosting": "Could not create collection";
423
+ readonly "collectionForm.titleInput.label": "Title";
424
+ readonly "collectionForm.titleInput.helperText": "Name of the colleciton";
425
+ readonly "collectionForm.descriptionInput.placeholder": "Collection description, what does it contain?";
426
+ readonly "collectionForm.submit.existingCollection": "Save";
427
+ readonly "collectionForm.submit.newCollection": "Create";
428
+ readonly "postForm.uploadHeaderImage": "Upload header image";
429
+ readonly "postForm.errorPosting": "Could not post {{type}}";
430
+ readonly "postForm.titleInput.label": "Title";
431
+ readonly "postForm.titleInput.helperText": "Write good title for your {{type}} that people can understand";
432
+ readonly "postForm.submit.existingPost": "Save";
433
+ readonly "postForm.submit.newPost": "Post";
434
+ readonly "postForm.contentInput.placeholder": "Your {{type}}";
435
+ readonly "answerForm.errorPosting": "Could not post answer";
436
+ readonly "answerForm.submit.existingAnswer": "Save";
437
+ readonly "answerForm.submit.newAnswer": "Post";
438
+ readonly "answerForm.contentInput.placeholder": "Your answer";
439
+ readonly "entitiesInput.label": "Entities";
440
+ readonly "entitiesInput.placeholder": "Type or select entities";
441
+ readonly "entitiesInput.helperText": "Add up to {{max}} entities this question relates to";
442
+ readonly "tagsInput.label": "Tags";
443
+ readonly "tagsInput.placeholder": "Type or select tags";
444
+ readonly "tagsInput.helperText": "Add up to {{max}} tags to categorize your question";
445
+ readonly "askPage.title.existingQuestion": "Edit question";
446
+ readonly "askPage.title.entityQuestion": "Ask a question about {{entity}}";
447
+ readonly "askPage.title.newQuestion": "Ask a question";
448
+ readonly "writePage.title.existingArticle": "Edit article";
449
+ readonly "writePage.title.entityArticle": "Write an article about {{entity}}";
450
+ readonly "writePage.title.newArticle": "New article";
451
+ readonly "collectionCreatePage.title.existingCollection": "Edit collection";
452
+ readonly "collectionCreatePage.title.newCollection": "New collection";
453
+ readonly "askQuestionButton.title": "Ask a question";
454
+ readonly "addToCollectionButton.title": "Collections";
455
+ readonly "addToCollectionButton.manage": "Add or remove this post from collections";
456
+ readonly "addToCollectionButton.close": "Close";
457
+ readonly "writeArticleButton.title": "Write an article";
458
+ readonly "createCollectionButton.title": "Create collection";
459
+ readonly "backToQuestionsButton.title": "Back";
460
+ readonly "backToCollectionsButton.title": "Back";
461
+ readonly "commentList.deleteLink": "delete";
462
+ readonly "commentSection.input.placeholder": "Your comment";
463
+ readonly "commentSection.post": "Post";
464
+ readonly "commentSection.addComment": "Add comment";
465
+ readonly "editTagModal.title": "Edit tag {{tag}}";
466
+ readonly "editTagModal.errorPosting": "Failed to edit";
467
+ readonly "editTagModal.description": "Tag description";
468
+ readonly "editTagModal.saveButton": "Save";
469
+ readonly "editTagModal.cancelButton": "Cancel";
470
+ readonly "deleteModal.title.question": "Are you sure you want to delete this post?";
471
+ readonly "deleteModal.title.answer": "Are you sure you want to delete this answer?";
472
+ readonly "deleteModal.title.collection": "Are you sure you want to delete this collection?";
473
+ readonly "deleteModal.cancelButton": "Cancel";
474
+ readonly "deleteModal.errorDeleting": "Failed to delete";
475
+ readonly "deleteModal.deleteButton": "Delete";
476
+ readonly "favoritePage.title": "Favorited posts";
477
+ readonly "leftMenu.questions": "Questions";
478
+ readonly "leftMenu.statistics": "Statistics";
479
+ readonly "leftMenu.collections": "Collections";
480
+ readonly "leftMenu.articles": "Articles";
481
+ readonly "leftMenu.users": "Users";
482
+ readonly "leftMenu.tags": "Tags";
483
+ readonly "leftMenu.entities": "Entities";
484
+ readonly "leftMenu.moderate": "Moderate";
485
+ readonly "leftMenu.content": "Content";
486
+ readonly "leftMenu.manage": "Manage";
487
+ readonly "leftMenu.home": "Home";
488
+ readonly "leftMenu.profile": "Profile";
489
+ readonly "leftMenu.favoriteQuestions": "Favorites";
490
+ readonly "leftMenu.community": "Community";
491
+ readonly "moderatorPage.title": "Moderate";
492
+ readonly "moderatorPage.tools": "Tools";
493
+ readonly "moderatorPage.templates": "Templates";
494
+ readonly "moderatorPage.templatesInfo": "Templates can be used to prefill question content for the user";
495
+ readonly "homePage.title": "Home";
496
+ readonly "impactCard.views": "views";
497
+ readonly "impactCard.title": "Your impact";
498
+ readonly "impactCard.contributions": "Your contributions helped {{lastWeek}} people this week";
499
+ readonly "rightMenu.followedEntities": "Followed entities";
500
+ readonly "rightMenu.followedTags": "Followed tags";
501
+ readonly "rightMenu.followedCollections": "Followed collections";
502
+ readonly "highlights.loadError": "Failed to load questions";
503
+ readonly "highlights.own.title": "Your latest questions";
504
+ readonly "highlights.own.noQuestionsLabel": "No questions";
505
+ readonly "highlights.hotQuestions.title": "Hot questions";
506
+ readonly "highlights.hotQuestions.noQuestionsLabel": "No questions";
507
+ readonly "highlights.hotArticles.title": "Hot articles";
508
+ readonly "highlights.hotArticles.noArticlesLabel": "No articles";
509
+ readonly "highlights.unanswered.title": "Unanswered questions";
510
+ readonly "highlights.unanswered.noQuestionsLabel": "No unanswered questions";
511
+ readonly "highlights.incorrect.title": "Questions without correct answer";
512
+ readonly "highlights.incorrect.noQuestionsLabel": "No questions without correct answers";
513
+ readonly "questionsPage.title": "All questions";
514
+ readonly "articlesPage.title": "All articles";
515
+ readonly "userLink.anonymous": "Anonymous";
516
+ readonly "articlePage.errorLoading": "Could not load article";
517
+ readonly "articlePage.deleteButton": "Delete this article";
518
+ readonly "articlePage.editButton": "Edit this article";
519
+ readonly "templateList.errorLoading": "Could not load templates";
520
+ readonly "templateList.errorPosting": "Could not post template";
521
+ readonly "templateList.titleInput.label": "Title";
522
+ readonly "templateList.titleInput.helperText": "Name of the template";
523
+ readonly "templateList.descriptionInput.label": "Description";
524
+ readonly "templateList.descriptionInput.helperText": "Template description, what is it used for?";
525
+ readonly "templateList.submit.existingTemplate": "Save";
526
+ readonly "templateList.submit.newTemplate": "Create";
527
+ readonly "templateList.deleteButton": "Delete";
528
+ readonly "templateList.editButton": "Edit";
529
+ readonly "templateList.createButton": "Create";
530
+ readonly "templateList.noTemplates": "No templates";
531
+ readonly "templateList.noTemplatesDescription": "Create a new template to get started";
532
+ readonly "templateList.questionTitleInput.label": "Default question title";
533
+ readonly "templateList.questionTitleInput.helperText": "Question title to be used when creating a question with this template";
534
+ readonly "templateList.questionContentInput.placeholder": "Question content to be used when creating a question with this template";
535
+ readonly "templateSelectList.title": "Create a question from template";
536
+ readonly "templateSelectList.selectButton": "Choose";
537
+ readonly "templateSelectList.genericQuestion": "Generic question";
538
+ readonly "templateSelectList.genericQuestionDescription": "Create a generic question";
539
+ readonly "pagination.defaultTooltip": "Number of items";
540
+ readonly "collectionsPage.title": "Collections";
541
+ readonly "collectionsPage.search.label": "Search for collection";
542
+ readonly "collectionsPage.search.placeholder": "Search...";
543
+ readonly "collectionPage.description": "Description";
544
+ readonly "collectionPage.info": "You can add questions and articles to the collection from question and article pages";
545
+ readonly "questionPage.errorLoading": "Could not load question";
546
+ readonly "questionPage.editButton": "Edit";
547
+ readonly "questionPage.sortAnswers.default": "Default";
548
+ readonly "questionPage.sortAnswers.label": "Sort answers";
549
+ readonly "questionPage.sortAnswers.createdDesc": "Created (desc)";
550
+ readonly "questionPage.sortAnswers.createdAsc": "Created (asc)";
551
+ readonly "questionPage.sortAnswers.scoreDesc": "Score (desc)";
552
+ readonly "questionPage.sortAnswers.scoreAsc": "Score (asc)";
553
+ readonly "questionPage.sortAnswers.commentsDesc": "Comments (desc)";
554
+ readonly "questionPage.sortAnswers.commentsAsc": "Comments (asc)";
555
+ readonly "questionPage.sortAnswers.authorDesc": "Author (desc)";
556
+ readonly "questionPage.sortAnswers.authorAsc": "Author (asc)";
557
+ readonly "questionPage.sortAnswers.updatedDesc": "Updated (desc)";
558
+ readonly "questionPage.sortAnswers.updatedAsc": "Updated (asc)";
559
+ readonly "authorBox.postedAtTime": "Posted";
560
+ readonly "authorBox.updatedAtTime": "Updated";
561
+ readonly "authorBox.updatedBy": "by";
562
+ readonly "voteButtons.question.own": "You cannot vote your own post";
563
+ readonly "voteButtons.question.good": "This post is good";
564
+ readonly "voteButtons.question.bad": "This post is not good";
565
+ readonly "voteButtons.answer.own": "You cannot vote your own answer";
566
+ readonly "voteButtons.answer.markCorrect": "Mark this answer correct";
567
+ readonly "voteButtons.answer.markIncorrect": "Mark this answer incorrect";
568
+ readonly "voteButtons.answer.marked": "This answer has been marked as correct";
569
+ readonly "voteButtons.answer.good": "This answer is good";
570
+ readonly "voteButtons.answer.bad": "This answer is not good";
571
+ readonly "datePicker.range.default": "Select";
572
+ readonly "datePicker.range.label": "Date range";
573
+ readonly "datePicker.range.last7days": "Last 7 days";
574
+ readonly "datePicker.range.last30days": "Last 30 days";
575
+ readonly "datePicker.range.custom": "Custom";
576
+ readonly "datePicker.to": "To date";
577
+ readonly "datePicker.from": "From date";
578
+ readonly "datePicker.invalidRange": "Date range invalid, 'To date' should be greater than 'From date'";
579
+ readonly "filterPanel.order.desc": "Descending";
580
+ readonly "filterPanel.order.asc": "Ascending";
581
+ readonly "filterPanel.order.label": "Order";
582
+ readonly "filterPanel.noAnswers.label": "No answers";
583
+ readonly "filterPanel.filterButton": "Filter";
584
+ readonly "filterPanel.noCorrectAnswers.label": "No correct answers";
585
+ readonly "filterPanel.noVotes.label": "No votes";
586
+ readonly "filterPanel.orderBy.views": "Views";
587
+ readonly "filterPanel.orderBy.score": "Score";
588
+ readonly "filterPanel.orderBy.created": "Created";
589
+ readonly "filterPanel.orderBy.updated": "Updated";
590
+ readonly "filterPanel.orderBy.answers": "Answers";
591
+ readonly "filterPanel.orderBy.label": "Order by";
592
+ readonly "filterPanel.filters.tag.label": "Tag";
593
+ readonly "filterPanel.filters.tag.placeholder": "Type or select tag";
594
+ readonly "filterPanel.filters.entity.label": "Entity";
595
+ readonly "filterPanel.filters.entity.placeholder": "Type or select entity";
596
+ readonly "filterPanel.filters.label": "Filters";
597
+ readonly "postsList.errorLoading": "Could not load {{itemType}}s";
598
+ readonly "postsList.postsPerPage": "{{itemType}}s per page";
599
+ readonly "postsContainer.title.favorite": "Your favorite {{itemType}}s";
600
+ readonly "postsContainer.title.about": "{{itemType}}s about";
601
+ readonly "postsContainer.title.by": "{{itemType}}s by";
602
+ readonly "postsContainer.title.tagged": "{{itemType}} tagged with {{tags}}";
603
+ readonly "postsContainer.search.label": "Search for {{itemType}}";
604
+ readonly "postsContainer.search.placeholder": "Search...";
605
+ readonly "postsContainer.createButton": "Go ahead and create one!";
606
+ readonly "postsContainer.noItems": "No {{itemType}}s";
607
+ readonly "questionsTable.errorLoading": "Could not load questions";
608
+ readonly "questionsTable.latest": "Latest";
609
+ readonly "questionsTable.mostViewed": "Most viewed";
610
+ readonly "questionsTable.favorites": "Favorites";
611
+ readonly "questionsTable.cells.author": "Author";
612
+ readonly "questionsTable.cells.updated": "Last updated";
613
+ readonly "questionsTable.cells.title": "Title";
614
+ readonly "questionsTable.cells.asked": "Asked";
615
+ readonly "tagPage.search.label": "Search tag";
616
+ readonly "tagPage.search.placeholder": "Search...";
617
+ readonly "tagPage.errorLoading": "Could not load tags";
618
+ readonly "tagPage.defaultTitle": "Tags";
619
+ readonly "tagPage.tags_zero": "No tags";
620
+ readonly "tagPage.tags_one": "Showing {{count}} tag";
621
+ readonly "tagPage.tags_other": "Showing {{count}} tags";
622
+ readonly "entitiesPage.search.label": "Search entity";
623
+ readonly "entitiesPage.search.placeholder": "Search...";
624
+ readonly "entitiesPage.errorLoading": "Could not load entities";
625
+ readonly "entitiesPage.defaultTitle": "Entities";
626
+ readonly "entitiesPage.entities_zero": "No entities";
627
+ readonly "entitiesPage.entities_one": "Showing {{count}} entity";
628
+ readonly "entitiesPage.entities_other": "Showing {{count}} entities";
629
+ readonly "usersPage.title": "Users";
630
+ readonly "usersPage.search.label": "Search user";
631
+ readonly "usersPage.search.placeholder": "Search...";
632
+ readonly "usersPage.errorLoading": "Could not load users";
633
+ readonly "usersPage.defaultTitle": "users";
634
+ readonly "usersPage.users_zero": "No users";
635
+ readonly "usersPage.users_one": "Showing {{count}} users";
636
+ readonly "usersPage.users_other": "Showing {{count}} users";
637
+ readonly "userPage.questions": "Questions";
638
+ readonly "userPage.statistics": "Statistics";
639
+ readonly "userPage.collections": "Collections";
640
+ readonly "userPage.articles": "Articles";
641
+ readonly "userPage.answers": "Answers";
642
+ readonly "userPage.profileTab": "Profile";
643
+ readonly "stats.questions": "Questions";
644
+ readonly "stats.articles": "Articles";
645
+ readonly "stats.users": "Users";
646
+ readonly "stats.tags": "Tags";
647
+ readonly "stats.views": "Views";
648
+ readonly "stats.answers": "Answers";
649
+ readonly "stats.comments": "Comments";
650
+ readonly "stats.noStats": "No statistics available. Check back later!";
651
+ readonly "stats.votes": "Votes";
652
+ readonly "stats.followers": "Followers";
653
+ readonly "collectionButton.follow": "Follow";
654
+ readonly "collectionButton.tooltip": "By following a collection, you will get notified when ever a new post is added to the collection";
655
+ readonly "collectionButton.unfollow": "Unfollow";
656
+ readonly "tagButton.edit": "Edit";
657
+ readonly "tagButton.follow": "Follow";
658
+ readonly "tagButton.tooltip": "By following a tag, you will get notified when ever a new post with that tag is posted";
659
+ readonly "tagButton.unfollow": "Unfollow";
660
+ readonly "entityButton.follow": "Follow";
661
+ readonly "entityButton.tooltip": "By following an entity, you will get notified when ever a new post for that entity is posted";
662
+ readonly "entityButton.unfollow": "Unfollow";
663
+ readonly "userButton.follow": "Follow";
664
+ readonly "userButton.tooltip": "By following a user, you will get notified when ever a new post by that user is posted";
665
+ readonly "userButton.unfollow": "Unfollow";
666
+ }>;
667
+ };
668
+
669
+ declare const useEntityFollow: () => {
670
+ entities: string[];
671
+ followEntity: (entityRef: string) => void;
672
+ unfollowEntity: (entityRef: string) => void;
673
+ isFollowingEntity: (entityRef: string) => boolean;
674
+ loading: boolean;
675
+ };
676
+
677
+ declare const useUserFollow: () => {
678
+ users: string[];
679
+ followUser: (user: string) => void;
680
+ unfollowUser: (user: string) => void;
681
+ isFollowingUser: (user: string) => boolean;
682
+ loading: boolean;
683
+ };
684
+
685
+ declare const useStyles: (props?: any) => _material_ui_styles.ClassNameMap<"marginLeft" | "marginRight" | "deleteModal" | "filterPanel" | "questionDivider" | "questionCard" | "questionCardVote" | "questionCardContent" | "questionListItem" | "questionListItemStats" | "questionListItemContent" | "questionListItemAuthor" | "questionListItemAvatar" | "answerCardContent" | "questionListPagination" | "questionsPerPageInput" | "questionsPerPage" | "postHighlightListContainer" | "postHighlightList" | "questionCardMetadata" | "questionCardActions" | "noPadding" | "highlight" | "@keyframes highlight" | "dateFilter">;
686
+
687
+ declare function useIdentityApi<T>(f: (api: IdentityApi) => Promise<T>, deps?: any[]): react_use_lib_useAsyncFn.AsyncState<T>;
688
+
689
+ declare const useCollectionsFollow: () => {
690
+ collections: Collection[];
691
+ followCollection: (collection: Collection) => void;
692
+ unfollowCollection: (collection: Collection) => void;
693
+ isFollowingCollection: (collection: Collection) => boolean;
694
+ loading: boolean;
695
+ };
696
+
697
+ declare const useIsModerator: () => {
698
+ isModerator: boolean;
699
+ };
700
+
600
701
  type QetaVoteButtonsClassKey = 'qetaCorrectAnswerSelected' | 'qetaCorrectAnswer' | 'voteButtonContainer';
601
702
 
602
703
  type QetaArticleButtonsClassKey = 'container' | 'scoreText';
@@ -605,6 +706,8 @@ type QetaMarkdownEditorClassKey = 'markdownEditor' | 'markdownEditorError' | 'ma
605
706
 
606
707
  type QetaAuthorBoxClassKey = 'authorBox' | 'authorLink';
607
708
 
709
+ type QetaFormClassKey = 'headerImage' | 'postButton' | 'postForm';
710
+
608
711
  type QetaComponentsNameToClassKey = {
609
712
  QetaLeftMenu: QetaLeftMenuClassKey;
610
713
  QetaArticleButtons: QetaArticleButtonsClassKey;
@@ -620,4 +723,4 @@ type QetaOverrides = Overrides & {
620
723
  [Name in keyof QetaComponentsNameToClassKey]?: Partial<StyleRules<QetaComponentsNameToClassKey[Name]>>;
621
724
  };
622
725
 
623
- export { AddToCollectionButton, AnswerCard, AnswerForm, AnswerList, AnswerListItem, AnswersContainer, ArticleContent, AskQuestionButton, AuthorLink, BackToArticlesButton, BackToCollectionsButton, BackToQuestionsButton, CollectionCard, CollectionForm, CollectionsGrid, CreateCollectionButton, DeleteModal, EntitiesGrid, EntityFollowButton, FilterPanel, FollowedEntitiesList, FollowedTagsList, ImpactCard, LeftMenu, LeftMenuButton, MarkdownRenderer, PostForm, PostHighlightList, PostList, PostListItem, PostsCard, PostsContainer, PostsGrid, type QetaLeftMenuClassKey, type QetaOverrides, QuestionCard, QuestionsTable, RelativeTimeWithTooltip, StatsChart, SummaryStatsGrid, TagFollowButton, TagsGrid, TopRankingUsers, TrophyIcon, UpdatedByLink, UserLink, UsersGrid, WriteArticleButton, articleRouteRef, articlesRouteRef, askRouteRef, collectionCreateRouteRef, collectionEditRouteRef, collectionRouteRef, collectionsRouteRef, editArticleRouteRef, editQuestionRouteRef, entitiesRouteRef, entityRouteRef, favoriteQuestionsRouteRef, qetaApiRef, qetaRouteRef, questionRouteRef, questionsRouteRef, statisticsRouteRef, tagRouteRef, tagsRouteRef, useIdentityApi, useQetaApi, useStyles, useTranslation, userRouteRef, usersRouteRef, writeRouteRef };
726
+ export { AddToCollectionButton, AnswerCard, AnswerForm, AnswerList, AnswerListItem, AnswersContainer, ArticleContent, AskQuestionButton, AuthorLink, BackToArticlesButton, BackToCollectionsButton, BackToQuestionsButton, CollectionCard, CollectionFollowButton, CollectionForm, CollectionsGrid, CreateCollectionButton, DeleteModal, EntitiesGrid, EntityFollowButton, FilterPanel, FollowedCollectionsList, FollowedEntitiesList, FollowedTagsList, ImpactCard, LeftMenu, LeftMenuButton, MarkdownRenderer, PostForm, PostHighlightList, PostList, PostListItem, PostsCard, PostsContainer, PostsGrid, type QetaLeftMenuClassKey, type QetaOverrides, QuestionCard, QuestionsTable, RelativeTimeWithTooltip, SelectTemplateList, StatsChart, SummaryStatsGrid, TagFollowButton, TagsGrid, TemplateList, TopRankingUsers, TrophyIcon, UpdatedByLink, UserFollowButton, UserLink, UsersGrid, WriteArticleButton, articleRouteRef, articlesRouteRef, askRouteRef, collectionCreateRouteRef, collectionEditRouteRef, collectionRouteRef, collectionsRouteRef, editArticleRouteRef, editQuestionRouteRef, entitiesRouteRef, entityRouteRef, favoriteQuestionsRouteRef, moderatorRouteRef, qetaApiRef, qetaRouteRef, questionRouteRef, questionsRouteRef, statisticsRouteRef, tagRouteRef, tagsRouteRef, useCollectionsFollow, useEntityFollow, useIdentityApi, useIsModerator, useQetaApi, useStyles, useTagsFollow, useTranslation, useUserFollow, userRouteRef, usersRouteRef, writeRouteRef };