UNPKG

@primer/react

Version:

An implementation of GitHub's Primer Design System using React

120 lines (117 loc) 3.07 kB
import { c } from 'react-compiler-runtime'; import { AlertIcon, GitMergeQueueIcon, IssueDraftIcon, GitPullRequestDraftIcon, GitMergeIcon, GitPullRequestClosedIcon, SkipIcon, IssueClosedIcon, GitPullRequestIcon, IssueOpenedIcon } from '@primer/octicons-react'; import { forwardRef } from 'react'; import { clsx } from 'clsx'; import classes from './StateLabel.module.css.js'; import { jsxs, jsx } from 'react/jsx-runtime'; import Octicon from '../Octicon/Octicon.js'; const octiconMap = { issueOpened: IssueOpenedIcon, pullOpened: GitPullRequestIcon, issueClosed: IssueClosedIcon, issueClosedNotPlanned: SkipIcon, pullClosed: GitPullRequestClosedIcon, pullMerged: GitMergeIcon, draft: GitPullRequestDraftIcon, issueDraft: IssueDraftIcon, pullQueued: GitMergeQueueIcon, unavailable: AlertIcon, open: null, closed: null }; const labelMap = { issueOpened: 'Issue', pullOpened: 'Pull request', issueClosed: 'Issue', issueClosedNotPlanned: 'Issue, not planned', pullClosed: 'Pull request', pullMerged: 'Pull request', draft: 'Pull request', issueDraft: 'Issue', pullQueued: 'Pull request', unavailable: '', open: '', closed: '' }; const StateLabel = /*#__PURE__*/forwardRef((t0, ref) => { const $ = c(21); let children; let className; let rest; let size; let status; let variant; if ($[0] !== t0) { ({ children, status, size, variant, className, ...rest } = t0); $[0] = t0; $[1] = children; $[2] = className; $[3] = rest; $[4] = size; $[5] = status; $[6] = variant; } else { children = $[1]; className = $[2]; rest = $[3]; size = $[4]; status = $[5]; variant = $[6]; } const noIconStatus = status === "open" || status === "closed"; const inferredSize = size || (variant === "small" ? "small" : "medium"); let t1; if ($[7] !== className) { t1 = clsx(classes.StateLabel, className); $[7] = className; $[8] = t1; } else { t1 = $[8]; } let t2; if ($[9] !== inferredSize || $[10] !== noIconStatus || $[11] !== status) { t2 = !noIconStatus && /*#__PURE__*/jsx(Octicon, { "data-size-small": inferredSize === "small" ? "" : undefined, icon: octiconMap[status], "aria-label": labelMap[status], className: classes.Icon }); $[9] = inferredSize; $[10] = noIconStatus; $[11] = status; $[12] = t2; } else { t2 = $[12]; } let t3; if ($[13] !== children || $[14] !== inferredSize || $[15] !== ref || $[16] !== rest || $[17] !== status || $[18] !== t1 || $[19] !== t2) { t3 = /*#__PURE__*/jsxs("span", { ...rest, ref: ref, className: t1, "data-size": inferredSize, "data-status": status, children: [t2, children] }); $[13] = children; $[14] = inferredSize; $[15] = ref; $[16] = rest; $[17] = status; $[18] = t1; $[19] = t2; $[20] = t3; } else { t3 = $[20]; } return t3; }); StateLabel.displayName = 'StateLabel'; export { StateLabel as default };