Radish alpha
r
rad:z4V1sjrXqjvFdnCUbxPFqd5p4DtH5
Radicle web interface
Radicle
Git
radicle-explorer src views repos components CommitButton.svelte
<script lang="ts">
  import type { BaseUrl, Commit } from "@http-client";

  import Button from "@app/components/Button.svelte";
  import Link from "@app/components/Link.svelte";
  import { formatCommit, unreachable } from "@app/lib/utils";

  export let variant: "standalone" | "right" | "center" | "left" = "standalone";
  export let styleMinWidth: string | undefined = undefined;
  export let styleWidth: "100%" | undefined = undefined;
  export let repoId: string;
  export let baseUrl: BaseUrl;
  export let hideSummaryOnMobile: boolean = true;
  export let commit: Commit["commit"];

  let styleBorderRadius: string | undefined = undefined;

  $: commitShortId = formatCommit(commit.id);
  $: if (variant === "right") {
    styleBorderRadius = "0 var(--border-radius-sm) var(--border-radius-sm) 0";
  } else if (variant === "standalone") {
    styleBorderRadius = "var(--border-radius-sm)";
  } else if (variant === "left") {
    styleBorderRadius = "var(--border-radius-sm) 0 0 var(--border-radius-sm)";
  } else if (variant === "center") {
    styleBorderRadius = "0";
  } else {
    unreachable(variant);
  }
</script>

<style>
  .commit {
    display: flex;
    align-items: center;
    gap: 0.5rem;
  }
  .identifier {
    display: flex;
    align-items: center;
    gap: 0.5rem;
  }
</style>

<Link
  styleTextOverflow
  route={{
    resource: "repo.commit",
    repo: repoId,
    node: baseUrl,
    commit: commit.id,
  }}>
  <Button
    title="Current HEAD"
    variant="not-selected"
    {styleWidth}
    {styleMinWidth}
    {styleBorderRadius}>
    <div class="txt-overflow commit">
      <div class="identifier txt-id">
        {commitShortId}
      </div>
      <span
        class="txt-overflow"
        class:global-hide-on-small-desktop-down={hideSummaryOnMobile}>
        {commit.summary}
      </span>
    </div>
  </Button>
</Link>