2025-12-14 12:23:59 +01:00
|
|
|
/*
|
2026-01-12 15:00:36 +01:00
|
|
|
* Copyright (c) 2026 by Christian Kellner.
|
2025-12-14 12:23:59 +01:00
|
|
|
* Licensed under Apache-2.0 with Commons Clause and Attribution/Naming Clause
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
import React from 'react';
|
2026-01-28 14:27:03 +01:00
|
|
|
import { Card, Typography, Space } from '@douyinfe/semi-ui-19';
|
2025-12-14 12:23:59 +01:00
|
|
|
import './DashboardCard.less';
|
|
|
|
|
|
|
|
|
|
export default function KpiCard({
|
|
|
|
|
title,
|
|
|
|
|
icon,
|
|
|
|
|
value,
|
|
|
|
|
valueFontSize = '1.5rem',
|
|
|
|
|
description,
|
|
|
|
|
color = 'gray',
|
|
|
|
|
children,
|
|
|
|
|
}) {
|
2026-01-28 14:27:03 +01:00
|
|
|
const { Text } = Typography;
|
2025-12-14 12:23:59 +01:00
|
|
|
return (
|
2026-01-28 14:27:03 +01:00
|
|
|
<Card className={`dashboard-card ${color}`} bodyStyle={{ padding: '16px' }}>
|
|
|
|
|
<Space vertical align="start" spacing="tight" style={{ width: '100%' }}>
|
|
|
|
|
<Space>
|
|
|
|
|
<div className="dashboard-card__icon">{icon}</div>
|
|
|
|
|
<Text strong className="dashboard-card__title">
|
|
|
|
|
{title}
|
|
|
|
|
</Text>
|
|
|
|
|
</Space>
|
|
|
|
|
<div className="dashboard-card__content">
|
|
|
|
|
<div className="dashboard-card__value" style={{ fontSize: valueFontSize }}>
|
|
|
|
|
{value}
|
|
|
|
|
{children}
|
|
|
|
|
</div>
|
|
|
|
|
{description && (
|
|
|
|
|
<Text size="small" type="tertiary" className="dashboard-card__desc">
|
|
|
|
|
{description}
|
|
|
|
|
</Text>
|
|
|
|
|
)}
|
2025-12-14 12:23:59 +01:00
|
|
|
</div>
|
2026-01-28 14:27:03 +01:00
|
|
|
</Space>
|
|
|
|
|
</Card>
|
2025-12-14 12:23:59 +01:00
|
|
|
);
|
|
|
|
|
}
|