This commit is contained in:
Yash 2026-01-23 23:46:48 +05:30 committed by GitHub
commit 504bcd6a29
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 45 additions and 1 deletions

View file

@ -4,6 +4,7 @@ import { FilterBar } from '@/components/input/FilterBar';
import { MonthFilter } from '@/components/input/MonthFilter'; import { MonthFilter } from '@/components/input/MonthFilter';
import { WebsiteDateFilter } from '@/components/input/WebsiteDateFilter'; import { WebsiteDateFilter } from '@/components/input/WebsiteDateFilter';
import { WebsiteFilterButton } from '@/components/input/WebsiteFilterButton'; import { WebsiteFilterButton } from '@/components/input/WebsiteFilterButton';
import UniqueVisitors from '@/components/metrics/UniqueVisitors';
export function WebsiteControls({ export function WebsiteControls({
websiteId, websiteId,
@ -23,8 +24,9 @@ export function WebsiteControls({
return ( return (
<Column gap> <Column gap>
<Grid columns={{ xs: '1fr', md: 'auto 1fr' }} gap> <Grid columns={{ xs: '1fr', md: 'auto 1fr' }} gap>
<Row alignItems="center" justifyContent="flex-start"> <Row alignItems="center" justifyContent="flex-start" gap="4">
{allowFilter ? <WebsiteFilterButton websiteId={websiteId} /> : <div />} {allowFilter ? <WebsiteFilterButton websiteId={websiteId} /> : <div />}
<UniqueVisitors websiteId={websiteId} />
</Row> </Row>
<Row alignItems="center" justifyContent={{ xs: 'flex-start', md: 'flex-end' }}> <Row alignItems="center" justifyContent={{ xs: 'flex-start', md: 'flex-end' }}>
{allowDateFilter && ( {allowDateFilter && (

View file

@ -0,0 +1,42 @@
import { Loading, Row, Text } from '@umami/react-zen';
import { useMessages, useWebsiteStatsQuery } from '@/components/hooks';
interface UniqueVisitorsProps {
websiteId: string;
}
const UniqueVisitors = ({ websiteId }: UniqueVisitorsProps) => {
const { data, isLoading, error } = useWebsiteStatsQuery(websiteId);
const { formatMessage, labels } = useMessages();
const renderContent = () => {
if (isLoading) {
return <Loading icon="dots" />;
}
if (error) {
return (
<Text size="5" color="red">
Error loading data
</Text>
);
}
return (
<Text size="5" weight="bold">
{data?.visitors ?? 0}
</Text>
);
};
return (
<Row alignItems="center" gap="3">
<Text size="5" color="gray">
{formatMessage(labels.visitors)}:
</Text>
{renderContent()}
</Row>
);
};
export default UniqueVisitors;