Files
blackroad-os-web/components/ui/Card.tsx
Alexa Louise a4bfd5269b feat: Major UI enhancement with BlackRoad brand system
- Add stunning landing page with hero, features, and CTA sections
- Update login/signup pages with dark theme and brand gradients
- Enhance Sidebar with improved navigation and brand colors
- Update AppHeader with search bar, notifications, and user menu
- Add reusable UI components (Button, Card, Input, Badge)
- Add API health and status endpoints
- Apply official BlackRoad brand colors (#FF1D6C hot pink, #F5A623 amber, #2979FF electric blue, #9C27B0 violet)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-11 14:37:43 -06:00

104 lines
2.1 KiB
TypeScript

import { ReactNode } from 'react';
import { cn } from '@/lib/cn';
interface CardProps {
children: ReactNode;
className?: string;
variant?: 'default' | 'gradient' | 'highlight';
padding?: 'none' | 'sm' | 'md' | 'lg';
}
export default function Card({
children,
className,
variant = 'default',
padding = 'md',
}: CardProps) {
const variants = {
default: 'bg-white/5 border border-white/10',
gradient: 'bg-gradient-to-br from-white/10 to-white/5 border border-white/10',
highlight: 'bg-white/5 border border-[#FF1D6C]/30 shadow-lg shadow-[#FF1D6C]/10',
};
const paddings = {
none: '',
sm: 'p-4',
md: 'p-6',
lg: 'p-8',
};
return (
<div
className={cn(
'rounded-2xl transition-all',
variants[variant],
paddings[padding],
className
)}
>
{children}
</div>
);
}
interface CardHeaderProps {
children: ReactNode;
className?: string;
}
export function CardHeader({ children, className }: CardHeaderProps) {
return (
<div className={cn('mb-4', className)}>
{children}
</div>
);
}
interface CardTitleProps {
children: ReactNode;
className?: string;
}
export function CardTitle({ children, className }: CardTitleProps) {
return (
<h3 className={cn('text-lg font-semibold text-white', className)}>
{children}
</h3>
);
}
interface CardDescriptionProps {
children: ReactNode;
className?: string;
}
export function CardDescription({ children, className }: CardDescriptionProps) {
return (
<p className={cn('text-sm text-gray-400 mt-1', className)}>
{children}
</p>
);
}
interface CardContentProps {
children: ReactNode;
className?: string;
}
export function CardContent({ children, className }: CardContentProps) {
return <div className={cn('', className)}>{children}</div>;
}
interface CardFooterProps {
children: ReactNode;
className?: string;
}
export function CardFooter({ children, className }: CardFooterProps) {
return (
<div className={cn('mt-4 pt-4 border-t border-white/10', className)}>
{children}
</div>
);
}