Hello There
}
maxWidth='none'
position='top'
noPadding
{...(isClient ? { appendTo: document.body } : {})}
>
{({ visible, setVisible }) => (
)}
)
}
// Base metric template
const createMetric = (overrides = {}) => ({
formatType: 'number',
decimalScale: 0,
roundNumber: true,
routerComponent: 'Link',
routerProp: 'to',
beta: false,
reverse: false,
truncateValues: false,
showLessThanZeroPercentageChange: true,
noPctConversion: false,
showChangeBelowMainMetric: false,
...overrides,
})
// Helper function to generate metrics
const generateMetrics = (count: number, type: 'number' | 'text' = 'number') => {
return Array.from({ length: count }, (_, i) =>
createMetric({
title: `Metric ${i + 1}`,
tooltip: `Tooltip for Metric ${i + 1}`,
value: type === 'number' ? Math.floor(Math.random() * 1000000) : 0,
change: type === 'number' ? Math.floor(Math.random() * 100000) : 0,
pctChange: type === 'number' ? (Math.random() * 20 - 10).toFixed(1) : 0,
formatType: type,
linkTo: `/metric-${i + 1}`,
beta: i % 3 === 0,
reverse: i % 2 === 0,
...(type === 'text' && { textValue: `Status ${i + 1}` }),
...(type === 'number' &&
i % 2 === 0 && {
currency: { currencyCode: 'USD', currencySymbol: '$' },
}),
}),
)
}
// Basic metrics with numeric values
export const headerMetricData = [
createMetric({
title: 'Total Revenue',
tooltip: 'Total revenue for the period',
value: 1500000,
change: 150000,
pctChange: 11.1,
linkTo: '/revenue',
currency: { currencyCode: 'USD', currencySymbol: '$' },
}),
createMetric({
title: 'Active Users',
tooltip: 'Number of active users',
value: 25000,
change: 2500,
pctChange: 11.1,
linkTo: '/users',
}),
createMetric({
title: 'Conversion Rate',
tooltip: 'User conversion rate',
value: 5.2,
change: 0.8,
pctChange: 18.2,
formatType: 'percentage',
decimalScale: 1,
linkTo: '/conversion',
beta: true,
noPctConversion: true,
}),
createMetric({
title: 'Bounce Rate',
tooltip: 'Page bounce rate',
value: 42.5,
change: -2.3,
pctChange: -5.1,
formatType: 'percentage',
decimalScale: 1,
linkTo: '/bounce',
reverse: true,
noPctConversion: true,
}),
]
// Text-based metrics
export const headerMetricTextData = [
createMetric({
title: 'Status',
tooltip: 'Current status',
formatType: 'text',
roundNumber: false,
linkTo: '/status',
textValue: 'Active',
}),
createMetric({
title: 'Last Updated',
tooltip: 'Last update timestamp',
formatType: 'text',
roundNumber: false,
linkTo: '/updates',
textValue: '2 hours ago',
}),
createMetric({
title: 'Environment',
tooltip: 'Current environment',
formatType: 'text',
roundNumber: false,
linkTo: '/environment',
textValue: 'Production',
}),
]
// Metrics with tooltips
export const headerMetricTooltipData = [
createMetric({
title: 'Revenue Growth',
tooltip: 'Revenue growth rate',
value: 1500000,
change: 150000,
pctChange: 11.1,
linkTo: '/growth',
currency: { currencyCode: 'USD', currencySymbol: '$' },
comparisonTooltip: {
comparison: 150000,
timeframe: { start: '2023-01-01', end: '2023-12-31' },
currentPeriodDates: { start: '2024-01-01', end: '2024-12-31' },
},
}),
createMetric({
title: 'User Growth',
tooltip: 'User growth rate',
value: 25000,
change: 2500,
pctChange: 11.1,
linkTo: '/user-growth',
comparisonTooltip: {
comparison: 2500,
timeframe: { start: '2023-01-01', end: '2023-12-31' },
currentPeriodDates: { start: '2024-01-01', end: '2024-12-31' },
},
}),
]
// Metrics with action buttons
export const headerMetricActionData = [
createMetric({
title: 'Total Revenue',
tooltip: 'Total revenue for the period',
value: 1500000,
change: 150000,
pctChange: 11.1,
linkTo: '/revenue',
currency: { currencyCode: 'USD', currencySymbol: '$' },
actionButton: