# Button GitHub

> GitHub-style dark button with an inline Octocat mark and an optional star count.

- Author: Atelier UI
- License: MIT
- Page: https://chromotion.dev/en/components/button-github
- Site: Atelier UI (https://chromotion.dev)

## Install

```bash
npx shadcn@latest add https://chromotion.dev/r/button-github.json
```

Stack: React + TypeScript + Tailwind CSS v4, shadcn/ui conventions. `cn` comes from `@/lib/utils`.

## Dependencies

```bash
npm install lucide-react
```

## Usage

```tsx title="components/button-github-demo.tsx"
import { GithubButton } from "@/components/button-github"

export default function ButtonGithubDemo() {
  return (
    <div className="flex flex-wrap items-center justify-center gap-4 p-8">
      <GithubButton />
      <GithubButton stars="12.4k" />
      <GithubButton label="View source" />
    </div>
  )
}
```

## Source

```tsx title="components/button-github.tsx"
import * as React from "react"
import { Star } from "lucide-react"

import { cn } from "@/lib/utils"

export interface GithubButtonProps extends React.ComponentProps<"a"> {
  label?: string
  stars?: number | string
}

export function GithubButton({ label = "Star on GitHub", stars, className, href = "https://github.com", ...props }: GithubButtonProps) {
  return (
    <a
      href={href}
      className={cn(
        "group inline-flex h-10 items-center overflow-hidden rounded-lg bg-[#24292f] text-sm font-medium text-white shadow-xs",
        "transition-[background-color,transform] hover:bg-[#32383f] active:scale-[0.98]",
        "focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background focus-visible:outline-none",
        className
      )}
      {...props}
    >
      <span className="inline-flex items-center gap-2 px-4">
        <svg aria-hidden viewBox="0 0 24 24" className="size-5 fill-current">
          <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12" />
        </svg>
        {label}
      </span>
      {stars !== undefined && (
        <span className="inline-flex h-full items-center gap-1 border-l border-white/15 bg-white/10 px-3 tabular-nums">
          <Star className="size-3.5 fill-amber-400 text-amber-400 transition-transform duration-300 group-hover:rotate-[72deg] group-hover:scale-110" />
          {stars}
        </span>
      )}
    </a>
  )
}
```
