🚀 Initial commit: Versão atual do TrackSteel APP
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
|
||||
import React from 'react';
|
||||
import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card';
|
||||
import { LucideIcon } from 'lucide-react';
|
||||
|
||||
interface StandardCardProps {
|
||||
children: React.ReactNode;
|
||||
title: string;
|
||||
subtitle?: string;
|
||||
icon?: LucideIcon;
|
||||
actions?: React.ReactNode;
|
||||
className?: string;
|
||||
}
|
||||
|
||||
export const StandardCard: React.FC<StandardCardProps> = ({
|
||||
children,
|
||||
title,
|
||||
subtitle,
|
||||
icon: Icon,
|
||||
actions,
|
||||
className = ''
|
||||
}) => {
|
||||
return (
|
||||
<Card className={`bg-card border-border shadow-sm ${className}`}>
|
||||
<CardHeader className="pb-3">
|
||||
<div className="flex items-center justify-between">
|
||||
<CardTitle className="text-card-foreground flex items-center gap-2 text-lg sm:text-xl">
|
||||
{Icon && <Icon className="h-5 w-5 text-muted-foreground" />}
|
||||
<div>
|
||||
{title}
|
||||
{subtitle && <p className="text-sm text-muted-foreground font-normal mt-1">{subtitle}</p>}
|
||||
</div>
|
||||
</CardTitle>
|
||||
{actions}
|
||||
</div>
|
||||
</CardHeader>
|
||||
<CardContent className="pt-0">
|
||||
{children}
|
||||
</CardContent>
|
||||
</Card>
|
||||
);
|
||||
};
|
||||
@@ -0,0 +1,52 @@
|
||||
|
||||
import React from 'react';
|
||||
import { Badge } from '@/components/ui/badge';
|
||||
|
||||
interface StandardPageLayoutProps {
|
||||
children: React.ReactNode;
|
||||
title: string;
|
||||
subtitle?: string;
|
||||
badge?: {
|
||||
text: string;
|
||||
variant?: 'default' | 'secondary' | 'destructive' | 'outline';
|
||||
};
|
||||
actions?: React.ReactNode;
|
||||
className?: string;
|
||||
}
|
||||
|
||||
export const StandardPageLayout: React.FC<StandardPageLayoutProps> = ({
|
||||
children,
|
||||
title,
|
||||
subtitle,
|
||||
badge,
|
||||
actions,
|
||||
className = ''
|
||||
}) => {
|
||||
return (
|
||||
<div className={`min-h-screen bg-background p-4 sm:p-6 ${className}`}>
|
||||
<div className="max-w-7xl mx-auto space-y-4 sm:space-y-6">
|
||||
{/* Header */}
|
||||
<div className="flex items-center justify-between">
|
||||
<div>
|
||||
<h1 className="text-2xl sm:text-3xl font-bold text-foreground mb-2">{title}</h1>
|
||||
{subtitle && <p className="text-muted-foreground text-sm sm:text-base">{subtitle}</p>}
|
||||
</div>
|
||||
<div className="flex items-center gap-4">
|
||||
{badge && (
|
||||
<Badge
|
||||
variant={badge.variant || 'secondary'}
|
||||
className="bg-muted text-muted-foreground border-border"
|
||||
>
|
||||
{badge.text}
|
||||
</Badge>
|
||||
)}
|
||||
{actions}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Content */}
|
||||
{children}
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
Reference in New Issue
Block a user