sync: migrate erp-mvp to Gitea (2026-08-10)
This commit is contained in:
@@ -0,0 +1,24 @@
|
||||
import type { HTMLAttributes, ReactNode } from 'react';
|
||||
|
||||
type CardProps = HTMLAttributes<HTMLDivElement> & {
|
||||
title?: ReactNode;
|
||||
description?: ReactNode;
|
||||
actions?: ReactNode;
|
||||
};
|
||||
|
||||
export function Card({ title, description, actions, className = '', children, ...props }: CardProps) {
|
||||
return (
|
||||
<section className={['rounded-md border border-slate-200 bg-white shadow-sm', className].filter(Boolean).join(' ')} {...props}>
|
||||
{(title || description || actions) && (
|
||||
<div className="flex flex-col gap-3 border-b border-slate-100 px-4 py-4 sm:flex-row sm:items-start sm:justify-between">
|
||||
<div>
|
||||
{title && <h2 className="text-base font-semibold tracking-normal text-slate-950">{title}</h2>}
|
||||
{description && <p className="mt-1 text-sm text-slate-600">{description}</p>}
|
||||
</div>
|
||||
{actions && <div className="flex flex-wrap gap-2">{actions}</div>}
|
||||
</div>
|
||||
)}
|
||||
{children}
|
||||
</section>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user