@drodil/backstage-plugin-qeta-react 3.29.0 → 3.29.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/dist/components/ArticleContent/ArticleContent.esm.js +0 -1
  2. package/dist/components/ArticleContent/ArticleContent.esm.js.map +1 -1
  3. package/dist/components/AuthorBox/AuthorBox.esm.js +34 -46
  4. package/dist/components/AuthorBox/AuthorBox.esm.js.map +1 -1
  5. package/dist/components/CommentSection/CommentForm.esm.js +1 -0
  6. package/dist/components/CommentSection/CommentForm.esm.js.map +1 -1
  7. package/dist/components/CommentSection/CommentListItem.esm.js +0 -2
  8. package/dist/components/CommentSection/CommentListItem.esm.js.map +1 -1
  9. package/dist/components/CommentSection/CommentSection.esm.js +7 -2
  10. package/dist/components/CommentSection/CommentSection.esm.js.map +1 -1
  11. package/dist/components/LeftMenu/LeftMenu.esm.js +0 -1
  12. package/dist/components/LeftMenu/LeftMenu.esm.js.map +1 -1
  13. package/dist/components/MarkdownRenderer/MarkdownRenderer.esm.js +1 -2
  14. package/dist/components/MarkdownRenderer/MarkdownRenderer.esm.js.map +1 -1
  15. package/dist/components/PostHighlightList/PostHighlightList.esm.js +0 -2
  16. package/dist/components/PostHighlightList/PostHighlightList.esm.js.map +1 -1
  17. package/dist/components/PostsContainer/PostListItem.esm.js +8 -10
  18. package/dist/components/PostsContainer/PostListItem.esm.js.map +1 -1
  19. package/dist/components/PostsGrid/PostsGridItem.esm.js +4 -5
  20. package/dist/components/PostsGrid/PostsGridItem.esm.js.map +1 -1
  21. package/dist/components/QuestionCard/QuestionCard.esm.js +2 -2
  22. package/dist/components/QuestionCard/QuestionCard.esm.js.map +1 -1
  23. package/dist/components/SearchBar/SearchBar.esm.js +1 -2
  24. package/dist/components/SearchBar/SearchBar.esm.js.map +1 -1
  25. package/dist/components/SuggestionsCard/SuggestionsCard.esm.js +1 -2
  26. package/dist/components/SuggestionsCard/SuggestionsCard.esm.js.map +1 -1
  27. package/dist/components/TopRankingUsersCard/TopRankingUsersCard.esm.js +1 -2
  28. package/dist/components/TopRankingUsersCard/TopRankingUsersCard.esm.js.map +1 -1
  29. package/dist/components/Utility/RightList.esm.js +1 -1
  30. package/dist/components/Utility/RightList.esm.js.map +1 -1
  31. package/dist/components/Utility/SmallAvatar.esm.js +0 -1
  32. package/dist/components/Utility/SmallAvatar.esm.js.map +1 -1
  33. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"TopRankingUsersCard.esm.js","sources":["../../../src/components/TopRankingUsersCard/TopRankingUsersCard.tsx"],"sourcesContent":["import { ReactElement, ReactNode } from 'react';\nimport {\n CardTab,\n Progress,\n TabbedCard,\n WarningPanel,\n} from '@backstage/core-components';\nimport {\n Avatar,\n List,\n ListItem,\n ListItemAvatar,\n ListItemText,\n makeStyles,\n Typography,\n Paper,\n Box,\n} from '@material-ui/core';\nimport { StatisticResponse } from '@drodil/backstage-plugin-qeta-common';\nimport { TrophyIcon } from './TrophyIcon';\nimport { UserLink } from '../Links';\nimport { useQetaApi } from '../../hooks';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { qetaTranslationRef } from '../../translation.ts';\n\nconst useStyles = makeStyles(theme => {\n return {\n root: {\n '& .MuiTabbedCard-root': {\n borderRadius: '12px',\n boxShadow: '0 4px 12px rgba(0, 0, 0, 0.1)',\n },\n '& .MuiCardHeader-root': {\n padding: theme.spacing(2, 3),\n borderBottom: `1px solid ${theme.palette.divider}`,\n },\n '& .MuiTabs-root': {\n backgroundColor: theme.palette.background.paper,\n borderBottom: `1px solid ${theme.palette.divider}`,\n },\n },\n trophyIcon: {\n backgroundColor: theme.palette.background.paper,\n color: theme.palette.text.primary,\n borderRadius: '50%',\n boxSizing: 'border-box',\n padding: '0.5rem',\n height: 48,\n width: 48,\n boxShadow: '0 2px 8px rgba(0, 0, 0, 0.1)',\n transition: 'transform 0.2s ease-in-out',\n '&:hover': {\n transform: 'scale(1.05)',\n },\n },\n votesText: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n marginLeft: '16px',\n backgroundColor: theme.palette.background.paper,\n padding: theme.spacing(0.5, 2),\n borderRadius: '20px',\n boxShadow: '0 2px 4px rgba(0, 0, 0, 0.05)',\n },\n rankingCard: {\n padding: theme.spacing(2),\n },\n rankingCardDescription: {\n color: theme.palette.text.secondary,\n marginBottom: theme.spacing(2),\n fontSize: '0.9rem',\n },\n rankingCardList: {\n '& .MuiListItem-root': {\n marginBottom: theme.spacing(1),\n borderRadius: '8px',\n transition: 'background-color 0.2s ease-in-out',\n '&:hover': {\n backgroundColor: theme.palette.action.hover,\n },\n },\n },\n rankingRow: {\n display: 'flex',\n alignItems: 'center',\n padding: theme.spacing(1, 2),\n },\n userInfo: {\n display: 'flex',\n alignItems: 'center',\n flex: 1,\n },\n position: {\n fontWeight: 600,\n marginRight: theme.spacing(1),\n color: theme.palette.text.primary,\n },\n divider: {\n margin: theme.spacing(2, 0),\n opacity: 0.5,\n },\n };\n});\n\ntype RankingIcon = {\n iconsByRanking: Map<number, ReactNode>;\n userRankingIcon: ReactNode;\n};\n\nconst DefaultRankingIcons = new Map<number, ReactNode>([\n [\n 1,\n <TrophyIcon\n style={{ color: '#DAA520', height: '2.2rem', width: '2.2rem' }}\n />,\n ],\n [\n 2,\n <TrophyIcon\n style={{ color: '#C0C0C0', height: '2.1rem', width: '2.1rem' }}\n />,\n ],\n [\n 3,\n <TrophyIcon style={{ color: '#B87333', height: '2rem', width: '2rem' }} />,\n ],\n]);\n\nconst DefaultUserIcon = (\n <TrophyIcon style={{ height: '2rem', width: '2rem' }} />\n);\n\nconst getOrdinal = (n: number) => {\n if (n % 10 === 1 && n % 100 !== 11) {\n return `${n}st`;\n } else if (n % 10 === 2 && n % 100 !== 12) {\n return `${n}nd`;\n } else if (n % 10 === 3 && n % 100 !== 13) {\n return `${n}rd`;\n }\n\n return `${n}th`;\n};\n\nexport const RankingRow = (props: {\n userRef?: string;\n total: number;\n position: number;\n rankingIcon?: RankingIcon;\n unit: string;\n}) => {\n const classes = useStyles();\n const userRef = props.userRef;\n\n const ordinalPosition = props?.position ? getOrdinal(props?.position) : '';\n\n const userIcon = props.rankingIcon?.userRankingIcon\n ? props.rankingIcon?.userRankingIcon\n : DefaultUserIcon;\n\n const topRankingIcon = props.rankingIcon\n ? props.rankingIcon.iconsByRanking.get(Number(props?.position))\n : DefaultRankingIcons.get(Number(props?.position)) || DefaultUserIcon;\n\n const rankingIcon = props?.position > 3 ? userIcon : topRankingIcon;\n\n return (\n <ListItem className={classes.rankingRow}>\n <ListItemAvatar>\n <Avatar className={classes.trophyIcon}>{rankingIcon}</Avatar>\n </ListItemAvatar>\n\n <ListItemText\n disableTypography\n className={classes.userInfo}\n primary={\n <Box display=\"flex\" alignItems=\"center\">\n <Typography className={classes.position} variant=\"subtitle1\">\n {ordinalPosition}\n </Typography>\n <UserLink entityRef={userRef ?? ''} />\n </Box>\n }\n />\n\n <div className={classes.votesText}>\n <Typography variant=\"subtitle1\" style={{ fontWeight: 500 }}>\n {props?.total} {props.unit}\n </Typography>\n </div>\n </ListItem>\n );\n};\n\nexport const RankingCard = (props: {\n limit?: number;\n description: string;\n statistic?: StatisticResponse;\n unit: string;\n}) => {\n const classes = useStyles();\n const rankingStats = props.limit\n ? props.statistic?.ranking.slice(0, props.limit)\n : props.statistic?.ranking;\n\n return (\n <Paper elevation={0} className={classes.rankingCard}>\n <Typography className={classes.rankingCardDescription}>\n {props.description}\n </Typography>\n <List className={classes.rankingCardList}>\n {rankingStats?.map(authorStats => (\n <RankingRow\n total={authorStats.total || 0}\n position={authorStats.position || 0}\n userRef={authorStats.author}\n unit={props.unit}\n key={authorStats.author}\n />\n ))}\n {!rankingStats?.some(\n authorStats =>\n authorStats.author === props.statistic?.loggedUser?.author,\n ) && (\n <>\n <hr className={classes.divider} />\n <RankingRow\n total={props.statistic?.loggedUser?.total || 0}\n position={props.statistic?.loggedUser?.position || 0}\n userRef={props.statistic?.loggedUser?.author}\n unit={props.unit}\n />\n </>\n )}\n </List>\n </Paper>\n );\n};\n\nexport const TopRankingUsers = (props: {\n title?: string;\n hideTitle?: boolean;\n limit?: number;\n}) => {\n const classes = useStyles();\n const { t } = useTranslationRef(qetaTranslationRef);\n const {\n value: topStatistics,\n loading,\n error,\n } = useQetaApi(api =>\n api.getTopStatisticsHomepage({\n options: { limit: 50 },\n }),\n );\n\n const tabData = [\n {\n title: t('statistics.mostQuestions.title'),\n description: t('statistics.mostQuestions.description'),\n unit: 'questions',\n },\n {\n title: t('statistics.mostAnswers.title'),\n description: t('statistics.mostAnswers.description'),\n unit: 'answers',\n },\n {\n title: t('statistics.topVotedQuestions.title'),\n description: t('statistics.topVotedQuestions.description'),\n unit: 'votes',\n },\n {\n title: t('statistics.topVotedAnswers.title'),\n description: t('statistics.topVotedAnswers.description'),\n unit: 'votes',\n },\n {\n title: t('statistics.topVotedCorrectAnswers.title'),\n description: t('statistics.topVotedCorrectAnswers.description'),\n unit: 'votes',\n },\n ];\n\n if ((error || topStatistics === undefined) && !loading) {\n return (\n <WarningPanel severity=\"error\" title={t('statistics.errorLoading')}>\n {error?.message}\n </WarningPanel>\n );\n }\n\n let content: ReactElement[];\n\n if (loading) {\n content = [\n <CardTab>\n <Box display=\"flex\" justifyContent=\"center\" p={3}>\n <Progress />\n </Box>\n </CardTab>,\n ];\n } else if (topStatistics && topStatistics.length > 0) {\n content = topStatistics?.map((stats, index) => {\n return (\n <CardTab label={tabData[index].title} key={tabData[index].title}>\n <RankingCard\n description={tabData[index].description}\n limit={props.limit}\n statistic={stats}\n unit={tabData[index].unit}\n />\n </CardTab>\n );\n });\n } else {\n content = [\n <CardTab>\n <Box display=\"flex\" justifyContent=\"center\" p={3}>\n {t('statistics.notAvailable')}\n </Box>\n </CardTab>,\n ];\n }\n\n return (\n <div className={classes.root}>\n <TabbedCard title={props.title || t('statistics.ranking')}>\n {content}\n </TabbedCard>\n </div>\n );\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TopRankingUsersCard.esm.js","sources":["../../../src/components/TopRankingUsersCard/TopRankingUsersCard.tsx"],"sourcesContent":["import { ReactElement, ReactNode } from 'react';\nimport {\n CardTab,\n Progress,\n TabbedCard,\n WarningPanel,\n} from '@backstage/core-components';\nimport {\n Avatar,\n Box,\n List,\n ListItem,\n ListItemAvatar,\n ListItemText,\n makeStyles,\n Paper,\n Typography,\n} from '@material-ui/core';\nimport { StatisticResponse } from '@drodil/backstage-plugin-qeta-common';\nimport { TrophyIcon } from './TrophyIcon';\nimport { UserLink } from '../Links';\nimport { useQetaApi } from '../../hooks';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { qetaTranslationRef } from '../../translation.ts';\n\nconst useStyles = makeStyles(theme => {\n return {\n root: {\n '& .MuiTabbedCard-root': {\n borderRadius: '12px',\n boxShadow: '0 4px 12px rgba(0, 0, 0, 0.1)',\n },\n '& .MuiCardHeader-root': {\n padding: theme.spacing(2, 3),\n borderBottom: `1px solid ${theme.palette.divider}`,\n },\n '& .MuiTabs-root': {\n backgroundColor: theme.palette.background.paper,\n borderBottom: `1px solid ${theme.palette.divider}`,\n },\n },\n trophyIcon: {\n backgroundColor: theme.palette.background.paper,\n color: theme.palette.text.primary,\n borderRadius: '50%',\n boxSizing: 'border-box',\n padding: '0.5rem',\n height: 48,\n width: 48,\n boxShadow: '0 2px 8px rgba(0, 0, 0, 0.1)',\n transition: 'transform 0.2s ease-in-out',\n '&:hover': {\n transform: 'scale(1.05)',\n },\n },\n votesText: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n marginLeft: '16px',\n backgroundColor: theme.palette.background.paper,\n padding: theme.spacing(0.5, 2),\n borderRadius: '20px',\n boxShadow: '0 2px 4px rgba(0, 0, 0, 0.05)',\n },\n rankingCard: {\n padding: theme.spacing(2),\n },\n rankingCardDescription: {\n color: theme.palette.text.secondary,\n marginBottom: theme.spacing(2),\n },\n rankingCardList: {\n '& .MuiListItem-root': {\n marginBottom: theme.spacing(1),\n borderRadius: '8px',\n transition: 'background-color 0.2s ease-in-out',\n '&:hover': {\n backgroundColor: theme.palette.action.hover,\n },\n },\n },\n rankingRow: {\n display: 'flex',\n alignItems: 'center',\n padding: theme.spacing(1, 2),\n },\n userInfo: {\n display: 'flex',\n alignItems: 'center',\n flex: 1,\n },\n position: {\n fontWeight: 600,\n marginRight: theme.spacing(1),\n color: theme.palette.text.primary,\n },\n divider: {\n margin: theme.spacing(2, 0),\n opacity: 0.5,\n },\n };\n});\n\ntype RankingIcon = {\n iconsByRanking: Map<number, ReactNode>;\n userRankingIcon: ReactNode;\n};\n\nconst DefaultRankingIcons = new Map<number, ReactNode>([\n [\n 1,\n <TrophyIcon\n style={{ color: '#DAA520', height: '2.2rem', width: '2.2rem' }}\n />,\n ],\n [\n 2,\n <TrophyIcon\n style={{ color: '#C0C0C0', height: '2.1rem', width: '2.1rem' }}\n />,\n ],\n [\n 3,\n <TrophyIcon style={{ color: '#B87333', height: '2rem', width: '2rem' }} />,\n ],\n]);\n\nconst DefaultUserIcon = (\n <TrophyIcon style={{ height: '2rem', width: '2rem' }} />\n);\n\nconst getOrdinal = (n: number) => {\n if (n % 10 === 1 && n % 100 !== 11) {\n return `${n}st`;\n } else if (n % 10 === 2 && n % 100 !== 12) {\n return `${n}nd`;\n } else if (n % 10 === 3 && n % 100 !== 13) {\n return `${n}rd`;\n }\n\n return `${n}th`;\n};\n\nexport const RankingRow = (props: {\n userRef?: string;\n total: number;\n position: number;\n rankingIcon?: RankingIcon;\n unit: string;\n}) => {\n const classes = useStyles();\n const userRef = props.userRef;\n\n const ordinalPosition = props?.position ? getOrdinal(props?.position) : '';\n\n const userIcon = props.rankingIcon?.userRankingIcon\n ? props.rankingIcon?.userRankingIcon\n : DefaultUserIcon;\n\n const topRankingIcon = props.rankingIcon\n ? props.rankingIcon.iconsByRanking.get(Number(props?.position))\n : DefaultRankingIcons.get(Number(props?.position)) || DefaultUserIcon;\n\n const rankingIcon = props?.position > 3 ? userIcon : topRankingIcon;\n\n return (\n <ListItem className={classes.rankingRow}>\n <ListItemAvatar>\n <Avatar className={classes.trophyIcon}>{rankingIcon}</Avatar>\n </ListItemAvatar>\n\n <ListItemText\n disableTypography\n className={classes.userInfo}\n primary={\n <Box display=\"flex\" alignItems=\"center\">\n <Typography className={classes.position} variant=\"subtitle1\">\n {ordinalPosition}\n </Typography>\n <UserLink entityRef={userRef ?? ''} />\n </Box>\n }\n />\n\n <div className={classes.votesText}>\n <Typography variant=\"subtitle1\" style={{ fontWeight: 500 }}>\n {props?.total} {props.unit}\n </Typography>\n </div>\n </ListItem>\n );\n};\n\nexport const RankingCard = (props: {\n limit?: number;\n description: string;\n statistic?: StatisticResponse;\n unit: string;\n}) => {\n const classes = useStyles();\n const rankingStats = props.limit\n ? props.statistic?.ranking.slice(0, props.limit)\n : props.statistic?.ranking;\n\n return (\n <Paper elevation={0} className={classes.rankingCard}>\n <Typography className={classes.rankingCardDescription}>\n {props.description}\n </Typography>\n <List className={classes.rankingCardList}>\n {rankingStats?.map(authorStats => (\n <RankingRow\n total={authorStats.total || 0}\n position={authorStats.position || 0}\n userRef={authorStats.author}\n unit={props.unit}\n key={authorStats.author}\n />\n ))}\n {!rankingStats?.some(\n authorStats =>\n authorStats.author === props.statistic?.loggedUser?.author,\n ) && (\n <>\n <hr className={classes.divider} />\n <RankingRow\n total={props.statistic?.loggedUser?.total || 0}\n position={props.statistic?.loggedUser?.position || 0}\n userRef={props.statistic?.loggedUser?.author}\n unit={props.unit}\n />\n </>\n )}\n </List>\n </Paper>\n );\n};\n\nexport const TopRankingUsers = (props: {\n title?: string;\n hideTitle?: boolean;\n limit?: number;\n}) => {\n const classes = useStyles();\n const { t } = useTranslationRef(qetaTranslationRef);\n const {\n value: topStatistics,\n loading,\n error,\n } = useQetaApi(api =>\n api.getTopStatisticsHomepage({\n options: { limit: 50 },\n }),\n );\n\n const tabData = [\n {\n title: t('statistics.mostQuestions.title'),\n description: t('statistics.mostQuestions.description'),\n unit: 'questions',\n },\n {\n title: t('statistics.mostAnswers.title'),\n description: t('statistics.mostAnswers.description'),\n unit: 'answers',\n },\n {\n title: t('statistics.topVotedQuestions.title'),\n description: t('statistics.topVotedQuestions.description'),\n unit: 'votes',\n },\n {\n title: t('statistics.topVotedAnswers.title'),\n description: t('statistics.topVotedAnswers.description'),\n unit: 'votes',\n },\n {\n title: t('statistics.topVotedCorrectAnswers.title'),\n description: t('statistics.topVotedCorrectAnswers.description'),\n unit: 'votes',\n },\n ];\n\n if ((error || topStatistics === undefined) && !loading) {\n return (\n <WarningPanel severity=\"error\" title={t('statistics.errorLoading')}>\n {error?.message}\n </WarningPanel>\n );\n }\n\n let content: ReactElement[];\n\n if (loading) {\n content = [\n <CardTab>\n <Box display=\"flex\" justifyContent=\"center\" p={3}>\n <Progress />\n </Box>\n </CardTab>,\n ];\n } else if (topStatistics && topStatistics.length > 0) {\n content = topStatistics?.map((stats, index) => {\n return (\n <CardTab label={tabData[index].title} key={tabData[index].title}>\n <RankingCard\n description={tabData[index].description}\n limit={props.limit}\n statistic={stats}\n unit={tabData[index].unit}\n />\n </CardTab>\n );\n });\n } else {\n content = [\n <CardTab>\n <Box display=\"flex\" justifyContent=\"center\" p={3}>\n {t('statistics.notAvailable')}\n </Box>\n </CardTab>,\n ];\n }\n\n return (\n <div className={classes.root}>\n <TabbedCard title={props.title || t('statistics.ranking')}>\n {content}\n </TabbedCard>\n </div>\n );\n};\n"],"names":[],"mappings":"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"}
@@ -12,7 +12,7 @@ const useStyles = makeStyles((theme) => ({
12
12
  whiteSpace: "nowrap",
13
13
  overflow: "hidden",
14
14
  textOverflow: "ellipsis",
15
- lineHeight: "1rem"
15
+ lineHeight: 1.5
16
16
  },
17
17
  list: {
18
18
  "& li": {
@@ -1 +1 @@
1
- {"version":3,"file":"RightList.esm.js","sources":["../../../src/components/Utility/RightList.tsx"],"sourcesContent":["import { ReactNode } from 'react';\nimport { Box, List, ListSubheader, makeStyles } from '@material-ui/core';\n\nconst useStyles = makeStyles(theme => ({\n container: {\n width: '100%',\n marginBottom: '1em',\n },\n subheader: {\n color: theme.palette.text.hint,\n padding: '0px 0px 0.5rem 0.5rem',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n lineHeight: '1rem',\n },\n list: {\n '& li': {\n paddingLeft: theme.spacing(1),\n paddingRight: theme.spacing(1),\n },\n },\n}));\n\nexport const RightListContainer = (props: { children: ReactNode }) => {\n const styles = useStyles();\n return (\n <Box display={{ md: 'none', lg: 'block' }} className={styles.container}>\n {props.children}\n </Box>\n );\n};\n\nexport const RightList = (props: {\n children: ReactNode;\n title: string;\n icon?: ReactNode;\n}) => {\n const styles = useStyles();\n return (\n <List\n component=\"nav\"\n aria-labelledby=\"nested-list-subheader\"\n className={styles.list}\n subheader={\n <ListSubheader\n disableSticky\n component=\"div\"\n id=\"nested-list-subheader\"\n color=\"primary\"\n className={styles.subheader}\n >\n {props.title}\n {props.icon}\n </ListSubheader>\n }\n >\n {props.children}\n </List>\n );\n};\n"],"names":[],"mappings":";;;AAGA,MAAM,SAAA,GAAY,WAAW,CAAU,KAAA,MAAA;AAAA,EACrC,SAAW,EAAA;AAAA,IACT,KAAO,EAAA,MAAA;AAAA,IACP,YAAc,EAAA;AAAA,GAChB;AAAA,EACA,SAAW,EAAA;AAAA,IACT,KAAA,EAAO,KAAM,CAAA,OAAA,CAAQ,IAAK,CAAA,IAAA;AAAA,IAC1B,OAAS,EAAA,uBAAA;AAAA,IACT,UAAY,EAAA,QAAA;AAAA,IACZ,QAAU,EAAA,QAAA;AAAA,IACV,YAAc,EAAA,UAAA;AAAA,IACd,UAAY,EAAA;AAAA,GACd;AAAA,EACA,IAAM,EAAA;AAAA,IACJ,MAAQ,EAAA;AAAA,MACN,WAAA,EAAa,KAAM,CAAA,OAAA,CAAQ,CAAC,CAAA;AAAA,MAC5B,YAAA,EAAc,KAAM,CAAA,OAAA,CAAQ,CAAC;AAAA;AAC/B;AAEJ,CAAE,CAAA,CAAA;AAEW,MAAA,kBAAA,GAAqB,CAAC,KAAmC,KAAA;AACpE,EAAA,MAAM,SAAS,SAAU,EAAA;AACzB,EAAA,uBACG,GAAA,CAAA,GAAA,EAAA,EAAI,OAAS,EAAA,EAAE,EAAI,EAAA,MAAA,EAAQ,EAAI,EAAA,OAAA,EAAW,EAAA,SAAA,EAAW,MAAO,CAAA,SAAA,EAC1D,gBAAM,QACT,EAAA,CAAA;AAEJ;AAEa,MAAA,SAAA,GAAY,CAAC,KAIpB,KAAA;AACJ,EAAA,MAAM,SAAS,SAAU,EAAA;AACzB,EACE,uBAAA,GAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,SAAU,EAAA,KAAA;AAAA,MACV,iBAAgB,EAAA,uBAAA;AAAA,MAChB,WAAW,MAAO,CAAA,IAAA;AAAA,MAClB,SACE,kBAAA,IAAA;AAAA,QAAC,aAAA;AAAA,QAAA;AAAA,UACC,aAAa,EAAA,IAAA;AAAA,UACb,SAAU,EAAA,KAAA;AAAA,UACV,EAAG,EAAA,uBAAA;AAAA,UACH,KAAM,EAAA,SAAA;AAAA,UACN,WAAW,MAAO,CAAA,SAAA;AAAA,UAEjB,QAAA,EAAA;AAAA,YAAM,KAAA,CAAA,KAAA;AAAA,YACN,KAAM,CAAA;AAAA;AAAA;AAAA,OACT;AAAA,MAGD,QAAM,EAAA,KAAA,CAAA;AAAA;AAAA,GACT;AAEJ;;;;"}
1
+ {"version":3,"file":"RightList.esm.js","sources":["../../../src/components/Utility/RightList.tsx"],"sourcesContent":["import { ReactNode } from 'react';\nimport { Box, List, ListSubheader, makeStyles } from '@material-ui/core';\n\nconst useStyles = makeStyles(theme => ({\n container: {\n width: '100%',\n marginBottom: '1em',\n },\n subheader: {\n color: theme.palette.text.hint,\n padding: '0px 0px 0.5rem 0.5rem',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n lineHeight: 1.5,\n },\n list: {\n '& li': {\n paddingLeft: theme.spacing(1),\n paddingRight: theme.spacing(1),\n },\n },\n}));\n\nexport const RightListContainer = (props: { children: ReactNode }) => {\n const styles = useStyles();\n return (\n <Box display={{ md: 'none', lg: 'block' }} className={styles.container}>\n {props.children}\n </Box>\n );\n};\n\nexport const RightList = (props: {\n children: ReactNode;\n title: string;\n icon?: ReactNode;\n}) => {\n const styles = useStyles();\n return (\n <List\n component=\"nav\"\n aria-labelledby=\"nested-list-subheader\"\n className={styles.list}\n subheader={\n <ListSubheader\n disableSticky\n component=\"div\"\n id=\"nested-list-subheader\"\n color=\"primary\"\n className={styles.subheader}\n >\n {props.title}\n {props.icon}\n </ListSubheader>\n }\n >\n {props.children}\n </List>\n );\n};\n"],"names":[],"mappings":";;;AAGA,MAAM,SAAA,GAAY,WAAW,CAAU,KAAA,MAAA;AAAA,EACrC,SAAW,EAAA;AAAA,IACT,KAAO,EAAA,MAAA;AAAA,IACP,YAAc,EAAA;AAAA,GAChB;AAAA,EACA,SAAW,EAAA;AAAA,IACT,KAAA,EAAO,KAAM,CAAA,OAAA,CAAQ,IAAK,CAAA,IAAA;AAAA,IAC1B,OAAS,EAAA,uBAAA;AAAA,IACT,UAAY,EAAA,QAAA;AAAA,IACZ,QAAU,EAAA,QAAA;AAAA,IACV,YAAc,EAAA,UAAA;AAAA,IACd,UAAY,EAAA;AAAA,GACd;AAAA,EACA,IAAM,EAAA;AAAA,IACJ,MAAQ,EAAA;AAAA,MACN,WAAA,EAAa,KAAM,CAAA,OAAA,CAAQ,CAAC,CAAA;AAAA,MAC5B,YAAA,EAAc,KAAM,CAAA,OAAA,CAAQ,CAAC;AAAA;AAC/B;AAEJ,CAAE,CAAA,CAAA;AAEW,MAAA,kBAAA,GAAqB,CAAC,KAAmC,KAAA;AACpE,EAAA,MAAM,SAAS,SAAU,EAAA;AACzB,EAAA,uBACG,GAAA,CAAA,GAAA,EAAA,EAAI,OAAS,EAAA,EAAE,EAAI,EAAA,MAAA,EAAQ,EAAI,EAAA,OAAA,EAAW,EAAA,SAAA,EAAW,MAAO,CAAA,SAAA,EAC1D,gBAAM,QACT,EAAA,CAAA;AAEJ;AAEa,MAAA,SAAA,GAAY,CAAC,KAIpB,KAAA;AACJ,EAAA,MAAM,SAAS,SAAU,EAAA;AACzB,EACE,uBAAA,GAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,SAAU,EAAA,KAAA;AAAA,MACV,iBAAgB,EAAA,uBAAA;AAAA,MAChB,WAAW,MAAO,CAAA,IAAA;AAAA,MAClB,SACE,kBAAA,IAAA;AAAA,QAAC,aAAA;AAAA,QAAA;AAAA,UACC,aAAa,EAAA,IAAA;AAAA,UACb,SAAU,EAAA,KAAA;AAAA,UACV,EAAG,EAAA,uBAAA;AAAA,UACH,KAAM,EAAA,SAAA;AAAA,UACN,WAAW,MAAO,CAAA,SAAA;AAAA,UAEjB,QAAA,EAAA;AAAA,YAAM,KAAA,CAAA,KAAA;AAAA,YACN,KAAM,CAAA;AAAA;AAAA;AAAA,OACT;AAAA,MAGD,QAAM,EAAA,KAAA,CAAA;AAAA;AAAA,GACT;AAEJ;;;;"}
@@ -5,7 +5,6 @@ const useStyles = makeStyles(() => ({
5
5
  root: {
6
6
  display: "inline-flex !important",
7
7
  marginRight: "0.25rem",
8
- fontSize: "1rem",
9
8
  maxWidth: "1rem",
10
9
  maxHeight: "1rem"
11
10
  }
@@ -1 +1 @@
1
- {"version":3,"file":"SmallAvatar.esm.js","sources":["../../../src/components/Utility/SmallAvatar.tsx"],"sourcesContent":["import { Avatar, AvatarProps, makeStyles } from '@material-ui/core';\n\nconst useStyles = makeStyles(() => ({\n root: {\n display: 'inline-flex !important',\n marginRight: '0.25rem',\n fontSize: '1rem',\n maxWidth: '1rem',\n maxHeight: '1rem',\n },\n}));\n\nexport const SmallAvatar = (props: AvatarProps) => {\n const styles = useStyles();\n return (\n <Avatar className={styles.root} {...props}>\n {props.children}\n </Avatar>\n );\n};\n"],"names":[],"mappings":";;;AAEA,MAAM,SAAA,GAAY,WAAW,OAAO;AAAA,EAClC,IAAM,EAAA;AAAA,IACJ,OAAS,EAAA,wBAAA;AAAA,IACT,WAAa,EAAA,SAAA;AAAA,IACb,QAAU,EAAA,MAAA;AAAA,IACV,QAAU,EAAA,MAAA;AAAA,IACV,SAAW,EAAA;AAAA;AAEf,CAAE,CAAA,CAAA;AAEW,MAAA,WAAA,GAAc,CAAC,KAAuB,KAAA;AACjD,EAAA,MAAM,SAAS,SAAU,EAAA;AACzB,EACE,uBAAA,GAAA,CAAC,UAAO,SAAW,EAAA,MAAA,CAAO,MAAO,GAAG,KAAA,EACjC,gBAAM,QACT,EAAA,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"SmallAvatar.esm.js","sources":["../../../src/components/Utility/SmallAvatar.tsx"],"sourcesContent":["import { Avatar, AvatarProps, makeStyles } from '@material-ui/core';\n\nconst useStyles = makeStyles(() => ({\n root: {\n display: 'inline-flex !important',\n marginRight: '0.25rem',\n maxWidth: '1rem',\n maxHeight: '1rem',\n },\n}));\n\nexport const SmallAvatar = (props: AvatarProps) => {\n const styles = useStyles();\n return (\n <Avatar className={styles.root} {...props}>\n {props.children}\n </Avatar>\n );\n};\n"],"names":[],"mappings":";;;AAEA,MAAM,SAAA,GAAY,WAAW,OAAO;AAAA,EAClC,IAAM,EAAA;AAAA,IACJ,OAAS,EAAA,wBAAA;AAAA,IACT,WAAa,EAAA,SAAA;AAAA,IACb,QAAU,EAAA,MAAA;AAAA,IACV,SAAW,EAAA;AAAA;AAEf,CAAE,CAAA,CAAA;AAEW,MAAA,WAAA,GAAc,CAAC,KAAuB,KAAA;AACjD,EAAA,MAAM,SAAS,SAAU,EAAA;AACzB,EACE,uBAAA,GAAA,CAAC,UAAO,SAAW,EAAA,MAAA,CAAO,MAAO,GAAG,KAAA,EACjC,gBAAM,QACT,EAAA,CAAA;AAEJ;;;;"}
package/package.json CHANGED
@@ -7,7 +7,7 @@
7
7
  "frontend",
8
8
  "backstage.io"
9
9
  ],
10
- "version": "3.29.0",
10
+ "version": "3.29.2",
11
11
  "main": "dist/index.esm.js",
12
12
  "types": "dist/index.d.ts",
13
13
  "prepublishOnly": "yarn tsc && yarn build",
@@ -57,7 +57,7 @@
57
57
  "@backstage/plugin-permission-common": "^0.9.0",
58
58
  "@backstage/plugin-permission-react": "^0.4.34",
59
59
  "@backstage/plugin-signals-react": "^0.0.13",
60
- "@drodil/backstage-plugin-qeta-common": "^3.29.0",
60
+ "@drodil/backstage-plugin-qeta-common": "^3.29.2",
61
61
  "@jsdevtools/rehype-toc": "^3.0.2",
62
62
  "@material-ui/core": "^4.12.2",
63
63
  "@material-ui/icons": "^4.11.3",