aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/packages/ui-new/src/components/ui/card.tsx
diff options
context:
space:
mode:
author苏向夜 <fu050409@163.com>2026-02-22 19:47:13 +0800
committer苏向夜 <fu050409@163.com>2026-02-22 19:47:13 +0800
commit01b546cc816c4fb6b7389e5122b7802d7e724a2b (patch)
treeb33e71dc81c60a6678e6fb14f736713bd94bd5dc /packages/ui-new/src/components/ui/card.tsx
parent1a103de2f1ef75cd73347953cbe27e14606df871 (diff)
downloadDropOut-01b546cc816c4fb6b7389e5122b7802d7e724a2b.tar.gz
DropOut-01b546cc816c4fb6b7389e5122b7802d7e724a2b.zip
refactor(shadcn): use base lyra instead
Diffstat (limited to 'packages/ui-new/src/components/ui/card.tsx')
-rw-r--r--packages/ui-new/src/components/ui/card.tsx25
1 files changed, 18 insertions, 7 deletions
diff --git a/packages/ui-new/src/components/ui/card.tsx b/packages/ui-new/src/components/ui/card.tsx
index cc1ff8a..b7084a0 100644
--- a/packages/ui-new/src/components/ui/card.tsx
+++ b/packages/ui-new/src/components/ui/card.tsx
@@ -2,12 +2,17 @@ import type * as React from "react";
import { cn } from "@/lib/utils";
-function Card({ className, ...props }: React.ComponentProps<"div">) {
+function Card({
+ className,
+ size = "default",
+ ...props
+}: React.ComponentProps<"div"> & { size?: "default" | "sm" }) {
return (
<div
data-slot="card"
+ data-size={size}
className={cn(
- "bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm",
+ "ring-foreground/10 bg-card text-card-foreground gap-4 overflow-hidden rounded-none py-4 text-xs/relaxed ring-1 has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:gap-2 data-[size=sm]:py-3 data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-none *:[img:last-child]:rounded-none group/card flex flex-col",
className,
)}
{...props}
@@ -20,7 +25,7 @@ function CardHeader({ className, ...props }: React.ComponentProps<"div">) {
<div
data-slot="card-header"
className={cn(
- "@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-2 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6",
+ "gap-1 rounded-none px-4 group-data-[size=sm]/card:px-3 [.border-b]:pb-4 group-data-[size=sm]/card:[.border-b]:pb-3 group/card-header @container/card-header grid auto-rows-min items-start has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto]",
className,
)}
{...props}
@@ -32,7 +37,10 @@ function CardTitle({ className, ...props }: React.ComponentProps<"div">) {
return (
<div
data-slot="card-title"
- className={cn("leading-none font-semibold", className)}
+ className={cn(
+ "text-sm font-medium group-data-[size=sm]/card:text-sm",
+ className,
+ )}
{...props}
/>
);
@@ -42,7 +50,7 @@ function CardDescription({ className, ...props }: React.ComponentProps<"div">) {
return (
<div
data-slot="card-description"
- className={cn("text-muted-foreground text-sm", className)}
+ className={cn("text-muted-foreground text-xs/relaxed", className)}
{...props}
/>
);
@@ -65,7 +73,7 @@ function CardContent({ className, ...props }: React.ComponentProps<"div">) {
return (
<div
data-slot="card-content"
- className={cn("px-6", className)}
+ className={cn("px-4 group-data-[size=sm]/card:px-3", className)}
{...props}
/>
);
@@ -75,7 +83,10 @@ function CardFooter({ className, ...props }: React.ComponentProps<"div">) {
return (
<div
data-slot="card-footer"
- className={cn("flex items-center px-6 [.border-t]:pt-6", className)}
+ className={cn(
+ "rounded-none border-t p-4 group-data-[size=sm]/card:p-3 flex items-center",
+ className,
+ )}
{...props}
/>
);