gitscope
← marzneshin / v0.3.0-alpha8 / dashboard/src/components/ui/table.tsx
https://dev.kronoz.win/r/marzneshin.git
dashboard/src/components/ui/table.tsx · TypeScript
Blame Raw
  1import * as React from "react"
  2
  3import { cn } from "@marzneshin/utils"
  4
  5const Table = React.forwardRef<
  6  HTMLTableElement,
  7  React.HTMLAttributes<HTMLTableElement>
  8>(({ className, ...props }, ref) => (
  9  <div className="relative w-full overflow-auto">
 10    <table
 11      ref={ref}
 12      className={cn("w-full caption-bottom text-sm", className)}
 13      {...props}
 14    />
 15  </div>
 16))
 17Table.displayName = "Table"
 18
 19const TableHeader = React.forwardRef<
 20  HTMLTableSectionElement,
 21  React.HTMLAttributes<HTMLTableSectionElement>
 22>(({ className, ...props }, ref) => (
 23  <thead ref={ref} className={cn("[&_tr]:border-b", className)} {...props} />
 24))
 25TableHeader.displayName = "TableHeader"
 26
 27const TableBody = React.forwardRef<
 28  HTMLTableSectionElement,
 29  React.HTMLAttributes<HTMLTableSectionElement>
 30>(({ className, ...props }, ref) => (
 31  <tbody
 32    ref={ref}
 33    className={cn("[&_tr:last-child]:border-0", className)}
 34    {...props}
 35  />
 36))
 37TableBody.displayName = "TableBody"
 38
 39const TableFooter = React.forwardRef<
 40  HTMLTableSectionElement,
 41  React.HTMLAttributes<HTMLTableSectionElement>
 42>(({ className, ...props }, ref) => (
 43  <tfoot
 44    ref={ref}
 45    className={cn(
 46      "border-t bg-muted/50 font-medium [&>tr]:last:border-b-0",
 47      className
 48    )}
 49    {...props}
 50  />
 51))
 52TableFooter.displayName = "TableFooter"
 53
 54const TableRow = React.forwardRef<
 55  HTMLTableRowElement,
 56  React.HTMLAttributes<HTMLTableRowElement>
 57>(({ className, ...props }, ref) => (
 58  <tr
 59    ref={ref}
 60    className={cn(
 61      "border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted",
 62      className
 63    )}
 64    {...props}
 65  />
 66))
 67TableRow.displayName = "TableRow"
 68
 69const TableHead = React.forwardRef<
 70  HTMLTableCellElement,
 71  React.ThHTMLAttributes<HTMLTableCellElement>
 72>(({ className, ...props }, ref) => (
 73  <th
 74    ref={ref}
 75    className={cn(
 76      "h-12 px-4 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0",
 77      className
 78    )}
 79    {...props}
 80  />
 81))
 82TableHead.displayName = "TableHead"
 83
 84const TableCell = React.forwardRef<
 85  HTMLTableCellElement,
 86  React.TdHTMLAttributes<HTMLTableCellElement>
 87>(({ className, ...props }, ref) => (
 88  <td
 89    ref={ref}
 90    className={cn("p-4 align-middle [&:has([role=checkbox])]:pr-0", className)}
 91    {...props}
 92  />
 93))
 94TableCell.displayName = "TableCell"
 95
 96const TableCaption = React.forwardRef<
 97  HTMLTableCaptionElement,
 98  React.HTMLAttributes<HTMLTableCaptionElement>
 99>(({ className, ...props }, ref) => (
100  <caption
101    ref={ref}
102    className={cn("mt-4 text-sm text-muted-foreground", className)}
103    {...props}
104  />
105))
106TableCaption.displayName = "TableCaption"
107
108export {
109  Table,
110  TableHeader,
111  TableBody,
112  TableFooter,
113  TableHead,
114  TableRow,
115  TableCell,
116  TableCaption,
117}