feat: optimize dashboard layout with dynamic grid classes based on visible stats count
This commit is contained in:
parent
c2354440e3
commit
4d22d85851
@ -182,6 +182,18 @@ export default function Dashboard({
|
|||||||
return count;
|
return count;
|
||||||
}, [can]);
|
}, [can]);
|
||||||
|
|
||||||
|
const statsGridClass = useMemo(() => {
|
||||||
|
if (visibleStatsCount === 1) {
|
||||||
|
return 'grid gap-4 grid-cols-1 md:max-w-xl';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (visibleStatsCount === 2) {
|
||||||
|
return 'grid gap-4 grid-cols-1 md:grid-cols-2';
|
||||||
|
}
|
||||||
|
|
||||||
|
return 'grid gap-4 grid-cols-1 md:grid-cols-3';
|
||||||
|
}, [visibleStatsCount]);
|
||||||
|
|
||||||
const chartsGridClass = useMemo(() => {
|
const chartsGridClass = useMemo(() => {
|
||||||
if (visibleChartsCount === 1) {
|
if (visibleChartsCount === 1) {
|
||||||
return 'grid gap-4 grid-cols-1 md:max-w-xl';
|
return 'grid gap-4 grid-cols-1 md:max-w-xl';
|
||||||
@ -300,7 +312,7 @@ export default function Dashboard({
|
|||||||
)}
|
)}
|
||||||
|
|
||||||
{visibleStatsCount > 0 && (
|
{visibleStatsCount > 0 && (
|
||||||
<div className="grid gap-4" style={{ gridTemplateColumns: `repeat(${visibleStatsCount}, minmax(0, 1fr))` }}>
|
<div className={statsGridClass}>
|
||||||
{can('dashboard.attendance') && (
|
{can('dashboard.attendance') && (
|
||||||
<StatCard
|
<StatCard
|
||||||
title="Kehadiran Hari Ini"
|
title="Kehadiran Hari Ini"
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user