# Careers Intro 1 - Company intro with three reasons

> A careers intro with an outline hiring badge, a large heading, a short company paragraph, a link to open roles, and three reason columns.

A shadcn/ui block from the [@shadcnblocks](https://shadcnblocks.com) registry, listed on [shadcn.exchange](https://shadcn.exchange/r/shadcnblocks/careers-intro1).

- Page, with a live preview: https://shadcn.exchange/r/shadcnblocks/careers-intro1
- Screenshot: https://abzjhwgwpdpz7ua5.public.blob.vercel-storage.com/shots/shadcnblocks/careers-intro1-light-61c5a1de9f004c68.png
- Registry item: https://shadcnblocks.com/r/careers-intro1.json
- Listed: 2026-10-13, source last changed 2026-10-13

## Install

```bash
npx shadcn@latest add https://shadcnblocks.com/r/careers-intro1.json
```

Run it in a project that has shadcn/ui set up. It adds the files below and installs what they depend on.

## Dependencies

- npm packages: `cn`, `lucide-react`
- Registry items: `badge`, `button`

## Files

### `block/careers-intro1/careers-intro1.tsx`

```tsx
import { CalendarClock, FileText, Layers } from "lucide-react";
import { cn } from "cn";

import { Badge } from "@/components/ui/badge";
import { Button } from "@/components/ui/button";

interface CareersIntroReason {
  title: string;
  description: string;
  icon?: ElementType<{ className?: string }>;
}
interface Button {
  text: string;
  url: string;
  icon?: React.ReactNode;
}

interface CareersIntroProps {
  label?: string;
  heading: string;
  description: string;
  button?: Button;
  reasons: CareersIntroReason[];
  className?: string;
}

interface CareersIntro1Props extends CareersIntroProps {}
type Props = Partial<CareersIntro1Props>;

const defaultProps: CareersIntro1Props = {
  label: "We're hiring",
  heading: "Discover Your Perfect Career",
  description:
    "Shadcnblocks.com is small enough that your name stays on the work, and clear enough that you are not guessing what matters this week.",
  button: {
    text: "See open roles",
    url: "#",
  },
  reasons: [
    {
      title: "Own a surface",
      icon: Layers,
      description:
        "You take a product area from the first empty state through the incident review, with design and engineering in the same thread.",
    },
    {
      title: "Decisions in writing",
      icon: FileText,
      description:
        "Specs and postmortems stay open inside the company, so you can catch up without a week of meetings.",
    },
    {
      title: "Room to ship",
      icon: CalendarClock,
      description:
        "One day a week stays clear of recurring meetings. Interviews and planning have a slot, not the whole calendar.",
    },
  ],
};

const MAX_REASONS = 3;

const CareersIntro1 = (props: Props) => {
  const { label, heading, description, button, reasons, className } = {
    ...defaultProps,
    ...props,
  };
  const items = (reasons ?? []).slice(0, MAX_REASONS);

  return (
    <section className={cn("py-32", className)}>
      <div className="container mx-auto">
        <div className="flex flex-col gap-16">
          <div className="flex flex-col items-start gap-6">
            {label ? (
              <Badge variant="outline" className="w-fit">
                {label}
              </Badge>
            ) : null}
            <h1 className="max-w-3xl text-4xl font-semibold tracking-tight text-balance md:text-6xl">
              {heading}
            </h1>
            <p className="max-w-5xl text-lg text-balance text-muted-foreground">
              {description}
            </p>
            {button?.text ? (
              <Button asChild>
                <a href={button.url}>{button.text}</a>
              </Button>
            ) : null}
          </div>
          <ul className="grid gap-10 border-t border-border pt-10 md:grid-cols-3">
            {items.map((reason) => (
              <li key={reason.title} className="flex flex-col gap-3">
                <h2 className="text-lg font-medium">{reason.title}</h2>
                <p className="text-muted-foreground">{reason.description}</p>
              </li>
            ))}
          </ul>
        </div>
      </div>
    </section>
  );
};

export { CareersIntro1 };
```
