♻️ refactor(web): consolidate design-system primitives and responsive data views

This commit is contained in:
t0ng7u
2026-07-11 05:13:16 +08:00
parent 262ab93123
commit 0918bdb49a
451 changed files with 7295 additions and 7693 deletions
+18 -10
View File
@@ -22,18 +22,26 @@ import * as React from 'react'
import { cn } from '@/lib/utils'
function Table({ className, ...props }: React.ComponentProps<'table'>) {
type TableProps = React.ComponentProps<'table'> & {
containerClassName?: string
containerProps?: Omit<React.ComponentProps<'div'>, 'children' | 'className'>
}
function Table({
className,
containerClassName,
containerProps,
...props
}: TableProps) {
return (
<div
data-slot='table-container'
className='relative w-full overflow-x-auto overflow-y-hidden'
className={cn('relative w-full overflow-x-auto', containerClassName)}
{...containerProps}
>
<table
data-slot='table'
className={cn(
'w-full caption-bottom text-sm tabular-nums [&_td]:text-sm [&_td_*]:text-sm [&_th]:text-sm [&_th_*]:text-sm',
className
)}
className={cn('w-full caption-bottom text-sm', className)}
{...props}
/>
</div>
@@ -65,7 +73,7 @@ function TableFooter({ className, ...props }: React.ComponentProps<'tfoot'>) {
<tfoot
data-slot='table-footer'
className={cn(
'bg-muted/50 border-t font-medium [&>tr]:last:border-b-0',
'border-t bg-muted/50 font-medium [&>tr]:last:border-b-0',
className
)}
{...props}
@@ -78,7 +86,7 @@ function TableRow({ className, ...props }: React.ComponentProps<'tr'>) {
<tr
data-slot='table-row'
className={cn(
'group data-[state=selected]:bg-muted border-b transition-colors hover:[background-color:color-mix(in_oklch,var(--muted)_50%,var(--background))] has-aria-expanded:[background-color:color-mix(in_oklch,var(--muted)_50%,var(--background))]',
'border-b transition-colors hover:bg-muted/50 has-aria-expanded:bg-muted/50 data-[state=selected]:bg-muted',
className
)}
{...props}
@@ -91,7 +99,7 @@ function TableHead({ className, ...props }: React.ComponentProps<'th'>) {
<th
data-slot='table-head'
className={cn(
'text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0',
'h-10 px-2 text-left align-middle font-medium whitespace-nowrap text-foreground [&:has([role=checkbox])]:pr-0',
className
)}
{...props}
@@ -119,7 +127,7 @@ function TableCaption({
return (
<caption
data-slot='table-caption'
className={cn('text-muted-foreground mt-4 text-sm', className)}
className={cn('mt-4 text-sm text-muted-foreground', className)}
{...props}
/>
)