feat(mui): kit primitives — PageHeader, EmptyState, LoadingState, FilterBar, StatCard + DataTable onRowClick/rowDanger

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
BOHA
2026-06-06 23:18:39 +02:00
parent 26f12b01a0
commit ba18cb07f0
9 changed files with 450 additions and 3 deletions

View File

@@ -0,0 +1,48 @@
import type { ReactNode } from "react";
import Box from "@mui/material/Box";
import Typography from "@mui/material/Typography";
export interface PageHeaderProps {
title: string;
subtitle?: string;
actions?: ReactNode;
}
/**
* Standard page header: title (+ optional subtitle) on the left,
* action controls on the right. No framer-motion — pages add their own entrance.
*/
export default function PageHeader({
title,
subtitle,
actions,
}: PageHeaderProps) {
return (
<Box
sx={{
display: "flex",
alignItems: "flex-start",
justifyContent: "space-between",
flexWrap: "wrap",
gap: 2,
mb: 3,
}}
>
<Box>
<Typography variant="h4">{title}</Typography>
{subtitle && (
<Typography variant="body2" color="text.secondary" sx={{ mt: 0.5 }}>
{subtitle}
</Typography>
)}
</Box>
{actions && (
<Box
sx={{ display: "flex", alignItems: "center", gap: 1, flexShrink: 0 }}
>
{actions}
</Box>
)}
</Box>
);
}