import React from 'react';
import { LuFileText, LuLightbulb, LuTrash2 } from 'react-icons/lu';
import { cn } from '../copilot/cn';
interface ContentCardProps {
title: string;
preview: React.ReactNode;
lead?: React.ReactNode;
meta?: React.ReactNode;
actions?: React.ReactNode;
children?: React.ReactNode;
idea?: boolean;
className?: string;
selectable?: boolean;
selected?: boolean;
onToggleSelect?: () => void;
}
function ContentCard({
title,
preview,
lead,
meta,
actions,
children,
idea = false,
className,
selectable = false,
selected = false,
onToggleSelect,
}: ContentCardProps): JSX.Element {
const Glyph = idea ? LuLightbulb : LuFileText;
return (
{
if (event.key === 'Enter' || event.key === ' ') {
event.preventDefault();
onToggleSelect?.();
}
}
: undefined
}
className={cn(
'flex flex-col overflow-hidden rounded-[14px] border border-gray-200 bg-white transition-colors',
selectable ? 'cursor-pointer' : 'hover:border-gray-300',
selected && 'ring-2 ring-pink-500',
className
)}
>
{preview}
{selectable && (
)}
{lead && (
{lead}
)}
{title}
{meta && (
{meta}
)}
{children}
{actions && (
{actions}
)}
);
}
export const CARD_ACTION =
'inline-flex h-8 flex-1 items-center justify-center rounded-lg bg-primary px-3 text-[13px] font-semibold text-white transition-opacity hover:opacity-90 disabled:pointer-events-none disabled:opacity-50';
export const CARD_ACTION_QUIET =
'inline-flex h-8 flex-1 items-center justify-center rounded-lg border border-gray-200 px-3 text-[13px] font-medium text-gray-500';
interface CardIconButtonProps {
label: string;
onClick: () => void;
disabled?: boolean;
busy?: boolean;
}
export function CardIconButton({
label,
onClick,
disabled = false,
busy = false,
}: CardIconButtonProps): JSX.Element {
return (
);
}
interface CardOpenButtonProps {
onClick: () => void;
children?: React.ReactNode;
}
export function CardOpenButton({
onClick,
children = 'Open content',
}: CardOpenButtonProps): JSX.Element {
return (
);
}
export default ContentCard;