UNPKG

@backstage/plugin-techdocs-module-addons-contrib

Version:

Plugin module for contributed TechDocs Addons

52 lines (49 loc) 1.7 kB
import { jsxs, jsx } from 'react/jsx-runtime'; import { makeStyles } from '@material-ui/core'; import BugReportIcon from '@material-ui/icons/BugReport'; import { Link, GitHubIcon } from '@backstage/core-components'; const useStyles = makeStyles((theme) => ({ root: { display: "grid", gridGap: theme.spacing(1), gridAutoFlow: "column", justifyContent: "center", alignItems: "center", color: theme.palette.common.black, fontSize: theme.typography.button.fontSize } })); const getIcon = ({ type }) => { if (type === "github") { return GitHubIcon; } return BugReportIcon; }; const getName = ({ type }) => { return type.charAt(0).toLocaleUpperCase("en-US") + type.slice(1); }; const getUrl = (repository, template) => { const { title, body } = template; const encodedTitle = encodeURIComponent(title); const encodedBody = encodeURIComponent(body); const { protocol, resource, owner, name, type } = repository; const url = `${protocol}://${resource}/${owner}/${name}`; const encodedUrl = encodeURI(url); if (type === "github") { return `${encodedUrl}/issues/new?title=${encodedTitle}&body=${encodedBody}`; } return `${encodedUrl}/issues/new?issue[title]=${encodedTitle}&issue[description]=${encodedBody}`; }; const IssueLink = ({ template, repository }) => { const classes = useStyles(); const Icon = getIcon(repository); const url = getUrl(repository, template); return /* @__PURE__ */ jsxs(Link, { className: classes.root, to: url, target: "_blank", children: [ /* @__PURE__ */ jsx(Icon, {}), " Open new ", getName(repository), " issue" ] }); }; export { IssueLink }; //# sourceMappingURL=IssueLink.esm.js.map