# Diversity & Inclusion

> A section pairing a statement on belonging with supporting stats and imagery. Use it to show how your company invests in people and fairness.

A shadcn/ui block from the [@shadcn-ui-blocks](https://www.shadcn-ui-blocks.com) registry, listed on [shadcn.exchange](https://shadcn.exchange/r/shadcn-ui-blocks/marketing-about-sections-diversity-inclusion).

- Page, with a live preview: https://shadcn.exchange/r/shadcn-ui-blocks/marketing-about-sections-diversity-inclusion
- Screenshot: https://abzjhwgwpdpz7ua5.public.blob.vercel-storage.com/shots/shadcn-ui-blocks/marketing-about-sections-diversity-inclusion-light-a20d1b5be39ab086.png
- Registry item: https://www.shadcn-ui-blocks.com/r/marketing-about-sections-diversity-inclusion.json
- Listed: 2026-10-13, source last changed 2026-10-13

## Install

```bash
npx shadcn@latest add https://www.shadcn-ui-blocks.com/r/marketing-about-sections-diversity-inclusion.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: `class-variance-authority`, `lucide-react`, `radix-ui`

## Files

### `components/blocks/marketing/about-sections/diversity-inclusion.tsx`

```tsx
import { useState } from 'react';
import { Button } from '@/components/ui/button';
import { Card, CardContent } from '@/components/ui/card';
import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs';
import { Badge } from '@/components/ui/badge';
import {
  UsersIcon,
  GlobeIcon,
  HeartHandshakeIcon,
  MedalIcon,
  UserPlusIcon,
  BarChartIcon,
} from 'lucide-react';

import { cn } from '@/lib/utils';
import {
  Select,
  SelectContent,
  SelectItem,
  SelectTrigger,
  SelectValue,
} from '@/components/ui/select';

// Define types for DEI initiatives
type Initiative = {
  id: string;
  title: string;
  description: string;
  icon: React.ElementType;
  metrics?: {
    value: string;
    label: string;
  }[];
  image?: string;
};

// Define categories
type Category = {
  id: string;
  title: string;
  description: string;
  initiatives: Initiative[];
};

const categories: Category[] = [
  {
    id: 'workplace',
    title: 'Inclusive Workplace',
    description:
      'Creating an environment where everyone feels welcome, respected, and able to contribute their best work.',
    initiatives: [
      {
        id: 'hiring',
        title: 'Inclusive Hiring',
        description:
          'We&apos;ve implemented structured interviewing and blind resume reviews to minimize bias in our hiring process. Our job descriptions are crafted to be inclusive, and we partner with organizations focused on underrepresented groups in tech.',
        icon: UserPlusIcon,
        metrics: [
          { value: '45%', label: 'Women in leadership' },
          { value: '38%', label: 'Employees from underrepresented groups' },
          { value: '30+', label: 'Countries represented' },
        ],
        image:
          'https://images.unsplash.com/photo-1522202176988-66273c2fd55f?q=80&w=1200',
      },
      {
        id: 'education',
        title: 'Ongoing Education',
        description:
          'Regular workshops, training sessions, and open discussions that help our team understand the importance of diversity and how to be more inclusive in their daily interactions.',
        icon: GlobeIcon,
        metrics: [
          { value: '100%', label: 'Employees trained in DEI' },
          { value: '12', label: 'DEI workshops per year' },
          { value: '4.8/5', label: 'Average workshop rating' },
        ],
      },
      {
        id: 'ergs',
        title: 'Employee Resource Groups',
        description:
          'We support and fund employee-led groups that foster a diverse, inclusive workplace aligned with our organizational values. These groups serve as resources for employees and the company.',
        icon: UsersIcon,
        metrics: [
          { value: '9', label: 'Active ERGs' },
          { value: '68%', label: 'Employee participation' },
          { value: '$150K', label: 'Annual ERG funding' },
        ],
        image:
          'https://images.unsplash.com/photo-1558403194-611308249627?q=80&w=1200',
      },
    ],
  },
  {
    id: 'product',
    title: 'Inclusive Products',
    description:
      'Designing products and services that work for everyone, regardless of background or ability.',
    initiatives: [
      {
        id: 'accessibility',
        title: 'Accessibility Standards',
        description:
          'Our product teams adhere to WCAG 2.1 AA standards at minimum. We regularly conduct accessibility audits and include people with disabilities in our user testing to ensure our products work for everyone.',
        icon: HeartHandshakeIcon,
        metrics: [
          { value: '100%', label: 'WCAG 2.1 AA compliance' },
          { value: 'Quarterly', label: 'Accessibility audits' },
          { value: '15+', label: 'Inclusive design patterns' },
        ],
        image:
          'https://images.unsplash.com/photo-1557804506-669a67965ba0?q=80&w=1200',
      },
      {
        id: 'localization',
        title: 'Global Localization',
        description:
          'We design our products with global audiences in mind, accounting for cultural differences, language nuances, and regional preferences to create truly inclusive experiences.',
        icon: GlobeIcon,
        metrics: [
          { value: '24', label: 'Supported languages' },
          { value: '95%', label: 'Translation coverage' },
          { value: '12', label: 'Localization specialists' },
        ],
      },
      {
        id: 'diverse-testing',
        title: 'Diverse User Testing',
        description:
          'We ensure our user research and testing includes diverse participants across demographics, abilities, and backgrounds to capture a wide range of perspectives and needs.',
        icon: UsersIcon,
        metrics: [
          { value: '500+', label: 'Diverse testers' },
          { value: '40+', label: 'Countries represented' },
          { value: '20%', label: 'Testers with disabilities' },
        ],
        image:
          'https://images.unsplash.com/photo-1523240795612-9a054b0db644?q=80&w=1200',
      },
    ],
  },
  {
    id: 'community',
    title: 'Community Impact',
    description:
      'Extending our commitment beyond our company to create positive change in the broader community.',
    initiatives: [
      {
        id: 'partnerships',
        title: 'Strategic Partnerships',
        description:
          'We collaborate with organizations that promote diversity in tech and education, providing funding, volunteer hours, and expertise to support their important work.',
        icon: HeartHandshakeIcon,
        metrics: [
          { value: '15+', label: 'Partner organizations' },
          { value: '$2M', label: 'Annual contributions' },
          { value: '5,000+', label: 'Volunteer hours' },
        ],
        image:
          'https://images.unsplash.com/photo-1556484687-30636164638b?q=80&w=1200',
      },
      {
        id: 'education',
        title: 'Education Initiatives',
        description:
          'We run programs that introduce technology careers to underrepresented groups, including coding camps, mentorship programs, and scholarships for promising students.',
        icon: UsersIcon,
        metrics: [
          { value: '250', label: 'Annual scholarships' },
          { value: '1,200+', label: 'Students mentored' },
          { value: '85%', label: 'Program graduation rate' },
        ],
      },
      {
        id: 'supplier-diversity',
        title: 'Supplier Diversity',
        description:
          'We actively seek to work with diverse suppliers and vendors, ensuring our procurement practices reflect our commitment to economic inclusion.',
        icon: BarChartIcon,
        metrics: [
          { value: '32%', label: 'Diverse suppliers' },
          { value: '$12M+', label: 'Annual diverse spend' },
          { value: '4×', label: 'Growth in 3 years' },
        ],
        image:
          'https://images.unsplash.com/photo-1566669437687-7040a6926753?q=80&w=1200',
      },
    ],
  },
  {
    id: 'transparency',
    title: 'Transparency & Progress',
    description:
      'Measuring our progress, holding ourselves accountable, and sharing our journey openly.',
    initiatives: [
      {
        id: 'reporting',
        title: 'Public Reporting',
        description:
          'We publish annual diversity reports that share our demographics, goals, successes, and areas for improvement. We believe transparency drives accountability and progress.',
        icon: BarChartIcon,
        metrics: [
          { value: '5', label: 'Years of public reporting' },
          { value: '12', label: 'Tracked metrics' },
          { value: 'Quarterly', label: 'Internal updates' },
        ],
        image:
          'https://images.unsplash.com/photo-1551836022-deb4988cc6c0?q=80&w=1200',
      },
      {
        id: 'goals',
        title: 'Measurable Goals',
        description:
          'We set specific, measurable goals for diversity, equity, and inclusion across all aspects of our business, with executive accountability for progress.',
        icon: MedalIcon,
        metrics: [
          { value: '15%', label: 'YoY diversity growth' },
          { value: '100%', label: 'Pay equity achieved' },
          { value: '90%', label: 'Belonging index score' },
        ],
      },
      {
        id: 'recognition',
        title: 'External Recognition',
        description:
          "While we don't pursue DEI work for awards, we're proud to be recognized for our efforts by independent organizations that evaluate workplace equality.",
        icon: MedalIcon,
        metrics: [
          { value: 'Top 10', label: 'Most inclusive employers' },
          { value: '100%', label: 'HRC equality index' },
          { value: '5 Stars', label: 'Disability equality index' },
        ],
        image:
          'https://images.unsplash.com/photo-1507537297725-24a1c029d3ca?q=80&w=1200',
      },
    ],
  },
];

export default function AboutSectionDiversityInclusion() {
  const [activeCategory, setActiveCategory] = useState(categories[0]!.id);

  const currentCategory =
    categories.find((category) => category.id === activeCategory) ||
    categories[0]!;

  return (
    <section className="py-24">
      <div className="container mx-auto px-4 md:px-6 2xl:max-w-[1400px]">
        <div className="mx-auto mb-16 max-w-3xl space-y-4 text-center">
          <div className="bg-primary/10 text-primary inline-block rounded-lg px-3 py-1 text-sm">
            Diversity & Inclusion
          </div>
          <h2 className="text-3xl font-bold tracking-tight md:text-4xl">
            Building a More Equitable Future Together
          </h2>
          <p className="text-muted-foreground">
            Our commitment to diversity, equity, and inclusion runs deep in
            everything we do—from how we build our teams to how we build our
            products.
          </p>
        </div>

        <Tabs
          defaultValue={categories[0]!.id}
          value={activeCategory}
          onValueChange={setActiveCategory}
          className="space-y-8"
        >
          {/* Category selection - Tabs for md+ screens, Dropdown for smaller screens */}
          <div className="flex justify-center">
            {/* Dropdown for small screens */}
            <div className="mb-6 w-full md:hidden">
              <Select value={activeCategory} onValueChange={setActiveCategory}>
                <SelectTrigger className="w-full">
                  <SelectValue placeholder="Select category" />
                </SelectTrigger>
                <SelectContent>
                  {categories.map((category) => (
                    <SelectItem key={category.id} value={category.id}>
                      {category.title}
                    </SelectItem>
                  ))}
                </SelectContent>
              </Select>
            </div>

            {/* Tabs for medium screens and above */}
            <TabsList className="hidden h-auto grid-cols-4 p-1 md:grid">
              {categories.map((category) => (
                <TabsTrigger
                  key={category.id}
                  value={category.id}
                  className="data-[state=active]:bg-primary data-[state=active]:text-primary-foreground px-3 py-2.5"
                >
                  {category.title}
                </TabsTrigger>
              ))}
            </TabsList>
          </div>

          {/* Category description */}
          <div className="mx-auto max-w-2xl text-center">
            <p className="text-muted-foreground">
              {currentCategory.description}
            </p>
          </div>

          {/* Initiatives */}
          {categories.map((category) => (
            <TabsContent
              key={category.id}
              value={category.id}
              className="space-y-12"
            >
              {category.initiatives.map((initiative, index) => {
                const Icon = initiative.icon;
                const isEven = index % 2 === 0;

                return (
                  <div
                    key={initiative.id}
                    className="grid items-center gap-8 md:grid-cols-12"
                  >
                    {/* Initiative details */}
                    <div
                      className={cn(
                        'space-y-6 md:col-span-7',
                        isEven ? 'md:order-1' : 'md:order-2'
                      )}
                    >
                      <div className="flex items-center gap-3">
                        <div className="bg-primary/10 rounded-md p-2">
                          <Icon className="text-primary h-6 w-6" />
                        </div>
                        <h3 className="text-2xl font-bold">
                          {initiative.title}
                        </h3>
                      </div>

                      <p className="text-muted-foreground">
                        {initiative.description}
                      </p>

                      {initiative.metrics && (
                        <div className="grid grid-cols-3 gap-4 pt-2">
                          {initiative.metrics.map((metric, i) => (
                            <div key={i} className="text-center">
                              <div className="text-primary text-2xl font-bold">
                                {metric.value}
                              </div>
                              <div className="text-muted-foreground mt-1 text-xs">
                                {metric.label}
                              </div>
                            </div>
                          ))}
                        </div>
                      )}
                    </div>

                    {/* Initiative image (if available) */}
                    {initiative.image ? (
                      <div
                        className={cn(
                          'md:col-span-5',
                          isEven ? 'md:order-2' : 'md:order-1'
                        )}
                      >
                        <div className="relative aspect-[4/3] overflow-hidden rounded-xl">
                          <img
                            src={initiative.image}
                            alt={initiative.title}
                            className="object-cover"
                          />
                        </div>
                      </div>
                    ) : (
                      <div
                        className={cn(
                          'flex h-full items-center justify-center md:col-span-5',
                          isEven ? 'md:order-2' : 'md:order-1'
                        )}
                      >
                        <Card className="bg-muted/30 flex h-full min-h-[280px] w-full items-center justify-center">
                          <CardContent className="p-6 text-center">
                            <Icon className="text-muted-foreground/50 mx-auto mb-4 h-16 w-16" />
                            <Badge variant="secondary" className="mx-auto">
                              Learn more about our{' '}
                              {initiative.title.toLowerCase()} initiative
                            </Badge>
                          </CardContent>
                        </Card>
                      </div>
                    )}
                  </div>
                );
              })}
            </TabsContent>
          ))}
        </Tabs>

        {/* CTA section */}
        <div className="mt-20 text-center">
          <div className="bg-muted mb-8 inline-flex items-center justify-center rounded-full p-1">
            <Badge className="bg-primary text-primary-foreground rounded-full px-4 py-1">
              Join us in making a difference
            </Badge>
          </div>

          <h3 className="mb-4 text-2xl font-bold">
            Become Part of Our Inclusive Community
          </h3>
          <p className="text-muted-foreground mx-auto mb-8 max-w-2xl">
            We&apos;re always looking for passionate individuals who share our
            commitment to diversity, equity, and inclusion to join our team.
          </p>

          <div className="flex flex-wrap justify-center gap-4">
            <Button asChild size="lg">
              <a href="#">Join Our Team</a>
            </Button>
            <Button asChild variant="outline" size="lg">
              <a href="#">Read Our Annual Report</a>
            </Button>
          </div>
        </div>
      </div>
    </section>
  );
}
```

### `components/ui/button.tsx`

```tsx
import * as React from "react"
import { cva, type VariantProps } from "class-variance-authority"
import { Slot } from "radix-ui"

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

const buttonVariants = cva(
  "group/button inline-flex shrink-0 items-center justify-center rounded-md border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
  {
    variants: {
      variant: {
        default: "bg-primary text-primary-foreground hover:bg-primary/80",
        outline:
          "border-border bg-background shadow-xs hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50",
        secondary:
          "bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground",
        ghost:
          "hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50",
        destructive:
          "bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40",
        link: "text-primary underline-offset-4 hover:underline",
      },
      size: {
        default:
          "h-9 gap-1.5 px-2.5 in-data-[slot=button-group]:rounded-md has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",
        xs: "h-6 gap-1 rounded-[min(var(--radius-md),8px)] px-2 text-xs in-data-[slot=button-group]:rounded-md has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3",
        sm: "h-8 gap-1 rounded-[min(var(--radius-md),10px)] px-2.5 in-data-[slot=button-group]:rounded-md has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5",
        lg: "h-10 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",
        icon: "size-9",
        "icon-xs":
          "size-6 rounded-[min(var(--radius-md),8px)] in-data-[slot=button-group]:rounded-md [&_svg:not([class*='size-'])]:size-3",
        "icon-sm":
          "size-8 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-md",
        "icon-lg": "size-10",
      },
    },
    defaultVariants: {
      variant: "default",
      size: "default",
    },
  }
)

function Button({
  className,
  variant = "default",
  size = "default",
  asChild = false,
  ...props
}: React.ComponentProps<"button"> &
  VariantProps<typeof buttonVariants> & {
    asChild?: boolean
  }) {
  const Comp = asChild ? Slot.Root : "button"

  return (
    <Comp
      data-slot="button"
      data-variant={variant}
      data-size={size}
      className={cn(buttonVariants({ variant, size, className }))}
      {...props}
    />
  )
}

export { Button, buttonVariants }
```

### `components/ui/card.tsx`

```tsx
import * as React from "react"

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

function Card({
  className,
  size = "default",
  ...props
}: React.ComponentProps<"div"> & { size?: "default" | "sm" }) {
  return (
    <div
      data-slot="card"
      data-size={size}
      className={cn(
        "group/card flex flex-col gap-6 overflow-hidden rounded-xl bg-card py-6 text-sm text-card-foreground shadow-xs ring-1 ring-foreground/10 has-[>img:first-child]:pt-0 data-[size=sm]:gap-4 data-[size=sm]:py-4 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl",
        className
      )}
      {...props}
    />
  )
}

function CardHeader({ className, ...props }: React.ComponentProps<"div">) {
  return (
    <div
      data-slot="card-header"
      className={cn(
        "group/card-header @container/card-header grid auto-rows-min items-start gap-1 rounded-t-xl px-6 group-data-[size=sm]/card:px-4 has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] [.border-b]:pb-6 group-data-[size=sm]/card:[.border-b]:pb-4",
        className
      )}
      {...props}
    />
  )
}

function CardTitle({ className, ...props }: React.ComponentProps<"div">) {
  return (
    <div
      data-slot="card-title"
      className={cn(
        "font-heading text-base leading-normal font-medium group-data-[size=sm]/card:text-sm",
        className
      )}
      {...props}
    />
  )
}

function CardDescription({ className, ...props }: React.ComponentProps<"div">) {
  return (
    <div
      data-slot="card-description"
      className={cn("text-sm text-muted-foreground", className)}
      {...props}
    />
  )
}

function CardAction({ className, ...props }: React.ComponentProps<"div">) {
  return (
    <div
      data-slot="card-action"
      className={cn(
        "col-start-2 row-span-2 row-start-1 self-start justify-self-end",
        className
      )}
      {...props}
    />
  )
}

function CardContent({ className, ...props }: React.ComponentProps<"div">) {
  return (
    <div
      data-slot="card-content"
      className={cn("px-6 group-data-[size=sm]/card:px-4", className)}
      {...props}
    />
  )
}

function CardFooter({ className, ...props }: React.ComponentProps<"div">) {
  return (
    <div
      data-slot="card-footer"
      className={cn(
        "flex items-center rounded-b-xl px-6 group-data-[size=sm]/card:px-4 [.border-t]:pt-6 group-data-[size=sm]/card:[.border-t]:pt-4",
        className
      )}
      {...props}
    />
  )
}

export {
  Card,
  CardHeader,
  CardFooter,
  CardTitle,
  CardAction,
  CardDescription,
  CardContent,
}
```

### `components/ui/tabs.tsx`

```tsx
"use client"

import * as React from "react"
import { cva, type VariantProps } from "class-variance-authority"
import { Tabs as TabsPrimitive } from "radix-ui"

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

function Tabs({
  className,
  orientation = "horizontal",
  ...props
}: React.ComponentProps<typeof TabsPrimitive.Root>) {
  return (
    <TabsPrimitive.Root
      data-slot="tabs"
      data-orientation={orientation}
      className={cn(
        "group/tabs flex gap-2 data-horizontal:flex-col",
        className
      )}
      {...props}
    />
  )
}

const tabsListVariants = cva(
  "group/tabs-list inline-flex w-fit items-center justify-center rounded-lg p-[3px] text-muted-foreground group-data-horizontal/tabs:h-9 group-data-vertical/tabs:h-fit group-data-vertical/tabs:flex-col data-[variant=line]:rounded-none",
  {
    variants: {
      variant: {
        default: "bg-muted",
        line: "gap-1 bg-transparent",
      },
    },
    defaultVariants: {
      variant: "default",
    },
  }
)

function TabsList({
  className,
  variant = "default",
  ...props
}: React.ComponentProps<typeof TabsPrimitive.List> &
  VariantProps<typeof tabsListVariants>) {
  return (
    <TabsPrimitive.List
      data-slot="tabs-list"
      data-variant={variant}
      className={cn(tabsListVariants({ variant }), className)}
      {...props}
    />
  )
}

function TabsTrigger({
  className,
  ...props
}: React.ComponentProps<typeof TabsPrimitive.Trigger>) {
  return (
    <TabsPrimitive.Trigger
      data-slot="tabs-trigger"
      className={cn(
        "relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap text-foreground/60 transition-all group-data-vertical/tabs:w-full group-data-vertical/tabs:justify-start hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 dark:text-muted-foreground dark:hover:text-foreground group-data-[variant=default]/tabs-list:data-active:shadow-sm group-data-[variant=line]/tabs-list:data-active:shadow-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
        "group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-active:bg-transparent dark:group-data-[variant=line]/tabs-list:data-active:border-transparent dark:group-data-[variant=line]/tabs-list:data-active:bg-transparent",
        "data-active:bg-background data-active:text-foreground dark:data-active:border-input dark:data-active:bg-input/30 dark:data-active:text-foreground",
        "after:absolute after:bg-foreground after:opacity-0 after:transition-opacity group-data-horizontal/tabs:after:inset-x-0 group-data-horizontal/tabs:after:bottom-[-5px] group-data-horizontal/tabs:after:h-0.5 group-data-vertical/tabs:after:inset-y-0 group-data-vertical/tabs:after:-right-1 group-data-vertical/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-active:after:opacity-100",
        className
      )}
      {...props}
    />
  )
}

function TabsContent({
  className,
  ...props
}: React.ComponentProps<typeof TabsPrimitive.Content>) {
  return (
    <TabsPrimitive.Content
      data-slot="tabs-content"
      className={cn("flex-1 text-sm outline-none", className)}
      {...props}
    />
  )
}

export { Tabs, TabsList, TabsTrigger, TabsContent, tabsListVariants }
```

### `components/ui/badge.tsx`

```tsx
import * as React from "react"
import { cva, type VariantProps } from "class-variance-authority"
import { Slot } from "radix-ui"

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

const badgeVariants = cva(
  "group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!",
  {
    variants: {
      variant: {
        default: "bg-primary text-primary-foreground [a]:hover:bg-primary/80",
        secondary:
          "bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80",
        destructive:
          "bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20",
        outline:
          "border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground",
        ghost:
          "hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50",
        link: "text-primary underline-offset-4 hover:underline",
      },
    },
    defaultVariants: {
      variant: "default",
    },
  }
)

function Badge({
  className,
  variant = "default",
  asChild = false,
  ...props
}: React.ComponentProps<"span"> &
  VariantProps<typeof badgeVariants> & { asChild?: boolean }) {
  const Comp = asChild ? Slot.Root : "span"

  return (
    <Comp
      data-slot="badge"
      data-variant={variant}
      className={cn(badgeVariants({ variant }), className)}
      {...props}
    />
  )
}

export { Badge, badgeVariants }
```

### `components/ui/select.tsx`

```tsx
"use client"

import * as React from "react"
import { Select as SelectPrimitive } from "radix-ui"

import { cn } from "@/lib/utils"
import { ChevronDownIcon, CheckIcon, ChevronUpIcon } from "lucide-react"

function Select({
  ...props
}: React.ComponentProps<typeof SelectPrimitive.Root>) {
  return <SelectPrimitive.Root data-slot="select" {...props} />
}

function SelectGroup({
  className,
  ...props
}: React.ComponentProps<typeof SelectPrimitive.Group>) {
  return (
    <SelectPrimitive.Group
      data-slot="select-group"
      className={cn("scroll-my-1 p-1", className)}
      {...props}
    />
  )
}

function SelectValue({
  ...props
}: React.ComponentProps<typeof SelectPrimitive.Value>) {
  return <SelectPrimitive.Value data-slot="select-value" {...props} />
}

function SelectTrigger({
  className,
  size = "default",
  children,
  ...props
}: React.ComponentProps<typeof SelectPrimitive.Trigger> & {
  size?: "sm" | "default"
}) {
  return (
    <SelectPrimitive.Trigger
      data-slot="select-trigger"
      data-size={size}
      className={cn(
        "flex w-fit items-center justify-between gap-1.5 rounded-md border border-input bg-transparent py-2 pr-2 pl-2.5 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-placeholder:text-muted-foreground data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-1.5 dark:bg-input/30 dark:hover:bg-input/50 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
        className
      )}
      {...props}
    >
      {children}
      <SelectPrimitive.Icon asChild>
        <ChevronDownIcon className="pointer-events-none size-4 text-muted-foreground" />
      </SelectPrimitive.Icon>
    </SelectPrimitive.Trigger>
  )
}

function SelectContent({
  className,
  children,
  position = "item-aligned",
  align = "center",
  ...props
}: React.ComponentProps<typeof SelectPrimitive.Content>) {
  return (
    <SelectPrimitive.Portal>
      <SelectPrimitive.Content
        data-slot="select-content"
        data-align-trigger={position === "item-aligned"}
        className={cn("relative z-50 max-h-(--radix-select-content-available-height) min-w-36 origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md bg-popover text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[align-trigger=true]:animate-none data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95", position ==="popper"&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1", className )}
        position={position}
        align={align}
        {...props}
      >
        <SelectScrollUpButton />
        <SelectPrimitive.Viewport
          data-position={position}
          className={cn(
            "data-[position=popper]:h-(--radix-select-trigger-height) data-[position=popper]:w-full data-[position=popper]:min-w-(--radix-select-trigger-width)",
            position === "popper" && ""
          )}
        >
          {children}
        </SelectPrimitive.Viewport>
        <SelectScrollDownButton />
      </SelectPrimitive.Content>
    </SelectPrimitive.Portal>
  )
}

function SelectLabel({
  className,
  ...props
}: React.ComponentProps<typeof SelectPrimitive.Label>) {
  return (
    <SelectPrimitive.Label
      data-slot="select-label"
      className={cn("px-2 py-1.5 text-xs text-muted-foreground", className)}
      {...props}
    />
  )
}

function SelectItem({
  className,
  children,
  ...props
}: React.ComponentProps<typeof SelectPrimitive.Item>) {
  return (
    <SelectPrimitive.Item
      data-slot="select-item"
      className={cn(
        "relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",
        className
      )}
      {...props}
    >
      <span className="pointer-events-none absolute right-2 flex size-4 items-center justify-center">
        <SelectPrimitive.ItemIndicator>
          <CheckIcon className="pointer-events-none" />
        </SelectPrimitive.ItemIndicator>
      </span>
      <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>
    </SelectPrimitive.Item>
  )
}

function SelectSeparator({
  className,
  ...props
}: React.ComponentProps<typeof SelectPrimitive.Separator>) {
  return (
    <SelectPrimitive.Separator
      data-slot="select-separator"
      className={cn("pointer-events-none -mx-1 my-1 h-px bg-border", className)}
      {...props}
    />
  )
}

function SelectScrollUpButton({
  className,
  ...props
}: React.ComponentProps<typeof SelectPrimitive.ScrollUpButton>) {
  return (
    <SelectPrimitive.ScrollUpButton
      data-slot="select-scroll-up-button"
      className={cn(
        "z-10 flex cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-4",
        className
      )}
      {...props}
    >
      <ChevronUpIcon
      />
    </SelectPrimitive.ScrollUpButton>
  )
}

function SelectScrollDownButton({
  className,
  ...props
}: React.ComponentProps<typeof SelectPrimitive.ScrollDownButton>) {
  return (
    <SelectPrimitive.ScrollDownButton
      data-slot="select-scroll-down-button"
      className={cn(
        "z-10 flex cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-4",
        className
      )}
      {...props}
    >
      <ChevronDownIcon
      />
    </SelectPrimitive.ScrollDownButton>
  )
}

export {
  Select,
  SelectContent,
  SelectGroup,
  SelectItem,
  SelectLabel,
  SelectScrollDownButton,
  SelectScrollUpButton,
  SelectSeparator,
  SelectTrigger,
  SelectValue,
}
```
