|
|
|
|
@@ -1,9 +1,9 @@
|
|
|
|
|
import * as React from "react";
|
|
|
|
|
import styled from "styled-components";
|
|
|
|
|
import { UnfurlResourceType, UnfurlResponse } from "../types";
|
|
|
|
|
|
|
|
|
|
type Props = {
|
|
|
|
|
status: string;
|
|
|
|
|
color: string;
|
|
|
|
|
state: UnfurlResponse[UnfurlResourceType.PR]["state"];
|
|
|
|
|
size?: number;
|
|
|
|
|
className?: string;
|
|
|
|
|
};
|
|
|
|
|
@@ -11,10 +11,10 @@ type Props = {
|
|
|
|
|
/**
|
|
|
|
|
* Issue status icon based on GitHub pull requests, but can be used for any git-style integration.
|
|
|
|
|
*/
|
|
|
|
|
export function PullRequestIcon({ size, className, ...rest }: Props) {
|
|
|
|
|
export function PullRequestIcon({ size, className, state }: Props) {
|
|
|
|
|
return (
|
|
|
|
|
<Icon size={size} className={className}>
|
|
|
|
|
<BaseIcon {...rest} />
|
|
|
|
|
<BaseIcon state={state} />
|
|
|
|
|
</Icon>
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
@@ -28,42 +28,32 @@ const Icon = styled.span<{ size?: number }>`
|
|
|
|
|
justify-content: center;
|
|
|
|
|
`;
|
|
|
|
|
|
|
|
|
|
function BaseIcon({ status, size, color, className }: Props) {
|
|
|
|
|
switch (status) {
|
|
|
|
|
function BaseIcon({ state }: Pick<Props, "state">) {
|
|
|
|
|
switch (state.name) {
|
|
|
|
|
case "open":
|
|
|
|
|
return (
|
|
|
|
|
<svg
|
|
|
|
|
viewBox="0 0 16 16"
|
|
|
|
|
width={size}
|
|
|
|
|
height={size}
|
|
|
|
|
fill={color}
|
|
|
|
|
className={className}
|
|
|
|
|
>
|
|
|
|
|
<path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z" />
|
|
|
|
|
<svg viewBox="0 0 16 16" fill={state.color}>
|
|
|
|
|
{state.draft ? (
|
|
|
|
|
<path d="M3.25 1A2.25 2.25 0 0 1 4 5.372v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.251 2.251 0 0 1 3.25 1Zm9.5 14a2.25 2.25 0 1 1 0-4.5 2.25 2.25 0 0 1 0 4.5ZM2.5 3.25a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0ZM3.25 12a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm9.5 0a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5ZM14 7.5a1.25 1.25 0 1 1-2.5 0 1.25 1.25 0 0 1 2.5 0Zm0-4.25a1.25 1.25 0 1 1-2.5 0 1.25 1.25 0 0 1 2.5 0Z" />
|
|
|
|
|
) : (
|
|
|
|
|
<path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z" />
|
|
|
|
|
)}
|
|
|
|
|
</svg>
|
|
|
|
|
);
|
|
|
|
|
case "merged":
|
|
|
|
|
return (
|
|
|
|
|
<svg
|
|
|
|
|
viewBox="0 0 16 16"
|
|
|
|
|
width={size}
|
|
|
|
|
height={size}
|
|
|
|
|
fill={color}
|
|
|
|
|
className={className}
|
|
|
|
|
>
|
|
|
|
|
<svg viewBox="0 0 16 16" fill={state.color}>
|
|
|
|
|
<path d="M5.45 5.154A4.25 4.25 0 0 0 9.25 7.5h1.378a2.251 2.251 0 1 1 0 1.5H9.25A5.734 5.734 0 0 1 5 7.123v3.505a2.25 2.25 0 1 1-1.5 0V5.372a2.25 2.25 0 1 1 1.95-.218ZM4.25 13.5a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Zm8.5-4.5a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5ZM5 3.25a.75.75 0 1 0 0 .005V3.25Z" />
|
|
|
|
|
</svg>
|
|
|
|
|
);
|
|
|
|
|
case "closed":
|
|
|
|
|
return (
|
|
|
|
|
<svg
|
|
|
|
|
viewBox="0 0 16 16"
|
|
|
|
|
width={size}
|
|
|
|
|
height={size}
|
|
|
|
|
fill={color}
|
|
|
|
|
className={className}
|
|
|
|
|
>
|
|
|
|
|
<path d="M3.25 1A2.25 2.25 0 0 1 4 5.372v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.251 2.251 0 0 1 3.25 1Zm9.5 5.5a.75.75 0 0 1 .75.75v3.378a2.251 2.251 0 1 1-1.5 0V7.25a.75.75 0 0 1 .75-.75Zm-2.03-5.273a.75.75 0 0 1 1.06 0l.97.97.97-.97a.748.748 0 0 1 1.265.332.75.75 0 0 1-.205.729l-.97.97.97.97a.751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018l-.97-.97-.97.97a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734l.97-.97-.97-.97a.75.75 0 0 1 0-1.06ZM2.5 3.25a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0ZM3.25 12a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm9.5 0a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Z" />
|
|
|
|
|
<svg viewBox="0 0 16 16" fill={state.color}>
|
|
|
|
|
{state.draft ? (
|
|
|
|
|
<path d="M3.25 1A2.25 2.25 0 0 1 4 5.372v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.251 2.251 0 0 1 3.25 1Zm9.5 5.5a.75.75 0 0 1 .75.75v3.378a2.251 2.251 0 1 1-1.5 0V7.25a.75.75 0 0 1 .75-.75Zm-2.03-5.273a.75.75 0 0 1 1.06 0l.97.97.97-.97a.748.748 0 0 1 1.265.332.75.75 0 0 1-.205.729l-.97.97.97.97a.751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018l-.97-.97-.97.97a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734l.97-.97-.97-.97a.75.75 0 0 1 0-1.06ZM2.5 3.25a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0ZM3.25 12a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm9.5 0a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Z" />
|
|
|
|
|
) : (
|
|
|
|
|
<path d="M3.25 1A2.25 2.25 0 0 1 4 5.372v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.251 2.251 0 0 1 3.25 1Zm9.5 5.5a.75.75 0 0 1 .75.75v3.378a2.251 2.251 0 1 1-1.5 0V7.25a.75.75 0 0 1 .75-.75Zm-2.03-5.273a.75.75 0 0 1 1.06 0l.97.97.97-.97a.748.748 0 0 1 1.265.332.75.75 0 0 1-.205.729l-.97.97.97.97a.751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018l-.97-.97-.97.97a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734l.97-.97-.97-.97a.75.75 0 0 1 0-1.06ZM2.5 3.25a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0ZM3.25 12a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm9.5 0a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Z" />
|
|
|
|
|
)}
|
|
|
|
|
</svg>
|
|
|
|
|
);
|
|
|
|
|
default:
|
|
|
|
|
|