@drodil/backstage-plugin-qeta 3.48.2 → 3.49.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 (84) hide show
  1. package/dist/components/ArticlePage/ArticlePage.esm.js +14 -6
  2. package/dist/components/ArticlePage/ArticlePage.esm.js.map +1 -1
  3. package/dist/components/ArticlesPage/ArticlesPage.esm.js +29 -24
  4. package/dist/components/ArticlesPage/ArticlesPage.esm.js.map +1 -1
  5. package/dist/components/AskPage/AskPage.esm.js +18 -3
  6. package/dist/components/AskPage/AskPage.esm.js.map +1 -1
  7. package/dist/components/CollectionPage/CollectionPage.esm.js +79 -15
  8. package/dist/components/CollectionPage/CollectionPage.esm.js.map +1 -1
  9. package/dist/components/CollectionsPage/CollectionsPage.esm.js +11 -14
  10. package/dist/components/CollectionsPage/CollectionsPage.esm.js.map +1 -1
  11. package/dist/components/CreateLinkPage/CreateLinkPage.esm.js +2 -2
  12. package/dist/components/CreateLinkPage/CreateLinkPage.esm.js.map +1 -1
  13. package/dist/components/EntityPage/EntityPage.esm.js +110 -123
  14. package/dist/components/EntityPage/EntityPage.esm.js.map +1 -1
  15. package/dist/components/EntityPostsContent/EntityPostsContent.esm.js +2 -2
  16. package/dist/components/EntityPostsContent/EntityPostsContent.esm.js.map +1 -1
  17. package/dist/components/FavoritePage/FavoritePage.esm.js +34 -31
  18. package/dist/components/FavoritePage/FavoritePage.esm.js.map +1 -1
  19. package/dist/components/HomePage/HomePage.esm.js +34 -35
  20. package/dist/components/HomePage/HomePage.esm.js.map +1 -1
  21. package/dist/components/LinkPage/LinkPage.esm.js +22 -25
  22. package/dist/components/LinkPage/LinkPage.esm.js.map +1 -1
  23. package/dist/components/LinksPage/LinksPage.esm.js +24 -25
  24. package/dist/components/LinksPage/LinksPage.esm.js.map +1 -1
  25. package/dist/components/ModeratorPage/ModeratorPage.esm.js +11 -5
  26. package/dist/components/ModeratorPage/ModeratorPage.esm.js.map +1 -1
  27. package/dist/components/PostsTableCard/Content.esm.js +2 -2
  28. package/dist/components/PostsTableCard/Content.esm.js.map +1 -1
  29. package/dist/components/QetaPage/QetaPage.esm.js +192 -164
  30. package/dist/components/QetaPage/QetaPage.esm.js.map +1 -1
  31. package/dist/components/QetaSearchResultListItem/QetaSearchResultListItem.esm.js +2 -2
  32. package/dist/components/QetaSearchResultListItem/QetaSearchResultListItem.esm.js.map +1 -1
  33. package/dist/components/QuestionPage/QuestionPage.esm.js +27 -9
  34. package/dist/components/QuestionPage/QuestionPage.esm.js.map +1 -1
  35. package/dist/components/QuestionsPage/QuestionsPage.esm.js +13 -54
  36. package/dist/components/QuestionsPage/QuestionsPage.esm.js.map +1 -1
  37. package/dist/components/RightContent/ArticlesRightContent.esm.js +31 -0
  38. package/dist/components/RightContent/ArticlesRightContent.esm.js.map +1 -0
  39. package/dist/components/RightContent/AskRightContent.esm.js +16 -0
  40. package/dist/components/RightContent/AskRightContent.esm.js.map +1 -0
  41. package/dist/components/RightContent/CollectionsRightContent.esm.js +12 -0
  42. package/dist/components/RightContent/CollectionsRightContent.esm.js.map +1 -0
  43. package/dist/components/RightContent/DefaultRightContent.esm.js +27 -0
  44. package/dist/components/RightContent/DefaultRightContent.esm.js.map +1 -0
  45. package/dist/components/RightContent/EntitiesRightContent.esm.js +12 -0
  46. package/dist/components/RightContent/EntitiesRightContent.esm.js.map +1 -0
  47. package/dist/components/RightContent/EntityRightContent.esm.js +47 -0
  48. package/dist/components/RightContent/EntityRightContent.esm.js.map +1 -0
  49. package/dist/components/RightContent/FavoriteRightContent.esm.js +9 -0
  50. package/dist/components/RightContent/FavoriteRightContent.esm.js.map +1 -0
  51. package/dist/components/RightContent/HomeRightContent.esm.js +15 -0
  52. package/dist/components/RightContent/HomeRightContent.esm.js.map +1 -0
  53. package/dist/components/RightContent/LinksRightContent.esm.js +31 -0
  54. package/dist/components/RightContent/LinksRightContent.esm.js.map +1 -0
  55. package/dist/components/RightContent/QuestionsRightContent.esm.js +57 -0
  56. package/dist/components/RightContent/QuestionsRightContent.esm.js.map +1 -0
  57. package/dist/components/RightContent/RightContent.esm.js +203 -0
  58. package/dist/components/RightContent/RightContent.esm.js.map +1 -0
  59. package/dist/components/RightContent/SimilarQuestions.esm.js +58 -0
  60. package/dist/components/RightContent/SimilarQuestions.esm.js.map +1 -0
  61. package/dist/components/RightContent/TagRightContent.esm.js +48 -0
  62. package/dist/components/RightContent/TagRightContent.esm.js.map +1 -0
  63. package/dist/components/RightContent/TagsRightContent.esm.js +12 -0
  64. package/dist/components/RightContent/TagsRightContent.esm.js.map +1 -0
  65. package/dist/components/RightContent/UsersRightContent.esm.js +12 -0
  66. package/dist/components/RightContent/UsersRightContent.esm.js.map +1 -0
  67. package/dist/components/Statistics/GlobalStatsContent.esm.js +15 -9
  68. package/dist/components/Statistics/GlobalStatsContent.esm.js.map +1 -1
  69. package/dist/components/Statistics/StatisticsPage.esm.js +28 -11
  70. package/dist/components/Statistics/StatisticsPage.esm.js.map +1 -1
  71. package/dist/components/TagPage/TagPage.esm.js +75 -107
  72. package/dist/components/TagPage/TagPage.esm.js.map +1 -1
  73. package/dist/components/UserPage/UserPage.esm.js +34 -22
  74. package/dist/components/UserPage/UserPage.esm.js.map +1 -1
  75. package/dist/components/UserPage/UserStatsContent.esm.js +12 -9
  76. package/dist/components/UserPage/UserStatsContent.esm.js.map +1 -1
  77. package/dist/components/UsersPage/UsersPage.esm.js +12 -13
  78. package/dist/components/UsersPage/UsersPage.esm.js.map +1 -1
  79. package/dist/components/WritePage/WritePage.esm.js +2 -2
  80. package/dist/components/WritePage/WritePage.esm.js.map +1 -1
  81. package/dist/hooks/useSidebarSettings.esm.js +23 -0
  82. package/dist/hooks/useSidebarSettings.esm.js.map +1 -0
  83. package/dist/package.json.esm.js +1 -1
  84. package/package.json +3 -3
@@ -1,19 +1,36 @@
1
1
  import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
2
- import { ContentHeader } from '@backstage/core-components';
3
- import { ButtonContainer, AskQuestionButton, WriteArticleButton, CreateLinkButton, TopRankingUsers } from '@drodil/backstage-plugin-qeta-react';
2
+ import { ContentHeader, AskQuestionButton, WriteArticleButton, CreateLinkButton, TopRankingUsers } from '@drodil/backstage-plugin-qeta-react';
4
3
  import { GlobalStatsContent } from './GlobalStatsContent.esm.js';
5
- import { Grid } from '@material-ui/core';
4
+ import { Box, Tab } from '@material-ui/core';
5
+ import EmojiEventsOutlined from '@material-ui/icons/EmojiEventsOutlined';
6
+ import { TabContext, TabList, TabPanel } from '@material-ui/lab';
7
+ import { useState } from 'react';
6
8
 
7
9
  const StatisticsPage = () => {
10
+ const [tab, setTab] = useState("global");
11
+ const handleChange = (_event, newValue) => {
12
+ setTab(newValue);
13
+ };
8
14
  return /* @__PURE__ */ jsxs(Fragment, { children: [
9
- /* @__PURE__ */ jsx(ContentHeader, { title: "Statistics", children: /* @__PURE__ */ jsxs(ButtonContainer, { children: [
10
- /* @__PURE__ */ jsx(AskQuestionButton, {}),
11
- /* @__PURE__ */ jsx(WriteArticleButton, {}),
12
- /* @__PURE__ */ jsx(CreateLinkButton, {})
13
- ] }) }),
14
- /* @__PURE__ */ jsxs(Grid, { container: true, children: [
15
- /* @__PURE__ */ jsx(Grid, { item: true, xs: 12, children: /* @__PURE__ */ jsx(GlobalStatsContent, {}) }),
16
- /* @__PURE__ */ jsx(Grid, { item: true, xs: 12, children: /* @__PURE__ */ jsx(TopRankingUsers, { limit: 10 }) })
15
+ /* @__PURE__ */ jsxs(
16
+ ContentHeader,
17
+ {
18
+ title: "Statistics",
19
+ titleIcon: /* @__PURE__ */ jsx(EmojiEventsOutlined, { fontSize: "large" }),
20
+ children: [
21
+ /* @__PURE__ */ jsx(AskQuestionButton, {}),
22
+ /* @__PURE__ */ jsx(WriteArticleButton, {}),
23
+ /* @__PURE__ */ jsx(CreateLinkButton, {})
24
+ ]
25
+ }
26
+ ),
27
+ /* @__PURE__ */ jsxs(TabContext, { value: tab, children: [
28
+ /* @__PURE__ */ jsx(Box, { sx: { borderBottom: 1, borderColor: "divider" }, children: /* @__PURE__ */ jsxs(TabList, { onChange: handleChange, style: { padding: 0 }, children: [
29
+ /* @__PURE__ */ jsx(Tab, { label: "Global Stats", value: "global" }),
30
+ /* @__PURE__ */ jsx(Tab, { label: "Leaderboard", value: "leaderboard" })
31
+ ] }) }),
32
+ /* @__PURE__ */ jsx(TabPanel, { value: "global", style: { padding: "24px 0" }, children: /* @__PURE__ */ jsx(GlobalStatsContent, {}) }),
33
+ /* @__PURE__ */ jsx(TabPanel, { value: "leaderboard", style: { padding: "24px 0" }, children: /* @__PURE__ */ jsx(TopRankingUsers, { limit: 10 }) })
17
34
  ] })
18
35
  ] });
19
36
  };
@@ -1 +1 @@
1
- {"version":3,"file":"StatisticsPage.esm.js","sources":["../../../src/components/Statistics/StatisticsPage.tsx"],"sourcesContent":["import { ContentHeader } from '@backstage/core-components';\nimport {\n AskQuestionButton,\n ButtonContainer,\n CreateLinkButton,\n TopRankingUsers,\n WriteArticleButton,\n} from '@drodil/backstage-plugin-qeta-react';\nimport { GlobalStatsContent } from './GlobalStatsContent';\nimport { Grid } from '@material-ui/core';\n\nexport const StatisticsPage = () => {\n return (\n <>\n <ContentHeader title=\"Statistics\">\n <ButtonContainer>\n <AskQuestionButton />\n <WriteArticleButton />\n <CreateLinkButton />\n </ButtonContainer>\n </ContentHeader>\n <Grid container>\n <Grid item xs={12}>\n <GlobalStatsContent />\n </Grid>\n <Grid item xs={12}>\n <TopRankingUsers limit={10} />\n </Grid>\n </Grid>\n </>\n );\n};\n"],"names":[],"mappings":";;;;;;AAWO,MAAM,iBAAiB,MAAM;AAClC,EAAA,uBAEI,IAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,aAAc,EAAA,EAAA,KAAA,EAAM,YACnB,EAAA,QAAA,kBAAA,IAAA,CAAC,eACC,EAAA,EAAA,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,iBAAkB,EAAA,EAAA,CAAA;AAAA,0BAClB,kBAAmB,EAAA,EAAA,CAAA;AAAA,0BACnB,gBAAiB,EAAA,EAAA;AAAA,KAAA,EACpB,CACF,EAAA,CAAA;AAAA,oBACA,IAAA,CAAC,IAAK,EAAA,EAAA,SAAA,EAAS,IACb,EAAA,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,QAAK,IAAI,EAAA,IAAA,EAAC,IAAI,EACb,EAAA,QAAA,kBAAA,GAAA,CAAC,sBAAmB,CACtB,EAAA,CAAA;AAAA,sBACA,GAAA,CAAC,IAAK,EAAA,EAAA,IAAA,EAAI,IAAC,EAAA,EAAA,EAAI,IACb,QAAC,kBAAA,GAAA,CAAA,eAAA,EAAA,EAAgB,KAAO,EAAA,EAAA,EAAI,CAC9B,EAAA;AAAA,KACF,EAAA;AAAA,GACF,EAAA,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"StatisticsPage.esm.js","sources":["../../../src/components/Statistics/StatisticsPage.tsx"],"sourcesContent":["import {\n AskQuestionButton,\n ContentHeader,\n CreateLinkButton,\n TopRankingUsers,\n WriteArticleButton,\n} from '@drodil/backstage-plugin-qeta-react';\nimport { GlobalStatsContent } from './GlobalStatsContent';\nimport { Box, Tab } from '@material-ui/core';\nimport EmojiEventsOutlined from '@material-ui/icons/EmojiEventsOutlined';\nimport { TabContext, TabList, TabPanel } from '@material-ui/lab';\nimport { useState } from 'react';\n\nexport const StatisticsPage = () => {\n const [tab, setTab] = useState('global');\n\n const handleChange = (_event: React.ChangeEvent<{}>, newValue: string) => {\n setTab(newValue);\n };\n\n return (\n <>\n <ContentHeader\n title=\"Statistics\"\n titleIcon={<EmojiEventsOutlined fontSize=\"large\" />}\n >\n <AskQuestionButton />\n <WriteArticleButton />\n <CreateLinkButton />\n </ContentHeader>\n <TabContext value={tab}>\n <Box sx={{ borderBottom: 1, borderColor: 'divider' }}>\n <TabList onChange={handleChange} style={{ padding: 0 }}>\n <Tab label=\"Global Stats\" value=\"global\" />\n <Tab label=\"Leaderboard\" value=\"leaderboard\" />\n </TabList>\n </Box>\n <TabPanel value=\"global\" style={{ padding: '24px 0' }}>\n <GlobalStatsContent />\n </TabPanel>\n <TabPanel value=\"leaderboard\" style={{ padding: '24px 0' }}>\n <TopRankingUsers limit={10} />\n </TabPanel>\n </TabContext>\n </>\n );\n};\n"],"names":[],"mappings":";;;;;;;;AAaO,MAAM,iBAAiB,MAAM;AAClC,EAAA,MAAM,CAAC,GAAA,EAAK,MAAM,CAAA,GAAI,SAAS,QAAQ,CAAA;AAEvC,EAAM,MAAA,YAAA,GAAe,CAAC,MAAA,EAA+B,QAAqB,KAAA;AACxE,IAAA,MAAA,CAAO,QAAQ,CAAA;AAAA,GACjB;AAEA,EAAA,uBAEI,IAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA;AAAA,oBAAA,IAAA;AAAA,MAAC,aAAA;AAAA,MAAA;AAAA,QACC,KAAM,EAAA,YAAA;AAAA,QACN,SAAW,kBAAA,GAAA,CAAC,mBAAoB,EAAA,EAAA,QAAA,EAAS,OAAQ,EAAA,CAAA;AAAA,QAEjD,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,iBAAkB,EAAA,EAAA,CAAA;AAAA,8BAClB,kBAAmB,EAAA,EAAA,CAAA;AAAA,8BACnB,gBAAiB,EAAA,EAAA;AAAA;AAAA;AAAA,KACpB;AAAA,oBACA,IAAA,CAAC,UAAW,EAAA,EAAA,KAAA,EAAO,GACjB,EAAA,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,OAAI,EAAI,EAAA,EAAE,YAAc,EAAA,CAAA,EAAG,aAAa,SAAU,EAAA,EACjD,QAAC,kBAAA,IAAA,CAAA,OAAA,EAAA,EAAQ,UAAU,YAAc,EAAA,KAAA,EAAO,EAAE,OAAA,EAAS,GACjD,EAAA,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,GAAI,EAAA,EAAA,KAAA,EAAM,cAAe,EAAA,KAAA,EAAM,QAAS,EAAA,CAAA;AAAA,wBACxC,GAAA,CAAA,GAAA,EAAA,EAAI,KAAM,EAAA,aAAA,EAAc,OAAM,aAAc,EAAA;AAAA,OAAA,EAC/C,CACF,EAAA,CAAA;AAAA,sBACA,GAAA,CAAC,QAAS,EAAA,EAAA,KAAA,EAAM,QAAS,EAAA,KAAA,EAAO,EAAE,OAAA,EAAS,QAAS,EAAA,EAClD,QAAC,kBAAA,GAAA,CAAA,kBAAA,EAAA,EAAmB,CACtB,EAAA,CAAA;AAAA,sBACC,GAAA,CAAA,QAAA,EAAA,EAAS,KAAM,EAAA,aAAA,EAAc,KAAO,EAAA,EAAE,OAAS,EAAA,QAAA,EAC9C,EAAA,QAAA,kBAAA,GAAA,CAAC,eAAgB,EAAA,EAAA,KAAA,EAAO,IAAI,CAC9B,EAAA;AAAA,KACF,EAAA;AAAA,GACF,EAAA,CAAA;AAEJ;;;;"}
@@ -1,13 +1,14 @@
1
- import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
1
+ import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
2
2
  import { useState, useEffect } from 'react';
3
- import { ContentHeader } from '@backstage/core-components';
4
3
  import { useParams } from 'react-router-dom';
5
- import { qetaTranslationRef, qetaApiRef, TagFollowButton, ButtonContainer, AskQuestionButton, WriteArticleButton, CreateLinkButton, MarkdownRenderer, PostsGrid, PostsContainer, TagsGrid, FollowedTagsList, PostHighlightList, PostHighlightListContainer } from '@drodil/backstage-plugin-qeta-react';
6
- import Whatshot from '@material-ui/icons/Whatshot';
4
+ import { qetaTranslationRef, qetaApiRef, ContentHeader, TagFollowButton, AskQuestionButton, WriteArticleButton, CreateLinkButton, ContentHeaderCard, PostsGrid, PostsContainer, TagsGrid } from '@drodil/backstage-plugin-qeta-react';
5
+ import LocalOfferOutlined from '@material-ui/icons/LocalOfferOutlined';
6
+ import QuestionAnswerIcon from '@material-ui/icons/QuestionAnswer';
7
+ import PeopleIcon from '@material-ui/icons/People';
7
8
  import { useApi, alertApiRef } from '@backstage/core-plugin-api';
8
- import { Grid, Typography, Card, CardContent } from '@material-ui/core';
9
9
  import { EntityRefLink } from '@backstage/plugin-catalog-react';
10
10
  import { useTranslationRef } from '@backstage/core-plugin-api/alpha';
11
+ import { Typography } from '@material-ui/core';
11
12
 
12
13
  const TagPage = () => {
13
14
  const { tag } = useParams();
@@ -33,115 +34,82 @@ const TagPage = () => {
33
34
  });
34
35
  });
35
36
  }, [qetaApi, tag, alertApi]);
36
- return /* @__PURE__ */ jsxs(Grid, { container: true, spacing: 4, children: [
37
- /* @__PURE__ */ jsxs(Grid, { item: true, md: 12, lg: 9, xl: 10, children: [
38
- tag ? /* @__PURE__ */ jsx(
39
- ContentHeader,
40
- {
41
- titleComponent: /* @__PURE__ */ jsxs("span", { style: { display: "flex", alignItems: "center" }, children: [
42
- /* @__PURE__ */ jsxs(
43
- Typography,
44
- {
45
- variant: "h5",
46
- component: "h2",
47
- id: "tag-title",
48
- style: { marginRight: "0.5em" },
49
- children: [
50
- "#",
51
- tag
52
- ]
53
- }
54
- ),
55
- /* @__PURE__ */ jsx(TagFollowButton, { tag })
56
- ] }),
57
- children: /* @__PURE__ */ jsxs(ButtonContainer, { children: [
58
- /* @__PURE__ */ jsx(AskQuestionButton, { tags: [tag] }),
59
- /* @__PURE__ */ jsx(WriteArticleButton, { tags: [tag] }),
60
- /* @__PURE__ */ jsx(CreateLinkButton, { tags: [tag] })
61
- ] })
62
- }
63
- ) : /* @__PURE__ */ jsx(ContentHeader, { title: t("tagPage.defaultTitle"), children: /* @__PURE__ */ jsxs(ButtonContainer, { children: [
64
- /* @__PURE__ */ jsx(AskQuestionButton, {}),
65
- /* @__PURE__ */ jsx(WriteArticleButton, {}),
66
- /* @__PURE__ */ jsx(CreateLinkButton, {})
67
- ] }) }),
68
- resp && /* @__PURE__ */ jsx(Card, { variant: "outlined", style: { marginBottom: "1em" }, children: /* @__PURE__ */ jsxs(CardContent, { children: [
69
- /* @__PURE__ */ jsxs(Typography, { variant: "caption", children: [
70
- t("common.posts", {
71
- count: resp.postsCount,
72
- itemType: "post"
73
- }),
74
- " \xB7 ",
75
- t("common.followers", { count: resp.followerCount })
37
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
38
+ tag ? /* @__PURE__ */ jsxs(
39
+ ContentHeader,
40
+ {
41
+ title: /* @__PURE__ */ jsxs("span", { style: { display: "flex", alignItems: "center" }, children: [
42
+ tag,
43
+ /* @__PURE__ */ jsx(TagFollowButton, { tag })
76
44
  ] }),
77
- /* @__PURE__ */ jsx("br", {}),
78
- resp.experts && resp.experts.length > 0 && /* @__PURE__ */ jsxs(Typography, { variant: "caption", children: [
45
+ titleIcon: /* @__PURE__ */ jsx(LocalOfferOutlined, { fontSize: "large" }),
46
+ children: [
47
+ /* @__PURE__ */ jsx(AskQuestionButton, { tags: [tag] }),
48
+ /* @__PURE__ */ jsx(WriteArticleButton, { tags: [tag] }),
49
+ /* @__PURE__ */ jsx(CreateLinkButton, { tags: [tag] })
50
+ ]
51
+ }
52
+ ) : /* @__PURE__ */ jsxs(
53
+ ContentHeader,
54
+ {
55
+ title: t("tagPage.defaultTitle"),
56
+ titleIcon: /* @__PURE__ */ jsx(LocalOfferOutlined, { fontSize: "large" }),
57
+ children: [
58
+ /* @__PURE__ */ jsx(AskQuestionButton, {}),
59
+ /* @__PURE__ */ jsx(WriteArticleButton, {}),
60
+ /* @__PURE__ */ jsx(CreateLinkButton, {})
61
+ ]
62
+ }
63
+ ),
64
+ resp && /* @__PURE__ */ jsx(
65
+ ContentHeaderCard,
66
+ {
67
+ description: resp.description,
68
+ imageIcon: /* @__PURE__ */ jsx(LocalOfferOutlined, { style: { fontSize: 80 } }),
69
+ stats: [
70
+ {
71
+ label: t("common.postsLabel", {
72
+ count: resp.postsCount,
73
+ itemType: "post"
74
+ }),
75
+ value: resp.postsCount,
76
+ icon: /* @__PURE__ */ jsx(QuestionAnswerIcon, { fontSize: "small" })
77
+ },
78
+ {
79
+ label: t("common.followersLabel", { count: resp.followerCount }),
80
+ value: resp.followerCount,
81
+ icon: /* @__PURE__ */ jsx(PeopleIcon, { fontSize: "small" })
82
+ }
83
+ ],
84
+ children: resp.experts && resp.experts.length > 0 && /* @__PURE__ */ jsxs(Typography, { variant: "caption", children: [
79
85
  t("common.experts"),
80
86
  ": ",
81
87
  resp.experts.map((e, i) => /* @__PURE__ */ jsxs(Fragment, { children: [
82
88
  /* @__PURE__ */ jsx(EntityRefLink, { entityRef: e }, e),
83
89
  i === resp.experts.length - 1 ? "" : ","
84
90
  ] }))
85
- ] }),
86
- resp.description && /* @__PURE__ */ jsx(MarkdownRenderer, { content: resp.description })
87
- ] }) }),
88
- tag && (view === "grid" ? /* @__PURE__ */ jsx(
89
- PostsGrid,
90
- {
91
- tags: [tag ?? ""],
92
- filterPanelProps: { showTagFilter: false },
93
- view,
94
- onViewChange: setView
95
- }
96
- ) : /* @__PURE__ */ jsx(
97
- PostsContainer,
98
- {
99
- tags: [tag ?? ""],
100
- filterPanelProps: { showTagFilter: false },
101
- view,
102
- showTypeLabel: true,
103
- onViewChange: setView
104
- }
105
- )),
106
- !tag && /* @__PURE__ */ jsx(TagsGrid, {})
107
- ] }),
108
- /* @__PURE__ */ jsxs(Grid, { item: true, lg: 3, xl: 2, children: [
109
- /* @__PURE__ */ jsx(FollowedTagsList, {}),
110
- resp && /* @__PURE__ */ jsxs(Fragment, { children: [
111
- /* @__PURE__ */ jsx(
112
- PostHighlightList,
113
- {
114
- type: "hot",
115
- title: t("highlights.hotQuestions.title"),
116
- noQuestionsLabel: t("highlights.hotQuestions.noQuestionsLabel"),
117
- icon: /* @__PURE__ */ jsx(Whatshot, { fontSize: "small" }),
118
- options: { tags: [resp.tag] },
119
- postType: "question"
120
- }
121
- ),
122
- /* @__PURE__ */ jsx(
123
- PostHighlightList,
124
- {
125
- type: "unanswered",
126
- title: t("highlights.unanswered.title"),
127
- noQuestionsLabel: t("highlights.unanswered.noQuestionsLabel"),
128
- options: { tags: [resp.tag] },
129
- postType: "question"
130
- }
131
- ),
132
- /* @__PURE__ */ jsx(
133
- PostHighlightList,
134
- {
135
- type: "incorrect",
136
- title: t("highlights.incorrect.title"),
137
- noQuestionsLabel: t("highlights.incorrect.noQuestionsLabel"),
138
- options: { tags: [resp.tag] },
139
- postType: "question"
140
- }
141
- )
142
- ] }),
143
- !resp && /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsx(PostHighlightListContainer, {}) })
144
- ] })
91
+ ] })
92
+ }
93
+ ),
94
+ tag && (view === "grid" ? /* @__PURE__ */ jsx(
95
+ PostsGrid,
96
+ {
97
+ tags: [tag ?? ""],
98
+ filterPanelProps: { showTagFilter: false },
99
+ view,
100
+ onViewChange: setView
101
+ }
102
+ ) : /* @__PURE__ */ jsx(
103
+ PostsContainer,
104
+ {
105
+ tags: [tag ?? ""],
106
+ filterPanelProps: { showTagFilter: false },
107
+ view,
108
+ showTypeLabel: true,
109
+ onViewChange: setView
110
+ }
111
+ )),
112
+ !tag && /* @__PURE__ */ jsx(TagsGrid, {})
145
113
  ] });
146
114
  };
147
115
 
@@ -1 +1 @@
1
- {"version":3,"file":"TagPage.esm.js","sources":["../../../src/components/TagPage/TagPage.tsx"],"sourcesContent":["import { useEffect, useState } from 'react';\nimport { ContentHeader } from '@backstage/core-components';\nimport { useParams } from 'react-router-dom';\nimport {\n AskQuestionButton,\n ButtonContainer,\n CreateLinkButton,\n FollowedTagsList,\n MarkdownRenderer,\n PostHighlightList,\n PostHighlightListContainer,\n PostsContainer,\n PostsGrid,\n qetaApiRef,\n qetaTranslationRef,\n TagFollowButton,\n TagsGrid,\n ViewType,\n WriteArticleButton,\n} from '@drodil/backstage-plugin-qeta-react';\nimport Whatshot from '@material-ui/icons/Whatshot';\nimport { alertApiRef, useApi } from '@backstage/core-plugin-api';\nimport { TagResponse } from '@drodil/backstage-plugin-qeta-common';\nimport { Card, CardContent, Grid, Typography } from '@material-ui/core';\nimport { EntityRefLink } from '@backstage/plugin-catalog-react';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\n\nexport const TagPage = () => {\n const { tag } = useParams();\n const { t } = useTranslationRef(qetaTranslationRef);\n const [resp, setResp] = useState<undefined | TagResponse>();\n const [view, setView] = useState<ViewType>('list');\n\n const qetaApi = useApi(qetaApiRef);\n const alertApi = useApi(alertApiRef);\n\n useEffect(() => {\n if (!tag) {\n setResp(undefined);\n return;\n }\n\n qetaApi\n .getTag(tag)\n .then(res => {\n if (res) {\n setResp(res);\n }\n })\n .catch(e => {\n alertApi.post({\n message: e.message,\n severity: 'error',\n display: 'transient',\n });\n });\n }, [qetaApi, tag, alertApi]);\n\n return (\n <Grid container spacing={4}>\n <Grid item md={12} lg={9} xl={10}>\n {tag ? (\n <ContentHeader\n titleComponent={\n <span style={{ display: 'flex', alignItems: 'center' }}>\n <Typography\n variant=\"h5\"\n component=\"h2\"\n id=\"tag-title\"\n style={{ marginRight: '0.5em' }}\n >\n #{tag}\n </Typography>\n <TagFollowButton tag={tag} />\n </span>\n }\n >\n <ButtonContainer>\n <AskQuestionButton tags={[tag]} />\n <WriteArticleButton tags={[tag]} />\n <CreateLinkButton tags={[tag]} />\n </ButtonContainer>\n </ContentHeader>\n ) : (\n <ContentHeader title={t('tagPage.defaultTitle')}>\n <ButtonContainer>\n <AskQuestionButton />\n <WriteArticleButton />\n <CreateLinkButton />\n </ButtonContainer>\n </ContentHeader>\n )}\n {resp && (\n <Card variant=\"outlined\" style={{ marginBottom: '1em' }}>\n <CardContent>\n <Typography variant=\"caption\">\n {t('common.posts', {\n count: resp.postsCount,\n itemType: 'post',\n })}\n {' · '}\n {t('common.followers', { count: resp.followerCount })}\n </Typography>\n <br />\n {resp.experts && resp.experts.length > 0 && (\n <Typography variant=\"caption\">\n {t('common.experts')}\n {': '}\n {resp.experts.map((e, i) => (\n <>\n <EntityRefLink key={e} entityRef={e} />\n {i === resp.experts!.length - 1 ? '' : ','}\n </>\n ))}\n </Typography>\n )}\n {resp.description && (\n <MarkdownRenderer content={resp.description} />\n )}\n </CardContent>\n </Card>\n )}\n {tag &&\n (view === 'grid' ? (\n <PostsGrid\n tags={[tag ?? '']}\n filterPanelProps={{ showTagFilter: false }}\n view={view}\n onViewChange={setView}\n />\n ) : (\n <PostsContainer\n tags={[tag ?? '']}\n filterPanelProps={{ showTagFilter: false }}\n view={view}\n showTypeLabel\n onViewChange={setView}\n />\n ))}\n {!tag && <TagsGrid />}\n </Grid>\n <Grid item lg={3} xl={2}>\n <FollowedTagsList />\n {resp && (\n <>\n <PostHighlightList\n type=\"hot\"\n title={t('highlights.hotQuestions.title')}\n noQuestionsLabel={t('highlights.hotQuestions.noQuestionsLabel')}\n icon={<Whatshot fontSize=\"small\" />}\n options={{ tags: [resp.tag] }}\n postType=\"question\"\n />\n\n <PostHighlightList\n type=\"unanswered\"\n title={t('highlights.unanswered.title')}\n noQuestionsLabel={t('highlights.unanswered.noQuestionsLabel')}\n options={{ tags: [resp.tag] }}\n postType=\"question\"\n />\n <PostHighlightList\n type=\"incorrect\"\n title={t('highlights.incorrect.title')}\n noQuestionsLabel={t('highlights.incorrect.noQuestionsLabel')}\n options={{ tags: [resp.tag] }}\n postType=\"question\"\n />\n </>\n )}\n {!resp && (\n <>\n <PostHighlightListContainer />\n </>\n )}\n </Grid>\n </Grid>\n );\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TagPage.esm.js","sources":["../../../src/components/TagPage/TagPage.tsx"],"sourcesContent":["import { useEffect, useState } from 'react';\nimport { useParams } from 'react-router-dom';\nimport {\n AskQuestionButton,\n ContentHeader,\n CreateLinkButton,\n PostsContainer,\n PostsGrid,\n qetaApiRef,\n qetaTranslationRef,\n TagFollowButton,\n TagsGrid,\n ViewType,\n WriteArticleButton,\n} from '@drodil/backstage-plugin-qeta-react';\nimport LocalOfferOutlined from '@material-ui/icons/LocalOfferOutlined';\nimport QuestionAnswerIcon from '@material-ui/icons/QuestionAnswer';\nimport PeopleIcon from '@material-ui/icons/People';\nimport { alertApiRef, useApi } from '@backstage/core-plugin-api';\nimport { TagResponse } from '@drodil/backstage-plugin-qeta-common';\nimport { EntityRefLink } from '@backstage/plugin-catalog-react';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { ContentHeaderCard } from '@drodil/backstage-plugin-qeta-react';\nimport { Typography } from '@material-ui/core';\n\nexport const TagPage = () => {\n const { tag } = useParams();\n const { t } = useTranslationRef(qetaTranslationRef);\n const [resp, setResp] = useState<undefined | TagResponse>();\n const [view, setView] = useState<ViewType>('list');\n\n const qetaApi = useApi(qetaApiRef);\n const alertApi = useApi(alertApiRef);\n\n useEffect(() => {\n if (!tag) {\n setResp(undefined);\n return;\n }\n\n qetaApi\n .getTag(tag)\n .then(res => {\n if (res) {\n setResp(res);\n }\n })\n .catch(e => {\n alertApi.post({\n message: e.message,\n severity: 'error',\n display: 'transient',\n });\n });\n }, [qetaApi, tag, alertApi]);\n\n return (\n <>\n {tag ? (\n <ContentHeader\n title={\n <span style={{ display: 'flex', alignItems: 'center' }}>\n {tag}\n <TagFollowButton tag={tag} />\n </span>\n }\n titleIcon={<LocalOfferOutlined fontSize=\"large\" />}\n >\n <AskQuestionButton tags={[tag]} />\n <WriteArticleButton tags={[tag]} />\n <CreateLinkButton tags={[tag]} />\n </ContentHeader>\n ) : (\n <ContentHeader\n title={t('tagPage.defaultTitle')}\n titleIcon={<LocalOfferOutlined fontSize=\"large\" />}\n >\n <AskQuestionButton />\n <WriteArticleButton />\n <CreateLinkButton />\n </ContentHeader>\n )}\n {resp && (\n <ContentHeaderCard\n description={resp.description}\n imageIcon={<LocalOfferOutlined style={{ fontSize: 80 }} />}\n stats={[\n {\n label: t('common.postsLabel', {\n count: resp.postsCount,\n itemType: 'post',\n }),\n value: resp.postsCount,\n icon: <QuestionAnswerIcon fontSize=\"small\" />,\n },\n {\n label: t('common.followersLabel', { count: resp.followerCount }),\n value: resp.followerCount,\n icon: <PeopleIcon fontSize=\"small\" />,\n },\n ]}\n >\n {resp.experts && resp.experts.length > 0 && (\n <Typography variant=\"caption\">\n {t('common.experts')}\n {': '}\n {resp.experts.map((e, i) => (\n <>\n <EntityRefLink key={e} entityRef={e} />\n {i === resp.experts!.length - 1 ? '' : ','}\n </>\n ))}\n </Typography>\n )}\n </ContentHeaderCard>\n )}\n {tag &&\n (view === 'grid' ? (\n <PostsGrid\n tags={[tag ?? '']}\n filterPanelProps={{ showTagFilter: false }}\n view={view}\n onViewChange={setView}\n />\n ) : (\n <PostsContainer\n tags={[tag ?? '']}\n filterPanelProps={{ showTagFilter: false }}\n view={view}\n showTypeLabel\n onViewChange={setView}\n />\n ))}\n {!tag && <TagsGrid />}\n </>\n );\n};\n"],"names":[],"mappings":"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"}
@@ -1,14 +1,13 @@
1
1
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
2
2
  import { useState } from 'react';
3
- import { ContentHeader } from '@backstage/core-components';
4
3
  import { useParams, useSearchParams } from 'react-router-dom';
5
- import { useUserInfo, qetaTranslationRef, useIdentityApi, UserFollowButton, ButtonContainer, AskQuestionButton, WriteArticleButton, CreateLinkButton, PostsContainer, PostsGrid, CollectionsGrid, AnswersContainer } from '@drodil/backstage-plugin-qeta-react';
4
+ import { useUserInfo, qetaTranslationRef, useIdentityApi, UserFollowButton, ContentHeader, AskQuestionButton, WriteArticleButton, CreateLinkButton, PostsContainer, PostsGrid, CollectionsGrid, AnswersContainer } from '@drodil/backstage-plugin-qeta-react';
6
5
  import { UserStatsContent } from './UserStatsContent.esm.js';
7
6
  import { TabContext, TabList, TabPanel } from '@material-ui/lab';
8
- import { makeStyles, Box, Avatar, Tooltip, Typography, Tab } from '@material-ui/core';
7
+ import { makeStyles, Box, Avatar, Typography, Tab } from '@material-ui/core';
9
8
  import { useTranslationRef } from '@backstage/core-plugin-api/alpha';
10
9
  import AssessmentIcon from '@material-ui/icons/Assessment';
11
- import HelpOutlineIcon from '@material-ui/icons/HelpOutline';
10
+ import HelpOutline from '@material-ui/icons/HelpOutline';
12
11
  import CollectionsBookmarkIcon from '@material-ui/icons/CollectionsBookmark';
13
12
  import CollectionsIcon from '@material-ui/icons/Collections';
14
13
  import QuestionAnswerIcon from '@material-ui/icons/QuestionAnswer';
@@ -19,17 +18,18 @@ const useStyles = makeStyles((theme) => ({
19
18
  marginRight: theme.spacing(1)
20
19
  },
21
20
  tabPanel: {
22
- padding: theme.spacing(3)
21
+ padding: theme.spacing(3, 0)
23
22
  },
24
23
  avatar: {
25
- width: theme.spacing(6),
26
- height: theme.spacing(6),
27
- marginRight: theme.spacing(2)
24
+ width: theme.spacing(12),
25
+ height: theme.spacing(12),
26
+ marginRight: theme.spacing(3),
27
+ boxShadow: theme.shadows[2]
28
28
  },
29
29
  headerContent: {
30
30
  display: "flex",
31
31
  alignItems: "center",
32
- padding: theme.spacing(2)
32
+ padding: theme.spacing(3, 0)
33
33
  },
34
34
  tabList: {},
35
35
  tabLabel: {
@@ -80,26 +80,38 @@ const UserPage = () => {
80
80
  children: initials
81
81
  }
82
82
  ),
83
- /* @__PURE__ */ jsxs(Box, { children: [
84
- /* @__PURE__ */ jsx(Tooltip, { title: secondaryTitle || "", arrow: true, children: /* @__PURE__ */ jsx(Typography, { variant: "h5", component: "h2", id: "user-name", children: name }) }),
85
- !loadingUser && !userError && currentUser?.userEntityRef !== identity && /* @__PURE__ */ jsx(
86
- UserFollowButton,
87
- {
88
- userRef: identity,
89
- style: { marginLeft: "0.5em" },
90
- "aria-label": t("userPage.followUser", { name })
91
- }
92
- )
83
+ /* @__PURE__ */ jsxs(Box, { display: "flex", flexDirection: "column", justifyContent: "center", children: [
84
+ /* @__PURE__ */ jsxs(Box, { display: "flex", alignItems: "center", children: [
85
+ /* @__PURE__ */ jsx(
86
+ Typography,
87
+ {
88
+ variant: "h4",
89
+ component: "h2",
90
+ id: "user-name",
91
+ style: { fontWeight: 700 },
92
+ children: name
93
+ }
94
+ ),
95
+ !loadingUser && !userError && currentUser?.userEntityRef !== identity && /* @__PURE__ */ jsx(
96
+ UserFollowButton,
97
+ {
98
+ userRef: identity,
99
+ style: { marginLeft: "1rem", transform: "scale(1.2)" },
100
+ "aria-label": t("userPage.followUser", { name })
101
+ }
102
+ )
103
+ ] }),
104
+ (secondaryTitle || user?.spec?.profile?.email) && /* @__PURE__ */ jsx(Typography, { variant: "h6", color: "textSecondary", children: secondaryTitle || user?.spec?.profile?.email })
93
105
  ] })
94
106
  ]
95
107
  }
96
108
  );
97
109
  return /* @__PURE__ */ jsxs(Fragment, { children: [
98
- /* @__PURE__ */ jsx(ContentHeader, { titleComponent: title, children: /* @__PURE__ */ jsxs(ButtonContainer, { children: [
110
+ /* @__PURE__ */ jsxs(ContentHeader, { titleComponent: title, children: [
99
111
  /* @__PURE__ */ jsx(AskQuestionButton, {}),
100
112
  /* @__PURE__ */ jsx(WriteArticleButton, {}),
101
113
  /* @__PURE__ */ jsx(CreateLinkButton, {})
102
- ] }) }),
114
+ ] }),
103
115
  /* @__PURE__ */ jsxs(TabContext, { value: tab, children: [
104
116
  /* @__PURE__ */ jsx(Box, { className: classes.tabList, children: /* @__PURE__ */ jsxs(
105
117
  TabList,
@@ -130,7 +142,7 @@ const UserPage = () => {
130
142
  label: /* @__PURE__ */ jsx(
131
143
  TabLabel,
132
144
  {
133
- icon: /* @__PURE__ */ jsx(HelpOutlineIcon, { className: classes.tabIcon }),
145
+ icon: /* @__PURE__ */ jsx(HelpOutline, { className: classes.tabIcon }),
134
146
  label: t("userPage.questions")
135
147
  }
136
148
  )
@@ -1 +1 @@
1
- {"version":3,"file":"UserPage.esm.js","sources":["../../../src/components/UserPage/UserPage.tsx"],"sourcesContent":["import { ChangeEvent, useState } from 'react';\nimport { ContentHeader } from '@backstage/core-components';\nimport { useParams, useSearchParams } from 'react-router-dom';\nimport {\n AnswersContainer,\n AskQuestionButton,\n ButtonContainer,\n CollectionsGrid,\n CreateLinkButton,\n PostsContainer,\n PostsGrid,\n qetaTranslationRef,\n useIdentityApi,\n UserFollowButton,\n useUserInfo,\n WriteArticleButton,\n} from '@drodil/backstage-plugin-qeta-react';\nimport { UserStatsContent } from './UserStatsContent';\nimport { TabContext, TabList, TabPanel } from '@material-ui/lab';\nimport {\n Avatar,\n Box,\n makeStyles,\n Tab,\n Tooltip,\n Typography,\n} from '@material-ui/core';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport AssessmentIcon from '@material-ui/icons/Assessment';\nimport HelpOutlineIcon from '@material-ui/icons/HelpOutline';\nimport CollectionsBookmarkIcon from '@material-ui/icons/CollectionsBookmark';\nimport CollectionsIcon from '@material-ui/icons/Collections';\nimport QuestionAnswerIcon from '@material-ui/icons/QuestionAnswer';\nimport LinkIcon from '@material-ui/icons/Link';\n\nconst useStyles = makeStyles(theme => ({\n tabIcon: {\n marginRight: theme.spacing(1),\n },\n tabPanel: {\n padding: theme.spacing(3),\n },\n avatar: {\n width: theme.spacing(6),\n height: theme.spacing(6),\n marginRight: theme.spacing(2),\n },\n headerContent: {\n display: 'flex',\n alignItems: 'center',\n padding: theme.spacing(2),\n },\n tabList: {},\n tabLabel: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-start',\n minWidth: 0,\n },\n}));\n\nexport const UserPage = () => {\n const identity = useParams()['*'] ?? 'unknown';\n const { name, initials, user, secondaryTitle } = useUserInfo(identity);\n const [tab, setTab] = useState('statistics');\n const { t } = useTranslationRef(qetaTranslationRef);\n const [_searchParams, setSearchParams] = useSearchParams();\n const classes = useStyles();\n const {\n value: currentUser,\n loading: loadingUser,\n error: userError,\n } = useIdentityApi(api => api.getBackstageIdentity(), []);\n\n const handleChange = (_event: ChangeEvent<{}>, newValue: string) => {\n setSearchParams({});\n setTab(newValue);\n };\n\n const TabLabel = ({\n icon,\n label,\n }: {\n icon: React.ReactNode;\n label: string;\n }) => (\n <div className={classes.tabLabel}>\n {icon}\n <span>{label}</span>\n </div>\n );\n\n const title = (\n <Box\n className={classes.headerContent}\n role=\"banner\"\n aria-label={t('userPage.profileHeader')}\n >\n <Avatar\n src={user?.spec?.profile?.picture}\n alt={name}\n variant=\"rounded\"\n className={classes.avatar}\n aria-label={t('userPage.profilePicture', { name })}\n >\n {initials}\n </Avatar>\n <Box>\n <Tooltip title={secondaryTitle || ''} arrow>\n <Typography variant=\"h5\" component=\"h2\" id=\"user-name\">\n {name}\n </Typography>\n </Tooltip>\n {!loadingUser &&\n !userError &&\n currentUser?.userEntityRef !== identity && (\n <UserFollowButton\n userRef={identity}\n style={{ marginLeft: '0.5em' }}\n aria-label={t('userPage.followUser', { name })}\n />\n )}\n </Box>\n </Box>\n );\n\n return (\n <>\n <ContentHeader titleComponent={title}>\n <ButtonContainer>\n <AskQuestionButton />\n <WriteArticleButton />\n <CreateLinkButton />\n </ButtonContainer>\n </ContentHeader>\n <TabContext value={tab}>\n <Box className={classes.tabList}>\n <TabList\n onChange={handleChange}\n aria-label={t('userPage.profileTab')}\n aria-labelledby=\"user-name\"\n variant=\"scrollable\"\n scrollButtons=\"auto\"\n >\n <Tab\n value=\"statistics\"\n label={\n <TabLabel\n icon={<AssessmentIcon className={classes.tabIcon} />}\n label={t('userPage.statistics')}\n />\n }\n />\n <Tab\n value=\"questions\"\n label={\n <TabLabel\n icon={<HelpOutlineIcon className={classes.tabIcon} />}\n label={t('userPage.questions')}\n />\n }\n />\n <Tab\n value=\"articles\"\n label={\n <TabLabel\n icon={<CollectionsBookmarkIcon className={classes.tabIcon} />}\n label={t('userPage.articles')}\n />\n }\n />\n <Tab\n value=\"links\"\n label={\n <TabLabel\n icon={<LinkIcon className={classes.tabIcon} />}\n label={t('userPage.links')}\n />\n }\n />\n <Tab\n value=\"collections\"\n label={\n <TabLabel\n icon={<CollectionsIcon className={classes.tabIcon} />}\n label={t('userPage.collections')}\n />\n }\n />\n <Tab\n value=\"answers\"\n label={\n <TabLabel\n icon={<QuestionAnswerIcon className={classes.tabIcon} />}\n label={t('userPage.answers')}\n />\n }\n />\n </TabList>\n </Box>\n <TabPanel value=\"statistics\" className={classes.tabPanel}>\n <UserStatsContent userRef={identity ?? ''} />\n </TabPanel>\n <TabPanel value=\"questions\" className={classes.tabPanel}>\n <PostsContainer\n author={identity ?? ''}\n showNoQuestionsBtn={false}\n type=\"question\"\n />\n </TabPanel>\n <TabPanel value=\"articles\" className={classes.tabPanel}>\n <PostsGrid\n author={identity ?? ''}\n type=\"article\"\n showNoQuestionsBtn={false}\n />\n </TabPanel>\n <TabPanel value=\"links\" className={classes.tabPanel}>\n <PostsGrid\n author={identity ?? ''}\n type=\"link\"\n showNoQuestionsBtn={false}\n />\n </TabPanel>\n <TabPanel value=\"collections\" className={classes.tabPanel}>\n <CollectionsGrid owner={identity ?? ''} />\n </TabPanel>\n <TabPanel value=\"answers\" className={classes.tabPanel}>\n <AnswersContainer\n author={identity ?? ''}\n title={t('userPage.answers')}\n />\n </TabPanel>\n </TabContext>\n </>\n );\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"UserPage.esm.js","sources":["../../../src/components/UserPage/UserPage.tsx"],"sourcesContent":["import { ChangeEvent, useState } from 'react';\nimport { useParams, useSearchParams } from 'react-router-dom';\nimport {\n AnswersContainer,\n AskQuestionButton,\n CollectionsGrid,\n ContentHeader,\n CreateLinkButton,\n PostsContainer,\n PostsGrid,\n qetaTranslationRef,\n useIdentityApi,\n UserFollowButton,\n useUserInfo,\n WriteArticleButton,\n} from '@drodil/backstage-plugin-qeta-react';\nimport { UserStatsContent } from './UserStatsContent';\nimport { TabContext, TabList, TabPanel } from '@material-ui/lab';\nimport { Avatar, Box, makeStyles, Tab, Typography } from '@material-ui/core';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport AssessmentIcon from '@material-ui/icons/Assessment';\nimport HelpOutlineIcon from '@material-ui/icons/HelpOutline';\nimport CollectionsBookmarkIcon from '@material-ui/icons/CollectionsBookmark';\nimport CollectionsIcon from '@material-ui/icons/Collections';\nimport QuestionAnswerIcon from '@material-ui/icons/QuestionAnswer';\nimport LinkIcon from '@material-ui/icons/Link';\n\nconst useStyles = makeStyles(theme => ({\n tabIcon: {\n marginRight: theme.spacing(1),\n },\n tabPanel: {\n padding: theme.spacing(3, 0),\n },\n avatar: {\n width: theme.spacing(12),\n height: theme.spacing(12),\n marginRight: theme.spacing(3),\n boxShadow: theme.shadows[2],\n },\n headerContent: {\n display: 'flex',\n alignItems: 'center',\n padding: theme.spacing(3, 0),\n },\n tabList: {},\n tabLabel: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-start',\n minWidth: 0,\n },\n}));\n\nexport const UserPage = () => {\n const identity = useParams()['*'] ?? 'unknown';\n const { name, initials, user, secondaryTitle } = useUserInfo(identity);\n const [tab, setTab] = useState('statistics');\n const { t } = useTranslationRef(qetaTranslationRef);\n const [_searchParams, setSearchParams] = useSearchParams();\n const classes = useStyles();\n const {\n value: currentUser,\n loading: loadingUser,\n error: userError,\n } = useIdentityApi(api => api.getBackstageIdentity(), []);\n\n const handleChange = (_event: ChangeEvent<{}>, newValue: string) => {\n setSearchParams({});\n setTab(newValue);\n };\n\n const TabLabel = ({\n icon,\n label,\n }: {\n icon: React.ReactNode;\n label: string;\n }) => (\n <div className={classes.tabLabel}>\n {icon}\n <span>{label}</span>\n </div>\n );\n\n const title = (\n <Box\n className={classes.headerContent}\n role=\"banner\"\n aria-label={t('userPage.profileHeader')}\n >\n <Avatar\n src={user?.spec?.profile?.picture}\n alt={name}\n variant=\"rounded\"\n className={classes.avatar}\n aria-label={t('userPage.profilePicture', { name })}\n >\n {initials}\n </Avatar>\n <Box display=\"flex\" flexDirection=\"column\" justifyContent=\"center\">\n <Box display=\"flex\" alignItems=\"center\">\n <Typography\n variant=\"h4\"\n component=\"h2\"\n id=\"user-name\"\n style={{ fontWeight: 700 }}\n >\n {name}\n </Typography>\n {!loadingUser &&\n !userError &&\n currentUser?.userEntityRef !== identity && (\n <UserFollowButton\n userRef={identity}\n style={{ marginLeft: '1rem', transform: 'scale(1.2)' }}\n aria-label={t('userPage.followUser', { name })}\n />\n )}\n </Box>\n {(secondaryTitle || user?.spec?.profile?.email) && (\n <Typography variant=\"h6\" color=\"textSecondary\">\n {secondaryTitle || user?.spec?.profile?.email}\n </Typography>\n )}\n </Box>\n </Box>\n );\n\n return (\n <>\n <ContentHeader titleComponent={title}>\n <AskQuestionButton />\n <WriteArticleButton />\n <CreateLinkButton />\n </ContentHeader>\n <TabContext value={tab}>\n <Box className={classes.tabList}>\n <TabList\n onChange={handleChange}\n aria-label={t('userPage.profileTab')}\n aria-labelledby=\"user-name\"\n variant=\"scrollable\"\n scrollButtons=\"auto\"\n >\n <Tab\n value=\"statistics\"\n label={\n <TabLabel\n icon={<AssessmentIcon className={classes.tabIcon} />}\n label={t('userPage.statistics')}\n />\n }\n />\n <Tab\n value=\"questions\"\n label={\n <TabLabel\n icon={<HelpOutlineIcon className={classes.tabIcon} />}\n label={t('userPage.questions')}\n />\n }\n />\n <Tab\n value=\"articles\"\n label={\n <TabLabel\n icon={<CollectionsBookmarkIcon className={classes.tabIcon} />}\n label={t('userPage.articles')}\n />\n }\n />\n <Tab\n value=\"links\"\n label={\n <TabLabel\n icon={<LinkIcon className={classes.tabIcon} />}\n label={t('userPage.links')}\n />\n }\n />\n <Tab\n value=\"collections\"\n label={\n <TabLabel\n icon={<CollectionsIcon className={classes.tabIcon} />}\n label={t('userPage.collections')}\n />\n }\n />\n <Tab\n value=\"answers\"\n label={\n <TabLabel\n icon={<QuestionAnswerIcon className={classes.tabIcon} />}\n label={t('userPage.answers')}\n />\n }\n />\n </TabList>\n </Box>\n <TabPanel value=\"statistics\" className={classes.tabPanel}>\n <UserStatsContent userRef={identity ?? ''} />\n </TabPanel>\n <TabPanel value=\"questions\" className={classes.tabPanel}>\n <PostsContainer\n author={identity ?? ''}\n showNoQuestionsBtn={false}\n type=\"question\"\n />\n </TabPanel>\n <TabPanel value=\"articles\" className={classes.tabPanel}>\n <PostsGrid\n author={identity ?? ''}\n type=\"article\"\n showNoQuestionsBtn={false}\n />\n </TabPanel>\n <TabPanel value=\"links\" className={classes.tabPanel}>\n <PostsGrid\n author={identity ?? ''}\n type=\"link\"\n showNoQuestionsBtn={false}\n />\n </TabPanel>\n <TabPanel value=\"collections\" className={classes.tabPanel}>\n <CollectionsGrid owner={identity ?? ''} />\n </TabPanel>\n <TabPanel value=\"answers\" className={classes.tabPanel}>\n <AnswersContainer\n author={identity ?? ''}\n title={t('userPage.answers')}\n />\n </TabPanel>\n </TabContext>\n </>\n );\n};\n"],"names":["HelpOutlineIcon"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import { jsxs, jsx } from 'react/jsx-runtime';
2
- import { useQetaApi, StatsChart, SummaryStatsGrid } from '@drodil/backstage-plugin-qeta-react';
1
+ import { jsx, jsxs } from 'react/jsx-runtime';
2
+ import { useQetaApi, StatsChart } from '@drodil/backstage-plugin-qeta-react';
3
3
  import { Grid, Card, CardContent, CircularProgress } from '@material-ui/core';
4
4
 
5
5
  const UserStatsContent = (props) => {
@@ -11,13 +11,16 @@ const UserStatsContent = (props) => {
11
11
  if (error) {
12
12
  return null;
13
13
  }
14
- return /* @__PURE__ */ jsxs(Grid, { container: true, children: [
15
- /* @__PURE__ */ jsx(Grid, { item: true, xs: 12, children: /* @__PURE__ */ jsx(Card, { children: /* @__PURE__ */ jsxs(CardContent, { children: [
16
- !loading && response && /* @__PURE__ */ jsx(StatsChart, { data: response.statistics }),
17
- loading && /* @__PURE__ */ jsx(CircularProgress, {})
18
- ] }) }) }),
19
- /* @__PURE__ */ jsx(Grid, { item: true, xs: 12, children: !loading && response && /* @__PURE__ */ jsx(SummaryStatsGrid, { stats: response }) })
20
- ] });
14
+ return /* @__PURE__ */ jsx(Grid, { container: true, children: /* @__PURE__ */ jsx(Grid, { item: true, xs: 12, children: /* @__PURE__ */ jsx(Card, { children: /* @__PURE__ */ jsxs(CardContent, { children: [
15
+ !loading && response && /* @__PURE__ */ jsx(
16
+ StatsChart,
17
+ {
18
+ data: response.statistics,
19
+ summary: response.summary
20
+ }
21
+ ),
22
+ loading && /* @__PURE__ */ jsx(CircularProgress, {})
23
+ ] }) }) }) });
21
24
  };
22
25
 
23
26
  export { UserStatsContent };
@@ -1 +1 @@
1
- {"version":3,"file":"UserStatsContent.esm.js","sources":["../../../src/components/UserPage/UserStatsContent.tsx"],"sourcesContent":["import {\n StatsChart,\n SummaryStatsGrid,\n useQetaApi,\n} from '@drodil/backstage-plugin-qeta-react';\nimport { Card, CardContent, CircularProgress, Grid } from '@material-ui/core';\n\nexport const UserStatsContent = (props: { userRef: string }) => {\n const {\n value: response,\n loading,\n error,\n } = useQetaApi(api => api.getUserStats(props.userRef), []);\n if (error) {\n return null;\n }\n return (\n <Grid container>\n <Grid item xs={12}>\n <Card>\n <CardContent>\n {!loading && response && <StatsChart data={response.statistics} />}\n {loading && <CircularProgress />}\n </CardContent>\n </Card>\n </Grid>\n <Grid item xs={12}>\n {!loading && response && <SummaryStatsGrid stats={response} />}\n </Grid>\n </Grid>\n );\n};\n"],"names":[],"mappings":";;;;AAOa,MAAA,gBAAA,GAAmB,CAAC,KAA+B,KAAA;AAC9D,EAAM,MAAA;AAAA,IACJ,KAAO,EAAA,QAAA;AAAA,IACP,OAAA;AAAA,IACA;AAAA,GACF,GAAI,WAAW,CAAO,GAAA,KAAA,GAAA,CAAI,aAAa,KAAM,CAAA,OAAO,CAAG,EAAA,EAAE,CAAA;AACzD,EAAA,IAAI,KAAO,EAAA;AACT,IAAO,OAAA,IAAA;AAAA;AAET,EACE,uBAAA,IAAA,CAAC,IAAK,EAAA,EAAA,SAAA,EAAS,IACb,EAAA,QAAA,EAAA;AAAA,oBAAC,GAAA,CAAA,IAAA,EAAA,EAAK,MAAI,IAAC,EAAA,EAAA,EAAI,IACb,QAAC,kBAAA,GAAA,CAAA,IAAA,EAAA,EACC,+BAAC,WACE,EAAA,EAAA,QAAA,EAAA;AAAA,MAAA,CAAC,WAAW,QAAY,oBAAA,GAAA,CAAC,UAAW,EAAA,EAAA,IAAA,EAAM,SAAS,UAAY,EAAA,CAAA;AAAA,MAC/D,OAAA,wBAAY,gBAAiB,EAAA,EAAA;AAAA,KAAA,EAChC,GACF,CACF,EAAA,CAAA;AAAA,oBACC,GAAA,CAAA,IAAA,EAAA,EAAK,IAAI,EAAA,IAAA,EAAC,EAAI,EAAA,EAAA,EACZ,QAAC,EAAA,CAAA,OAAA,IAAW,QAAY,oBAAA,GAAA,CAAC,gBAAiB,EAAA,EAAA,KAAA,EAAO,UAAU,CAC9D,EAAA;AAAA,GACF,EAAA,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"UserStatsContent.esm.js","sources":["../../../src/components/UserPage/UserStatsContent.tsx"],"sourcesContent":["import { StatsChart, useQetaApi } from '@drodil/backstage-plugin-qeta-react';\nimport { Card, CardContent, CircularProgress, Grid } from '@material-ui/core';\n\nexport const UserStatsContent = (props: { userRef: string }) => {\n const {\n value: response,\n loading,\n error,\n } = useQetaApi(api => api.getUserStats(props.userRef), []);\n if (error) {\n return null;\n }\n return (\n <Grid container>\n <Grid item xs={12}>\n <Card>\n <CardContent>\n {!loading && response && (\n <StatsChart\n data={response.statistics}\n summary={response.summary as unknown as Record<string, number>}\n />\n )}\n {loading && <CircularProgress />}\n </CardContent>\n </Card>\n </Grid>\n </Grid>\n );\n};\n"],"names":[],"mappings":";;;;AAGa,MAAA,gBAAA,GAAmB,CAAC,KAA+B,KAAA;AAC9D,EAAM,MAAA;AAAA,IACJ,KAAO,EAAA,QAAA;AAAA,IACP,OAAA;AAAA,IACA;AAAA,GACF,GAAI,WAAW,CAAO,GAAA,KAAA,GAAA,CAAI,aAAa,KAAM,CAAA,OAAO,CAAG,EAAA,EAAE,CAAA;AACzD,EAAA,IAAI,KAAO,EAAA;AACT,IAAO,OAAA,IAAA;AAAA;AAET,EAAA,uBACG,GAAA,CAAA,IAAA,EAAA,EAAK,SAAS,EAAA,IAAA,EACb,QAAC,kBAAA,GAAA,CAAA,IAAA,EAAA,EAAK,IAAI,EAAA,IAAA,EAAC,EAAI,EAAA,EAAA,EACb,QAAC,kBAAA,GAAA,CAAA,IAAA,EAAA,EACC,+BAAC,WACE,EAAA,EAAA,QAAA,EAAA;AAAA,IAAA,CAAC,WAAW,QACX,oBAAA,GAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QACC,MAAM,QAAS,CAAA,UAAA;AAAA,QACf,SAAS,QAAS,CAAA;AAAA;AAAA,KACpB;AAAA,IAED,OAAA,wBAAY,gBAAiB,EAAA,EAAA;AAAA,GAChC,EAAA,CAAA,EACF,GACF,CACF,EAAA,CAAA;AAEJ;;;;"}
@@ -1,20 +1,19 @@
1
- import { jsxs, jsx } from 'react/jsx-runtime';
2
- import { qetaTranslationRef, UsersGrid, FollowedUsersList, PostHighlightListContainer } from '@drodil/backstage-plugin-qeta-react';
3
- import { ContentHeader } from '@backstage/core-components';
4
- import { Grid } from '@material-ui/core';
1
+ import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
2
+ import { qetaTranslationRef, ContentHeader, UsersGrid } from '@drodil/backstage-plugin-qeta-react';
3
+ import PeopleOutline from '@material-ui/icons/PeopleOutline';
5
4
  import { useTranslationRef } from '@backstage/core-plugin-api/alpha';
6
5
 
7
6
  const UsersPage = () => {
8
7
  const { t } = useTranslationRef(qetaTranslationRef);
9
- return /* @__PURE__ */ jsxs(Grid, { container: true, spacing: 4, children: [
10
- /* @__PURE__ */ jsxs(Grid, { item: true, md: 12, lg: 9, xl: 10, children: [
11
- /* @__PURE__ */ jsx(ContentHeader, { title: t("usersPage.title") }),
12
- /* @__PURE__ */ jsx(UsersGrid, {})
13
- ] }),
14
- /* @__PURE__ */ jsxs(Grid, { item: true, lg: 3, xl: 2, children: [
15
- /* @__PURE__ */ jsx(FollowedUsersList, {}),
16
- /* @__PURE__ */ jsx(PostHighlightListContainer, {})
17
- ] })
8
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
9
+ /* @__PURE__ */ jsx(
10
+ ContentHeader,
11
+ {
12
+ title: t("usersPage.title"),
13
+ titleIcon: /* @__PURE__ */ jsx(PeopleOutline, { fontSize: "large" })
14
+ }
15
+ ),
16
+ /* @__PURE__ */ jsx(UsersGrid, {})
18
17
  ] });
19
18
  };
20
19
 
@@ -1 +1 @@
1
- {"version":3,"file":"UsersPage.esm.js","sources":["../../../src/components/UsersPage/UsersPage.tsx"],"sourcesContent":["import {\n FollowedUsersList,\n PostHighlightListContainer,\n qetaTranslationRef,\n UsersGrid,\n} from '@drodil/backstage-plugin-qeta-react';\nimport { ContentHeader } from '@backstage/core-components';\nimport { Grid } from '@material-ui/core';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\n\nexport const UsersPage = () => {\n const { t } = useTranslationRef(qetaTranslationRef);\n\n return (\n <Grid container spacing={4}>\n <Grid item md={12} lg={9} xl={10}>\n <ContentHeader title={t('usersPage.title')} />\n <UsersGrid />\n </Grid>\n <Grid item lg={3} xl={2}>\n <FollowedUsersList />\n <PostHighlightListContainer />\n </Grid>\n </Grid>\n );\n};\n"],"names":[],"mappings":";;;;;;AAUO,MAAM,YAAY,MAAM;AAC7B,EAAA,MAAM,EAAE,CAAA,EAAM,GAAA,iBAAA,CAAkB,kBAAkB,CAAA;AAElD,EAAA,uBACG,IAAA,CAAA,IAAA,EAAA,EAAK,SAAS,EAAA,IAAA,EAAC,SAAS,CACvB,EAAA,QAAA,EAAA;AAAA,oBAAC,IAAA,CAAA,IAAA,EAAA,EAAK,MAAI,IAAC,EAAA,EAAA,EAAI,IAAI,EAAI,EAAA,CAAA,EAAG,IAAI,EAC5B,EAAA,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,aAAc,EAAA,EAAA,KAAA,EAAO,CAAE,CAAA,iBAAiB,CAAG,EAAA,CAAA;AAAA,0BAC3C,SAAU,EAAA,EAAA;AAAA,KACb,EAAA,CAAA;AAAA,yBACC,IAAK,EAAA,EAAA,IAAA,EAAI,MAAC,EAAI,EAAA,CAAA,EAAG,IAAI,CACpB,EAAA,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,iBAAkB,EAAA,EAAA,CAAA;AAAA,0BAClB,0BAA2B,EAAA,EAAA;AAAA,KAC9B,EAAA;AAAA,GACF,EAAA,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"UsersPage.esm.js","sources":["../../../src/components/UsersPage/UsersPage.tsx"],"sourcesContent":["import {\n ContentHeader,\n qetaTranslationRef,\n UsersGrid,\n} from '@drodil/backstage-plugin-qeta-react';\nimport PeopleOutline from '@material-ui/icons/PeopleOutline';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\n\nexport const UsersPage = () => {\n const { t } = useTranslationRef(qetaTranslationRef);\n\n return (\n <>\n <ContentHeader\n title={t('usersPage.title')}\n titleIcon={<PeopleOutline fontSize=\"large\" />}\n />\n <UsersGrid />\n </>\n );\n};\n"],"names":[],"mappings":";;;;;AAQO,MAAM,YAAY,MAAM;AAC7B,EAAA,MAAM,EAAE,CAAA,EAAM,GAAA,iBAAA,CAAkB,kBAAkB,CAAA;AAElD,EAAA,uBAEI,IAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,aAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO,EAAE,iBAAiB,CAAA;AAAA,QAC1B,SAAW,kBAAA,GAAA,CAAC,aAAc,EAAA,EAAA,QAAA,EAAS,OAAQ,EAAA;AAAA;AAAA,KAC7C;AAAA,wBACC,SAAU,EAAA,EAAA;AAAA,GACb,EAAA,CAAA;AAEJ;;;;"}
@@ -1,9 +1,9 @@
1
1
  import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
2
2
  import { useParams, useSearchParams } from 'react-router-dom';
3
3
  import { filterTags } from '@drodil/backstage-plugin-qeta-common';
4
- import { qetaTranslationRef, PostForm } from '@drodil/backstage-plugin-qeta-react';
4
+ import { qetaTranslationRef, ContentHeader, PostForm } from '@drodil/backstage-plugin-qeta-react';
5
5
  import { useEntityPresentation } from '@backstage/plugin-catalog-react';
6
- import { ContentHeader, InfoCard } from '@backstage/core-components';
6
+ import { InfoCard } from '@backstage/core-components';
7
7
  import { Grid } from '@material-ui/core';
8
8
  import { useTranslationRef } from '@backstage/core-plugin-api/alpha';
9
9
 
@@ -1 +1 @@
1
- {"version":3,"file":"WritePage.esm.js","sources":["../../../src/components/WritePage/WritePage.tsx"],"sourcesContent":["import { useParams, useSearchParams } from 'react-router-dom';\nimport { filterTags } from '@drodil/backstage-plugin-qeta-common';\nimport {\n PostForm,\n qetaTranslationRef,\n} from '@drodil/backstage-plugin-qeta-react';\nimport { useEntityPresentation } from '@backstage/plugin-catalog-react';\nimport { ContentHeader, InfoCard } from '@backstage/core-components';\nimport { Grid } from '@material-ui/core';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\n\nexport const WritePage = () => {\n const { id } = useParams();\n const [searchParams] = useSearchParams();\n const entity = searchParams.get('entity') ?? undefined;\n const entityPage = searchParams.get('entityPage') === 'true';\n const tags = filterTags(searchParams.get('tags'));\n const { t } = useTranslationRef(qetaTranslationRef);\n let title;\n if (id) {\n title = t('writePage.title.existingArticle');\n } else if (entity) {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const representation = useEntityPresentation(entity);\n title = t('writePage.title.entityArticle', {\n entity: representation.primaryTitle,\n });\n } else {\n title = t('writePage.title.newArticle');\n }\n\n return (\n <>\n <ContentHeader title={title} />\n <Grid container spacing={3} direction=\"column\">\n <Grid item>\n <InfoCard>\n <PostForm\n id={id}\n entity={entity}\n entityPage={entityPage}\n tags={tags}\n type=\"article\"\n />\n </InfoCard>\n </Grid>\n </Grid>\n </>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;AAWO,MAAM,YAAY,MAAM;AAC7B,EAAM,MAAA,EAAE,EAAG,EAAA,GAAI,SAAU,EAAA;AACzB,EAAM,MAAA,CAAC,YAAY,CAAA,GAAI,eAAgB,EAAA;AACvC,EAAA,MAAM,MAAS,GAAA,YAAA,CAAa,GAAI,CAAA,QAAQ,CAAK,IAAA,KAAA,CAAA;AAC7C,EAAA,MAAM,UAAa,GAAA,YAAA,CAAa,GAAI,CAAA,YAAY,CAAM,KAAA,MAAA;AACtD,EAAA,MAAM,IAAO,GAAA,UAAA,CAAW,YAAa,CAAA,GAAA,CAAI,MAAM,CAAC,CAAA;AAChD,EAAA,MAAM,EAAE,CAAA,EAAM,GAAA,iBAAA,CAAkB,kBAAkB,CAAA;AAClD,EAAI,IAAA,KAAA;AACJ,EAAA,IAAI,EAAI,EAAA;AACN,IAAA,KAAA,GAAQ,EAAE,iCAAiC,CAAA;AAAA,aAClC,MAAQ,EAAA;AAEjB,IAAM,MAAA,cAAA,GAAiB,sBAAsB,MAAM,CAAA;AACnD,IAAA,KAAA,GAAQ,EAAE,+BAAiC,EAAA;AAAA,MACzC,QAAQ,cAAe,CAAA;AAAA,KACxB,CAAA;AAAA,GACI,MAAA;AACL,IAAA,KAAA,GAAQ,EAAE,4BAA4B,CAAA;AAAA;AAGxC,EAAA,uBAEI,IAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,iBAAc,KAAc,EAAA,CAAA;AAAA,oBAC5B,GAAA,CAAA,IAAA,EAAA,EAAK,SAAS,EAAA,IAAA,EAAC,OAAS,EAAA,CAAA,EAAG,SAAU,EAAA,QAAA,EACpC,QAAC,kBAAA,GAAA,CAAA,IAAA,EAAA,EAAK,IAAI,EAAA,IAAA,EACR,8BAAC,QACC,EAAA,EAAA,QAAA,kBAAA,GAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,EAAA;AAAA,QACA,MAAA;AAAA,QACA,UAAA;AAAA,QACA,IAAA;AAAA,QACA,IAAK,EAAA;AAAA;AAAA,KACP,EACF,GACF,CACF,EAAA;AAAA,GACF,EAAA,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"WritePage.esm.js","sources":["../../../src/components/WritePage/WritePage.tsx"],"sourcesContent":["import { useParams, useSearchParams } from 'react-router-dom';\nimport { filterTags } from '@drodil/backstage-plugin-qeta-common';\nimport {\n ContentHeader,\n PostForm,\n qetaTranslationRef,\n} from '@drodil/backstage-plugin-qeta-react';\nimport { useEntityPresentation } from '@backstage/plugin-catalog-react';\nimport { InfoCard } from '@backstage/core-components';\nimport { Grid } from '@material-ui/core';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\n\nexport const WritePage = () => {\n const { id } = useParams();\n const [searchParams] = useSearchParams();\n const entity = searchParams.get('entity') ?? undefined;\n const entityPage = searchParams.get('entityPage') === 'true';\n const tags = filterTags(searchParams.get('tags'));\n const { t } = useTranslationRef(qetaTranslationRef);\n let title;\n if (id) {\n title = t('writePage.title.existingArticle');\n } else if (entity) {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const representation = useEntityPresentation(entity);\n title = t('writePage.title.entityArticle', {\n entity: representation.primaryTitle,\n });\n } else {\n title = t('writePage.title.newArticle');\n }\n\n return (\n <>\n <ContentHeader title={title} />\n <Grid container spacing={3} direction=\"column\">\n <Grid item>\n <InfoCard>\n <PostForm\n id={id}\n entity={entity}\n entityPage={entityPage}\n tags={tags}\n type=\"article\"\n />\n </InfoCard>\n </Grid>\n </Grid>\n </>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;AAYO,MAAM,YAAY,MAAM;AAC7B,EAAM,MAAA,EAAE,EAAG,EAAA,GAAI,SAAU,EAAA;AACzB,EAAM,MAAA,CAAC,YAAY,CAAA,GAAI,eAAgB,EAAA;AACvC,EAAA,MAAM,MAAS,GAAA,YAAA,CAAa,GAAI,CAAA,QAAQ,CAAK,IAAA,KAAA,CAAA;AAC7C,EAAA,MAAM,UAAa,GAAA,YAAA,CAAa,GAAI,CAAA,YAAY,CAAM,KAAA,MAAA;AACtD,EAAA,MAAM,IAAO,GAAA,UAAA,CAAW,YAAa,CAAA,GAAA,CAAI,MAAM,CAAC,CAAA;AAChD,EAAA,MAAM,EAAE,CAAA,EAAM,GAAA,iBAAA,CAAkB,kBAAkB,CAAA;AAClD,EAAI,IAAA,KAAA;AACJ,EAAA,IAAI,EAAI,EAAA;AACN,IAAA,KAAA,GAAQ,EAAE,iCAAiC,CAAA;AAAA,aAClC,MAAQ,EAAA;AAEjB,IAAM,MAAA,cAAA,GAAiB,sBAAsB,MAAM,CAAA;AACnD,IAAA,KAAA,GAAQ,EAAE,+BAAiC,EAAA;AAAA,MACzC,QAAQ,cAAe,CAAA;AAAA,KACxB,CAAA;AAAA,GACI,MAAA;AACL,IAAA,KAAA,GAAQ,EAAE,4BAA4B,CAAA;AAAA;AAGxC,EAAA,uBAEI,IAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,iBAAc,KAAc,EAAA,CAAA;AAAA,oBAC5B,GAAA,CAAA,IAAA,EAAA,EAAK,SAAS,EAAA,IAAA,EAAC,OAAS,EAAA,CAAA,EAAG,SAAU,EAAA,QAAA,EACpC,QAAC,kBAAA,GAAA,CAAA,IAAA,EAAA,EAAK,IAAI,EAAA,IAAA,EACR,8BAAC,QACC,EAAA,EAAA,QAAA,kBAAA,GAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,EAAA;AAAA,QACA,MAAA;AAAA,QACA,UAAA;AAAA,QACA,IAAA;AAAA,QACA,IAAK,EAAA;AAAA;AAAA,KACP,EACF,GACF,CACF,EAAA;AAAA,GACF,EAAA,CAAA;AAEJ;;;;"}