> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sweetr.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Pull Requests

> Filterable list of a team's pull requests.

export const CtaGetStarted = ({label = "Ready to make delivery flow again?"}) => <div style={{
  display: "flex",
  justifyContent: "space-between",
  alignItems: "center",
  marginTop: 80,
  background: "#1a1b1e",
  color: "#fff",
  borderRadius: 8,
  border: "1px solid #69db7c",
  padding: "10px"
}}>
    <div style={{
  display: "flex",
  justifyContent: "space-between",
  alignItems: "center",
  gap: 12,
  fontWeight: 500
}}>
      <img src="https://mintlify.s3-us-west-1.amazonaws.com/sweetrdev/logo.svg" height={24} width={24} style={{
  margin: 0
}} />
      <div>{label}</div>
    </div>
    <a href="https://github.com/apps/sweetr-dev/installations/new" rel="nofollow" className="not-prose" style={{
  padding: "8px 16px",
  background: "#69db7c",
  color: "#000",
  borderRadius: 4,
  fontSize: 14
}}>
      Try now
    </a>
  </div>;

export const ColorBadge = ({size, label, color, marginBottom = 10}) => <div style={{
  display: "flex",
  gap: 10,
  marginBottom,
  alignItems: "center"
}}>
    <div style={{
  width: 24,
  height: 24,
  border: `1px solid ${color}`,
  borderRadius: 4
}}></div>
    <div>{label}</div>
  </div>;

export const PrSize = ({size, label, color}) => <div className="flex gap-[10px] items-center" style={{
  marginBottom: 10
}}>
    <div style={{
  width: 72,
  borderRadius: 50,
  background: "#25262b",
  fontWeight: 700,
  textTransform: "uppercase",
  fontSize: 10,
  border: "1px solid #373a40",
  display: "flex",
  height: 20,
  justifyContent: "center",
  alignItems: "center",
  color
}}>
      {size}
    </div>
    <div>{label}</div>
  </div>;

export const PrBadge = ({type, color}) => <div style={{
  display: "flex",
  gap: 10,
  marginTop: 10
}}>
    <div style={{
  background: "#25262b",
  border: "1px solid #373a40",
  borderRadius: "4px",
  width: 28,
  height: 28,
  display: "flex",
  alignItems: "center",
  justifyContent: "center",
  color
}}>
      {type === "merged-no-review" && <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="icon icon-tabler icons-tabler-outline icon-tabler-square-rounded-x">
          <path stroke="none" d="M0 0h24v24H0z" fill="none" />
          <path d="M10 10l4 4m0 -4l-4 4" />
          <path d="M12 3c7.2 0 9 1.8 9 9s-1.8 9 -9 9s-9 -1.8 -9 -9s1.8 -9 9 -9z" />
        </svg>}
      {type === "reviewed" && <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-eye-check">
          <path d="M10 12a2 2 0 1 0 4 0a2 2 0 0 0 -4 0"></path>
          <path d="M11.102 17.957c-3.204 -.307 -5.904 -2.294 -8.102 -5.957c2.4 -4 5.4 -6 9 -6c3.6 0 6.6 2 9 6a19.5 19.5 0 0 1 -.663 1.032"></path>
          <path d="M15 19l2 2l4 -4"></path>
        </svg>}
      {type === "approved" && <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="icon icon-tabler icons-tabler-outline icon-tabler-square-rounded-check">
          <path stroke="none" d="M0 0h24v24H0z" fill="none" />
          <path d="M9 12l2 2l4 -4" />
          <path d="M12 3c7.2 0 9 1.8 9 9s-1.8 9 -9 9s-9 -1.8 -9 -9s1.8 -9 9 -9z" />
        </svg>}
      {type === "open" && <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-git-pull-request">
          <path d="M6 18m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0"></path>
          <path d="M6 6m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0"></path>
          <path d="M18 18m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0"></path>
          <path d="M6 8l0 8"></path>
          <path d="M11 6h5a2 2 0 0 1 2 2v8"></path>
          <path d="M14 9l-3 -3l3 -3"></path>
        </svg>}
      {type === "stuck-merge" && <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-git-merge">
          <path d="M7 18m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0"></path>
          <path d="M7 6m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0"></path>
          <path d="M17 12m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0"></path>
          <path d="M7 8l0 8"></path>
          <path d="M7 8a4 4 0 0 0 4 4h4"></path>
        </svg>}
      {type === "no-review" && <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="icon icon-tabler icons-tabler-outline icon-tabler-eye-x">
          <path stroke="none" d="M0 0h24v24H0z" fill="none" />
          <path d="M10 12a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
          <path d="M13.048 17.942a9.298 9.298 0 0 1 -1.048 .058c-3.6 0 -6.6 -2 -9 -6c2.4 -4 5.4 -6 9 -6c3.6 0 6.6 2 9 6a17.986 17.986 0 0 1 -1.362 1.975" />
          <path d="M22 22l-5 -5" />
          <path d="M17 22l5 -5" />
        </svg>}
      {type === "stuck-review" && <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="icon icon-tabler icons-tabler-outline icon-tabler-eye-x">
          <path stroke="none" d="M0 0h24v24H0z" fill="none" />
          <path d="M10 12a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
          <path d="M13.048 17.942a9.298 9.298 0 0 1 -1.048 .058c-3.6 0 -6.6 -2 -9 -6c2.4 -4 5.4 -6 9 -6c3.6 0 6.6 2 9 6a17.986 17.986 0 0 1 -1.362 1.975" />
          <path d="M22 22l-5 -5" />
          <path d="M17 22l5 -5" />
        </svg>}
      {type === "first-to-review" && <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-eye-star">
          <path d="M10 12a2 2 0 1 0 4 0a2 2 0 0 0 -4 0"></path>
          <path d="M9.608 17.682c-2.558 -.71 -4.76 -2.603 -6.608 -5.682c2.4 -4 5.4 -6 9 -6c3.6 0 6.6 2 9 6"></path>
          <path d="M17.8 20.817l-2.172 1.138a.392 .392 0 0 1 -.568 -.41l.415 -2.411l-1.757 -1.707a.389 .389 0 0 1 .217 -.665l2.428 -.352l1.086 -2.193a.392 .392 0 0 1 .702 0l1.086 2.193l2.428 .352a.39 .39 0 0 1 .217 .665l-1.757 1.707l.414 2.41a.39 .39 0 0 1 -.567 .411l-2.172 -1.138z"></path>
        </svg>}
    </div>
    <div>
      {type === "merged-no-review" && "Merged without review"}
      {type === "reviewed" && "Reviewed"}
      {type === "approved" && "Approved"}
      {type === "stuck-merge" && "Stuck on merge"}
      {type === "stuck-review" && "Stuck on review"}
      {type === "open" && "Open"}
      {type === "no-review" && "Not reviewed"}
      {type === "first-to-review" && "First to review"}.
    </div>
  </div>;

## Demo

<Frame>
  <img src="https://mintcdn.com/sweetrdev/eFb8git0HDRlFHI6/images/pull-requests.png?fit=max&auto=format&n=eFb8git0HDRlFHI6&q=85&s=60eb1924b031f220f613ccd56f3bd900" width="1360" height="768" data-path="images/pull-requests.png" />
</Frame>

## Size

The pull request size is calculated based on the amount of lines changed.

<PrSize color="#69DB7C" size="Tiny" label="< 20 lines changed." />

<PrSize color="#69DB7C" size="Small" label="20~100 lines changed." />

<PrSize color="#A6A7AB" size="Medium" label="100~250 lines changed." />

<PrSize color="#ff8787" size="Large" label="250~500 lines changed." />

<PrSize color="#ff8787" size="Huge" label="> 500 lines changed." />

Customize how PR size is calculated in your workspace settings.

## Indicators

Each pull request has indicators regarding the time to review, approve and merge.

<CardGroup cols={2}>
  <Card title="Informational">
    <PrBadge color="#a6a7ab" type="no-review" />

    <PrBadge color="#a6a7ab" type="reviewed" />

    <PrBadge color="#a6a7ab" type="approved" />
  </Card>

  <Card title="Alerts">
    <PrBadge color="#C92A2A" type="merged-no-review" />

    <PrBadge color="#C92A2A" type="stuck-review" />

    <PrBadge color="#C92A2A" type="stuck-merge" />
  </Card>
</CardGroup>

The color of the icons also changes depending on the time elapsed for the corresponding event.

<ColorBadge color="#51cf66" label="< 2 hours." />

<ColorBadge color="#a6a7ab" label="2~24 hours." />

<ColorBadge color="#fab005" label="24~48 hours." />

<ColorBadge color="#C92A2A" label="> 48 hours." marginBottom={20} />

<Info>Weekends are not included when calculating time elapsed.</Info>

<Info>
  Color thresholds are not configurable today. Customizable thresholds are
  planned.
</Info>

## Use cases

* Easily see all team PRs in one place.
* Identify blocked PRs.
* Identify PRs with a lot of comments that might need attention.
* Get a grasp on PR size. Encourage the team to create smaller PRs for faster cycle time.

<CtaGetStarted />
