92 lines · 2.6 KB
import { useState } from "react";
import { updateIssue } from "~/fns/issues";
import { useAction } from "~/hooks/use-action";
import { Badge, RelativeTime } from "./ui/Primitives";
import { Button } from "./ui/Button";
import { inputClass } from "./ui/Field";
import { cn } from "~/utils/cn";

type Props = {
  owner: string;
  repo: string;
  number: number;
  title: string;
  state: "open" | "closed";
  merged?: boolean;
  draft?: boolean;
  author: string;
  createdAt: number;
  canEdit: boolean;
  subtitle?: React.ReactNode;
};

export function IssueHeader({
  owner,
  repo,
  number,
  title,
  state,
  merged = false,
  draft = false,
  author,
  createdAt,
  canEdit,
  subtitle,
}: Props) {
  const [editing, setEditing] = useState(false);
  const [value, setValue] = useState(title);
  const save = useAction(updateIssue);
  const tone = merged ? "purple" : state === "open" ? (draft ? "neutral" : "green") : "red";
  const label = merged ? "Merged" : draft && state === "open" ? "Draft" : state === "open" ? "Open" : "Closed";