"use client";
import { useRouter } from "next/navigation";
import { Select } from "@unlocalhosted/metalui";
import { encodePath } from "@/lib/format";
import { BranchIcon, CommitIcon } from "./icons";
/** Switches branch while staying on the same path. `kind` is the URL section (tree, blob, commits). */
export function BranchSelect({
base,
kind,
current,
branches,
path = "",
}: {
base: string;
kind: "tree" | "blob" | "commits";
current: string;
branches: string[];
path?: string;
}) {
const router = useRouter();
const values = branches.includes(current) ? branches : [current, ...branches];
// A ref that isn't a branch (a commit) reads as its short sha with the commit glyph.
const options = values.map((b) => {
const isBranch = branches.includes(b);
return {
value: b,
label: !isBranch && /^[0-9a-f]{40}$/i.test(b) ? b.slice(0, 7) : b,
lead: isBranch ? : ,
};
});
return (