@ammarkhalidfarooq/dashboard-package 0.6.23 → 0.6.25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"RenderChartCard.es.js","sources":["../src/components/RevenueChart.jsx","../src/components/MetricSelector.jsx","../src/components/UI/RenderChartCard/index.jsx"],"sourcesContent":["import React from 'react';\r\nimport ReactApexChart from 'react-apexcharts';\r\nimport { useTheme } from '@mui/material/styles';\r\n\r\nconst RevenueChart = ({ metric, data, series, categories, height = 350, stacked = false, type = \"area\", id = \"revenue-chart\", colors, showLegend = true }) => {\r\n const theme = useTheme();\r\n\r\n const isRadial = type === 'donut' || type === 'pie';\r\n\r\n // Base options common to all charts\r\n const baseOptions = {\r\n chart: {\r\n id: id,\r\n type: type,\r\n toolbar: { show: false },\r\n sparkline: { enabled: false },\r\n animations: { enabled: false }\r\n },\r\n colors: colors || [theme.palette.primary.main, '#4B4BC2', '#7E7EE6', '#A3A3F0', '#C8C8FA'],\r\n tooltip: {\r\n theme: 'light',\r\n y: {\r\n formatter: (value) => (metric?.toLowerCase() === 'revenue') ? `$${(value || 0).toLocaleString()}` : (value || 0)\r\n }\r\n }\r\n };\r\n\r\n const radialOptions = {\r\n ...baseOptions,\r\n labels: categories || [],\r\n stroke: { width: 0 },\r\n dataLabels: { enabled: true },\r\n legend: {\r\n show: showLegend,\r\n position: 'bottom',\r\n horizontalAlign: 'center'\r\n },\r\n plotOptions: {\r\n pie: {\r\n donut: {\r\n size: '70%',\r\n labels: {\r\n show: true,\r\n total: {\r\n show: true,\r\n label: 'Total',\r\n formatter: function (w) {\r\n const sum = w.globals.seriesTotals.reduce((a, b) => a + b, 0);\r\n return metric === 'Revenue' ? `$${Math.round(sum).toLocaleString()}` : Math.round(sum).toLocaleString();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n };\r\n\r\n const linearOptions = {\r\n ...baseOptions,\r\n chart: {\r\n ...baseOptions.chart,\r\n stacked: stacked\r\n },\r\n stroke: {\r\n curve: 'smooth',\r\n width: type === 'bar' ? 0 : 2\r\n },\r\n fill: {\r\n type: type === 'line' ? 'solid' : 'gradient',\r\n opacity: type === 'line' ? 0 : 1,\r\n gradient: type === 'line' ? undefined : {\r\n shadeIntensity: 1,\r\n opacityFrom: 0.8,\r\n opacityTo: 0.4,\r\n stops: [0, 100]\r\n }\r\n },\r\n xaxis: {\r\n type: 'category',\r\n categories: categories || [],\r\n axisBorder: { show: false },\r\n axisTicks: { show: false },\r\n tickAmount: 5,\r\n labels: {\r\n rotate: 0,\r\n rotateAlways: false,\r\n hideOverlappingLabels: true,\r\n style: { colors: '#A1A1A8', fontSize: '12px' },\r\n formatter: (val) => {\r\n return val;\r\n }\r\n }\r\n },\r\n yaxis: {\r\n show: true,\r\n labels: {\r\n style: { colors: '#A1A1A8', fontSize: '12px' },\r\n formatter: (value) => (metric?.toLowerCase() === 'revenue') ? `$${(value || 0).toLocaleString()}` : (value || 0)\r\n }\r\n },\r\n grid: {\r\n show: true,\r\n borderColor: '#f1f1f1',\r\n strokeDashArray: 4,\r\n position: 'back'\r\n },\r\n dataLabels: { enabled: false },\r\n legend: {\r\n show: showLegend && (stacked || (series && series.length > 1)),\r\n position: 'top',\r\n horizontalAlign: 'left'\r\n },\r\n plotOptions: {\r\n bar: {\r\n borderRadius: 4,\r\n columnWidth: '60%'\r\n }\r\n }\r\n };\r\n\r\n const chartOptions = isRadial ? radialOptions : linearOptions;\r\n\r\n // Ensure series is in the correct format for the chart type\r\n let chartSeries = [];\r\n if (isRadial) {\r\n // For donut/pie, series must be a simple array of numbers\r\n const processedData = Array.isArray(data) ? data.map(v => (typeof v === 'object' && v !== null) ? v.value : v) : [];\r\n chartSeries = processedData.length > 0 ? processedData : (series?.[0]?.data || []);\r\n } else {\r\n // For bar/line/area, series must be an array of objects [{ name: '', data: [] }]\r\n const processedData = Array.isArray(data) ? data.map(v => (typeof v === 'object' && v !== null) ? v.value : v) : [];\r\n chartSeries = Array.isArray(series) ? series : [\r\n {\r\n name: metric || \"Value\",\r\n data: processedData\r\n }\r\n ];\r\n }\r\n\r\n return (\r\n <ReactApexChart\r\n key={`${id}-${type}-${chartSeries.length}`}\r\n options={chartOptions}\r\n series={chartSeries}\r\n type={type}\r\n height={height}\r\n width=\"100%\"\r\n />\r\n );\r\n};\r\n\r\nexport default RevenueChart;\r\n","import React from 'react';\r\nimport { Button, Menu, MenuItem, Box } from '@mui/material';\r\nimport { MoreHoriz as MoreHorizIcon } from '@mui/icons-material';\r\n\r\nconst MetricSelector = ({ metric, onMetricChange, options = ['Revenue', 'Donations'], label = \"Metric\" }) => {\r\n const [anchorEl, setAnchorEl] = React.useState(null);\r\n const open = Boolean(anchorEl);\r\n\r\n const handleClick = (event) => {\r\n setAnchorEl(event.currentTarget);\r\n };\r\n\r\n const handleClose = (value) => {\r\n if (typeof value === 'string') {\r\n onMetricChange(value);\r\n }\r\n setAnchorEl(null);\r\n };\r\n\r\n return (\r\n <Box sx={{ display: 'flex', gap: 1 }}>\r\n <Button\r\n id=\"metric-button\"\r\n aria-controls={open ? 'metric-menu' : undefined}\r\n aria-haspopup=\"true\"\r\n aria-expanded={open ? 'true' : undefined}\r\n onClick={handleClick}\r\n variant=\"outlined\"\r\n sx={{ \r\n borderRadius: '8px', \r\n borderColor: '#E9E9EB', \r\n color: '#000', \r\n textTransform: 'none',\r\n fontWeight: 600,\r\n px: 2,\r\n height: '40px',\r\n '&:hover': {\r\n borderColor: 'primary.main',\r\n bgcolor: 'rgba(99, 99, 230, 0.04)'\r\n }\r\n }}\r\n >\r\n {label}: {metric}\r\n </Button>\r\n <Menu\r\n id=\"metric-menu\"\r\n anchorEl={anchorEl}\r\n open={open}\r\n onClose={() => handleClose()}\r\n MenuListProps={{\r\n 'aria-labelledby': 'metric-button',\r\n }}\r\n PaperProps={{\r\n sx: {\r\n borderRadius: '8px',\r\n mt: 1,\r\n boxShadow: '0 4px 12px rgba(0,0,0,0.1)',\r\n minWidth: '150px'\r\n }\r\n }}\r\n >\r\n {options.map((option) => (\r\n <MenuItem \r\n key={option} \r\n onClick={() => handleClose(option)} \r\n sx={{ fontWeight: metric === option ? 700 : 400 }}\r\n >\r\n {option}\r\n </MenuItem>\r\n ))}\r\n </Menu>\r\n </Box>\r\n );\r\n};\r\n\r\nexport default MetricSelector;\r\n","import {\r\n Box,\r\n Card,\r\n CardContent,\r\n Grid,\r\n IconButton,\r\n Typography,\r\n} from \"@mui/material\";\r\nimport RevenueChart from \"../../RevenueChart\";\r\nimport { MoreHoriz as MoreHorizIcon } from \"@mui/icons-material\";\r\nimport MetricSelector from \"../../MetricSelector\";\r\n\r\nconst RenderChartCard = ({\r\n item,\r\n index,\r\n isPrimary = false,\r\n isPremium = false,\r\n metric,\r\n setMetric,\r\n md = 4,\r\n numberOfDays = 30,\r\n type = \"area\",\r\n sx = {},\r\n cardSx = {},\r\n contentSx = {},\r\n}) => {\r\n const daysLabel = `${numberOfDays} day${numberOfDays === 1 ? \"\" : \"s\"}`;\r\n return (\r\n <Grid\r\n item\r\n xs={12}\r\n md={md}\r\n key={item.label + index}\r\n sx={{ display: \"flex\", paddingTop: \"0px !important\", ...sx }}\r\n >\r\n <Card\r\n sx={{\r\n width: \"100%\",\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n boxShadow: \"0 4px 24px rgba(0,0,0,0.06)\",\r\n borderRadius: 4,\r\n border: \"1px solid #f0f0f0\",\r\n ...cardSx,\r\n }}\r\n >\r\n <CardContent\r\n sx={{\r\n p: item.exportMode ? 2 : 3,\r\n flexGrow: 1,\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n ...contentSx,\r\n }}\r\n >\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n alignItems: \"flex-start\",\r\n mb: item.exportMode ? 2 : isPremium ? 3 : 2,\r\n }}\r\n >\r\n {isPremium ? (\r\n <Box sx={{ textAlign: \"left\" }}>\r\n <Typography\r\n sx={{\r\n color: \"#000000\",\r\n fontWeight: 700,\r\n fontSize: \"18px\",\r\n mb: 0.2,\r\n }}\r\n >\r\n {item.label}\r\n </Typography>\r\n <Typography\r\n variant=\"caption\"\r\n sx={{\r\n color: \"rgba(0, 0, 0, 0.4)\",\r\n fontWeight: 400,\r\n display: \"block\",\r\n mb: 1.5,\r\n }}\r\n >\r\n {item.subtitle || `Last ${daysLabel} · daily aggregation`}\r\n </Typography>\r\n\r\n <Box sx={{ display: \"flex\", alignItems: \"center\", gap: 1.5 }}>\r\n {item.value && (\r\n <Typography\r\n sx={{ fontWeight: 700, color: \"#000000\", fontSize: \"28px\" }}\r\n >\r\n {typeof item.value === 'object' && item.value !== null\r\n ? (item.value.value !== undefined ? item.value.value : JSON.stringify(item.value))\r\n : item.value}\r\n </Typography>\r\n )}\r\n {(item.trend || \"18%\") && (\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: 0.5,\r\n bgcolor: \"#8df3be9a\",\r\n color: \"#054835ff\",\r\n px: 1,\r\n py: 0.5,\r\n borderRadius: \"100px\",\r\n fontSize: \"12px\",\r\n fontWeight: 600,\r\n }}\r\n >\r\n <span>▲</span>\r\n {item.trend || \"18% vs last month\"}\r\n </Box>\r\n )}\r\n </Box>\r\n </Box>\r\n ) : (\r\n <Box sx={{ textAlign: \"left\" }}>\r\n <Typography\r\n variant=\"subtitle2\"\r\n sx={{\r\n color: \"#000000\",\r\n fontWeight: 600,\r\n textTransform: \"uppercase\",\r\n letterSpacing: \"0.5px\",\r\n mb: 0.5,\r\n }}\r\n >\r\n {item.label}\r\n </Typography>\r\n {item.value && (\r\n <Typography\r\n variant=\"subtitle2\"\r\n sx={{ fontWeight: 600, color: \"#000000\", mb: 0.5 }}\r\n >\r\n {typeof item.value === 'object' && item.value !== null\r\n ? (item.value.value !== undefined ? item.value.value : JSON.stringify(item.value))\r\n : item.value}\r\n </Typography>\r\n )}\r\n {item.subValue && (\r\n <Typography\r\n variant=\"subtitle2\"\r\n sx={{ color: \"#000000\", fontWeight: 600 }}\r\n >\r\n {typeof item.subValue === 'object' && item.subValue !== null\r\n ? JSON.stringify(item.subValue)\r\n : item.subValue}\r\n </Typography>\r\n )}\r\n </Box>\r\n )}\r\n\r\n <Box sx={{ display: \"flex\", gap: 1, alignItems: \"center\" }}>\r\n {item.hideControls ? (\r\n item.series && (\r\n <Box\r\n sx={{\r\n display: item.exportMode ? \"flex\" : { xs: \"none\", sm: \"flex\" },\r\n gap: 2,\r\n alignItems: \"center\",\r\n }}\r\n >\r\n {[\r\n { label: \"Paid Ads\", color: \"#6366F1\" },\r\n { label: \"Organic\", color: \"#10B981\" },\r\n { label: \"Email\", color: \"#06B6D4\" },\r\n ].map((leg) => (\r\n <Box\r\n key={leg.label}\r\n sx={{ display: \"flex\", alignItems: \"center\", gap: 0.5 }}\r\n >\r\n <Box\r\n sx={{\r\n width: 8,\r\n height: 8,\r\n borderRadius: \"50%\",\r\n bgcolor: leg.color,\r\n }}\r\n />\r\n <Typography\r\n sx={{\r\n fontSize: \"12px\",\r\n color: \"rgba(0,0,0,0.6)\",\r\n fontWeight: 500,\r\n }}\r\n >\r\n {leg.label}\r\n </Typography>\r\n </Box>\r\n ))}\r\n </Box>\r\n )\r\n) : (\r\n <>\r\n {item.showSelector && (\r\n <MetricSelector\r\n metric={metric}\r\n onMetricChange={setMetric}\r\n options={[\"Revenue\", \"Donations\"]}\r\n />\r\n )}\r\n <IconButton\r\n sx={{\r\n border: \"1px solid #E9E9EB\",\r\n borderRadius: \"8px\",\r\n color: \"#000\",\r\n height: \"40px\",\r\n width: \"40px\",\r\n \"&:hover\": {\r\n borderColor: \"primary.main\",\r\n bgcolor: \"rgba(99, 99, 230, 0.04)\",\r\n },\r\n }}\r\n >\r\n <MoreHorizIcon sx={{ fontSize: \"1.2rem\" }} />\r\n </IconButton>\r\n </>\r\n )}\r\n </Box>\r\n </Box>\r\n\r\n <Box sx={{ flexGrow: 1, minHeight: isPrimary ? \"250px\" : \"200px\" }}>\r\n <RevenueChart\r\n id={`${item.label}-${index}`}\r\n metric={\r\n item.label.includes(\"Rate\") ||\r\n item.label.includes(\"Performance\") ||\r\n item.label.includes(\"source\") ||\r\n item.label === \"URL\"\r\n ? \"Percent\"\r\n : item.stacked\r\n ? item.label.includes(\"Traffic\")\r\n ? \"Visitors\"\r\n : \"Donors\"\r\n : metric\r\n }\r\n data={item.data}\r\n series={item.series}\r\n categories={item.categories}\r\n height={item.height || (isPrimary ? 250 : 200)}\r\n stacked={item.stacked}\r\n type={type || item.type || \"area\"}\r\n colors={item.colors}\r\n showLegend={!item.hideControls}\r\n />\r\n {item.hideControls && item.series && (\r\n <Box\r\n sx={{\r\n display: { xs: \"flex\", sm: \"none\" },\r\n justifyContent: \"center\",\r\n gap: 2,\r\n flexWrap: \"wrap\",\r\n mt: 1.5,\r\n }}\r\n >\r\n {[\r\n { label: \"Paid Ads\", color: \"#6366F1\" },\r\n { label: \"Organic\", color: \"#10B981\" },\r\n { label: \"Email\", color: \"#06B6D4\" },\r\n ].map((leg) => (\r\n <Box\r\n key={leg.label}\r\n sx={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: 0.5,\r\n }}\r\n >\r\n <Box\r\n sx={{\r\n width: 8,\r\n height: 8,\r\n borderRadius: \"50%\",\r\n bgcolor: leg.color,\r\n }}\r\n />\r\n <Typography\r\n sx={{\r\n fontSize: \"11px\",\r\n color: \"rgba(0,0,0,0.6)\",\r\n fontWeight: 500,\r\n marginTop: {xs: \"1px\", sm: 0}\r\n }}\r\n >\r\n {leg.label}\r\n </Typography>\r\n </Box>\r\n ))}\r\n </Box>\r\n )}\r\n </Box>\r\n\r\n {item.footer && (\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n mt: 2,\r\n pt: 2,\r\n borderTop: \"1px solid #f0f0f0\",\r\n }}\r\n >\r\n <Typography\r\n variant=\"caption\"\r\n sx={{ color: \"#606062\", fontWeight: 600 }}\r\n >\r\n {item.footer.left}\r\n </Typography>\r\n <Typography\r\n variant=\"caption\"\r\n sx={{ color: \"#606062\", fontWeight: 600 }}\r\n >\r\n {item.footer.right}\r\n </Typography>\r\n </Box>\r\n )}\r\n </CardContent>\r\n </Card>\r\n </Grid>\r\n );\r\n};\r\n\r\nexport default RenderChartCard;\r\n"],"names":["RevenueChart","_ref","metric","data","series","categories","_ref$height","height","_ref$stacked","stacked","_ref$type","type","_ref$id","id","colors","_ref$showLegend","showLegend","theme","useTheme","isRadial","baseOptions","chart","toolbar","show","sparkline","enabled","animations","palette","primary","main","tooltip","y","formatter","value","toLowerCase","concat","toLocaleString","radialOptions","_objectSpread","labels","stroke","width","dataLabels","legend","position","horizontalAlign","plotOptions","pie","donut","size","total","label","w","sum","globals","seriesTotals","reduce","a","b","Math","round","linearOptions","curve","fill","opacity","gradient","undefined","shadeIntensity","opacityFrom","opacityTo","stops","xaxis","axisBorder","axisTicks","tickAmount","rotate","rotateAlways","hideOverlappingLabels","style","fontSize","val","yaxis","grid","borderColor","strokeDashArray","length","bar","borderRadius","columnWidth","chartOptions","chartSeries","_series$","processedData","Array","isArray","map","v","_typeof","name","_jsx","ReactApexChart","options","MetricSelector","onMetricChange","_ref$options","_ref$label","_React$useState","React","useState","_React$useState2","_slicedToArray","anchorEl","setAnchorEl","open","Boolean","handleClick","event","currentTarget","handleClose","_jsxs","Box","sx","display","gap","children","Button","onClick","variant","color","textTransform","fontWeight","px","bgcolor","Menu","onClose","MenuListProps","PaperProps","mt","boxShadow","minWidth","option","MenuItem","RenderChartCard","item","index","_ref$isPrimary","isPrimary","_ref$isPremium","isPremium","setMetric","_ref$md","md","_ref$numberOfDays","numberOfDays","_ref$sx","_ref$cardSx","cardSx","_ref$contentSx","contentSx","daysLabel","Grid","xs","paddingTop","Card","flexDirection","border","CardContent","p","exportMode","flexGrow","justifyContent","alignItems","mb","textAlign","Typography","subtitle","JSON","stringify","trend","py","letterSpacing","subValue","hideControls","sm","leg","_Fragment","showSelector","IconButton","MoreHorizIcon","minHeight","includes","flexWrap","marginTop","footer","pt","borderTop","left","right"],"mappings":"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"}
1
+ {"version":3,"file":"RenderChartCard.es.js","sources":["../src/components/RevenueChart.jsx","../src/components/MetricSelector.jsx","../src/config/helper.js","../src/components/UI/RenderChartCard/index.jsx"],"sourcesContent":["import React from 'react';\r\nimport ReactApexChart from 'react-apexcharts';\r\nimport { useTheme } from '@mui/material/styles';\r\n\r\nconst RevenueChart = ({ metric, data, series, categories, height = 350, stacked = false, type = \"area\", id = \"revenue-chart\", colors, showLegend = true }) => {\r\n const theme = useTheme();\r\n\r\n const isRadial = type === 'donut' || type === 'pie';\r\n\r\n // Base options common to all charts\r\n const baseOptions = {\r\n chart: {\r\n id: id,\r\n type: type,\r\n toolbar: { show: false },\r\n sparkline: { enabled: false },\r\n animations: { enabled: false }\r\n },\r\n colors: colors || [theme.palette.primary.main, '#4B4BC2', '#7E7EE6', '#A3A3F0', '#C8C8FA'],\r\n tooltip: {\r\n theme: 'light',\r\n y: {\r\n formatter: (value) => (metric?.toLowerCase() === 'revenue') ? `$${(value || 0).toLocaleString()}` : (value || 0)\r\n }\r\n }\r\n };\r\n\r\n const radialOptions = {\r\n ...baseOptions,\r\n labels: categories || [],\r\n stroke: { width: 0 },\r\n dataLabels: { enabled: true },\r\n legend: {\r\n show: showLegend,\r\n position: 'bottom',\r\n horizontalAlign: 'center'\r\n },\r\n plotOptions: {\r\n pie: {\r\n donut: {\r\n size: '70%',\r\n labels: {\r\n show: true,\r\n total: {\r\n show: true,\r\n label: 'Total',\r\n formatter: function (w) {\r\n const sum = w.globals.seriesTotals.reduce((a, b) => a + b, 0);\r\n return metric === 'Revenue' ? `$${Math.round(sum).toLocaleString()}` : Math.round(sum).toLocaleString();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n };\r\n\r\n const linearOptions = {\r\n ...baseOptions,\r\n chart: {\r\n ...baseOptions.chart,\r\n stacked: stacked\r\n },\r\n stroke: {\r\n curve: 'smooth',\r\n width: type === 'bar' ? 0 : 2\r\n },\r\n fill: {\r\n type: type === 'line' ? 'solid' : 'gradient',\r\n opacity: type === 'line' ? 0 : 1,\r\n gradient: type === 'line' ? undefined : {\r\n shadeIntensity: 1,\r\n opacityFrom: 0.8,\r\n opacityTo: 0.4,\r\n stops: [0, 100]\r\n }\r\n },\r\n xaxis: {\r\n type: 'category',\r\n categories: categories || [],\r\n axisBorder: { show: false },\r\n axisTicks: { show: false },\r\n tickAmount: 5,\r\n labels: {\r\n rotate: 0,\r\n rotateAlways: false,\r\n hideOverlappingLabels: true,\r\n style: { colors: '#A1A1A8', fontSize: '12px' },\r\n formatter: (val) => {\r\n return val;\r\n }\r\n }\r\n },\r\n yaxis: {\r\n show: true,\r\n labels: {\r\n style: { colors: '#A1A1A8', fontSize: '12px' },\r\n formatter: (value) => (metric?.toLowerCase() === 'revenue') ? `$${(value || 0).toLocaleString()}` : (value || 0)\r\n }\r\n },\r\n grid: {\r\n show: true,\r\n borderColor: '#f1f1f1',\r\n strokeDashArray: 4,\r\n position: 'back'\r\n },\r\n dataLabels: { enabled: false },\r\n legend: {\r\n show: showLegend && (stacked || (series && series.length > 1)),\r\n position: 'top',\r\n horizontalAlign: 'left'\r\n },\r\n plotOptions: {\r\n bar: {\r\n borderRadius: 4,\r\n columnWidth: '60%'\r\n }\r\n }\r\n };\r\n\r\n const chartOptions = isRadial ? radialOptions : linearOptions;\r\n\r\n // Ensure series is in the correct format for the chart type\r\n let chartSeries = [];\r\n if (isRadial) {\r\n // For donut/pie, series must be a simple array of numbers\r\n const processedData = Array.isArray(data) ? data.map(v => (typeof v === 'object' && v !== null) ? v.value : v) : [];\r\n chartSeries = processedData.length > 0 ? processedData : (series?.[0]?.data || []);\r\n } else {\r\n // For bar/line/area, series must be an array of objects [{ name: '', data: [] }]\r\n const processedData = Array.isArray(data) ? data.map(v => (typeof v === 'object' && v !== null) ? v.value : v) : [];\r\n chartSeries = Array.isArray(series) ? series : [\r\n {\r\n name: metric || \"Value\",\r\n data: processedData\r\n }\r\n ];\r\n }\r\n\r\n return (\r\n <ReactApexChart\r\n key={`${id}-${type}-${chartSeries.length}`}\r\n options={chartOptions}\r\n series={chartSeries}\r\n type={type}\r\n height={height}\r\n width=\"100%\"\r\n />\r\n );\r\n};\r\n\r\nexport default RevenueChart;\r\n","import React from 'react';\r\nimport { Button, Menu, MenuItem, Box } from '@mui/material';\r\nimport { MoreHoriz as MoreHorizIcon } from '@mui/icons-material';\r\n\r\nconst MetricSelector = ({ metric, onMetricChange, options = ['Revenue', 'Donations'], label = \"Metric\" }) => {\r\n const [anchorEl, setAnchorEl] = React.useState(null);\r\n const open = Boolean(anchorEl);\r\n\r\n const handleClick = (event) => {\r\n setAnchorEl(event.currentTarget);\r\n };\r\n\r\n const handleClose = (value) => {\r\n if (typeof value === 'string') {\r\n onMetricChange(value);\r\n }\r\n setAnchorEl(null);\r\n };\r\n\r\n return (\r\n <Box sx={{ display: 'flex', gap: 1 }}>\r\n <Button\r\n id=\"metric-button\"\r\n aria-controls={open ? 'metric-menu' : undefined}\r\n aria-haspopup=\"true\"\r\n aria-expanded={open ? 'true' : undefined}\r\n onClick={handleClick}\r\n variant=\"outlined\"\r\n sx={{ \r\n borderRadius: '8px', \r\n borderColor: '#E9E9EB', \r\n color: '#000', \r\n textTransform: 'none',\r\n fontWeight: 600,\r\n px: 2,\r\n height: '40px',\r\n '&:hover': {\r\n borderColor: 'primary.main',\r\n bgcolor: 'rgba(99, 99, 230, 0.04)'\r\n }\r\n }}\r\n >\r\n {label}: {metric}\r\n </Button>\r\n <Menu\r\n id=\"metric-menu\"\r\n anchorEl={anchorEl}\r\n open={open}\r\n onClose={() => handleClose()}\r\n MenuListProps={{\r\n 'aria-labelledby': 'metric-button',\r\n }}\r\n PaperProps={{\r\n sx: {\r\n borderRadius: '8px',\r\n mt: 1,\r\n boxShadow: '0 4px 12px rgba(0,0,0,0.1)',\r\n minWidth: '150px'\r\n }\r\n }}\r\n >\r\n {options.map((option) => (\r\n <MenuItem \r\n key={option} \r\n onClick={() => handleClose(option)} \r\n sx={{ fontWeight: metric === option ? 700 : 400 }}\r\n >\r\n {option}\r\n </MenuItem>\r\n ))}\r\n </Menu>\r\n </Box>\r\n );\r\n};\r\n\r\nexport default MetricSelector;\r\n","export const TREND_UP_COLOR = \"#22C55E\";\r\nexport const TREND_DOWN_COLOR = \"#EF4444\";\r\n\r\nexport function getTrendDirection(valueOrText) {\r\n const text = String(valueOrText ?? \"\").trim();\r\n if (text.includes(\"▼\")) return \"down\";\r\n if (text.includes(\"▲\")) return \"up\";\r\n\r\n const match = text.match(/-?\\d+(\\.\\d+)?/);\r\n if (!match) return \"neutral\";\r\n\r\n const n = Number(match[0]);\r\n if (n < 0) return \"down\";\r\n if (n > 0) return \"up\";\r\n return \"neutral\";\r\n}\r\n\r\nexport function getTrendColor(\r\n valueOrText,\r\n { up = TREND_UP_COLOR, down = TREND_DOWN_COLOR, neutral = up } = {}\r\n) {\r\n const direction = getTrendDirection(valueOrText);\r\n if (direction === \"down\") return down;\r\n if (direction === \"up\") return up;\r\n return neutral;\r\n}\r\n\r\nexport function getTrendArrow(valueOrText) {\r\n const direction = getTrendDirection(valueOrText);\r\n if (direction === \"down\") return \"▼\";\r\n if (direction === \"up\") return \"▲\";\r\n return \"\";\r\n}\r\n\r\nexport function formatNumber(num) {\r\n if (num >= 1_000_000_000) {\r\n return (num / 1_000_000_000).toFixed(1).replace(/\\.0$/, \"\") + \"B\";\r\n }\r\n\r\n if (num >= 1_000_000) {\r\n return (num / 1_000_000).toFixed(1).replace(/\\.0$/, \"\") + \"M\";\r\n }\r\n\r\n if (num >= 1_000) {\r\n return (num / 1_000).toFixed(1).replace(/\\.0$/, \"\") + \"K\";\r\n }\r\n\r\n return (num ?? 0).toString();\r\n}","import {\r\n Box,\r\n Card,\r\n CardContent,\r\n Grid,\r\n IconButton,\r\n Typography,\r\n} from \"@mui/material\";\r\nimport RevenueChart from \"../../RevenueChart\";\r\nimport { MoreHoriz as MoreHorizIcon } from \"@mui/icons-material\";\r\nimport MetricSelector from \"../../MetricSelector\";\r\nimport { getTrendArrow, getTrendColor } from \"../../../config/helper\";\r\n\r\nconst RenderChartCard = ({\r\n item,\r\n index,\r\n isPrimary = false,\r\n isPremium = false,\r\n metric,\r\n setMetric,\r\n md = 4,\r\n numberOfDays = 30,\r\n type = \"area\",\r\n sx = {},\r\n cardSx = {},\r\n contentSx = {},\r\n}) => {\r\n const daysLabel = `${numberOfDays} day${numberOfDays === 1 ? \"\" : \"s\"}`;\r\n const trendText = item.trend || \"18%\";\r\n const trendColor = getTrendColor(trendText, { up: \"#054835ff\", down: \"#EF4444\" });\r\n const trendArrow = getTrendArrow(trendText);\r\n const trendBadgeBg = trendColor === \"#EF4444\" ? \"#fee2e2\" : \"#8df3be9a\";\r\n\r\n return (\r\n <Grid\r\n item\r\n xs={12}\r\n md={md}\r\n key={item.label + index}\r\n sx={{ display: \"flex\", paddingTop: \"0px !important\", ...sx }}\r\n >\r\n <Card\r\n sx={{\r\n width: \"100%\",\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n boxShadow: \"0 4px 24px rgba(0,0,0,0.06)\",\r\n borderRadius: 4,\r\n border: \"1px solid #f0f0f0\",\r\n ...cardSx,\r\n }}\r\n >\r\n <CardContent\r\n sx={{\r\n p: item.exportMode ? 2 : 3,\r\n flexGrow: 1,\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n ...contentSx,\r\n }}\r\n >\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n alignItems: \"flex-start\",\r\n mb: item.exportMode ? 2 : isPremium ? 3 : 2,\r\n }}\r\n >\r\n {isPremium ? (\r\n <Box sx={{ textAlign: \"left\" }}>\r\n <Typography\r\n sx={{\r\n color: \"#000000\",\r\n fontWeight: 700,\r\n fontSize: \"18px\",\r\n mb: 0.2,\r\n }}\r\n >\r\n {item.label}\r\n </Typography>\r\n <Typography\r\n variant=\"caption\"\r\n sx={{\r\n color: \"rgba(0, 0, 0, 0.4)\",\r\n fontWeight: 400,\r\n display: \"block\",\r\n mb: 1.5,\r\n }}\r\n >\r\n {item.subtitle || `Last ${daysLabel} · daily aggregation`}\r\n </Typography>\r\n\r\n <Box sx={{ display: \"flex\", alignItems: \"center\", gap: 1.5 }}>\r\n {item.value && (\r\n <Typography\r\n sx={{ fontWeight: 700, color: \"#000000\", fontSize: \"28px\" }}\r\n >\r\n {typeof item.value === 'object' && item.value !== null\r\n ? (item.value.value !== undefined ? item.value.value : JSON.stringify(item.value))\r\n : item.value}\r\n </Typography>\r\n )}\r\n {(item.trend || \"18%\") && (\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: 0.5,\r\n bgcolor: trendBadgeBg,\r\n color: trendColor,\r\n px: 1,\r\n py: 0.5,\r\n borderRadius: \"100px\",\r\n fontSize: \"12px\",\r\n fontWeight: 600,\r\n }}\r\n >\r\n {trendArrow && <span>{trendArrow}</span>}\r\n {trendText === \"18%\" && !item.trend ? \"18% vs last month\" : trendText}\r\n </Box>\r\n )}\r\n </Box>\r\n </Box>\r\n ) : (\r\n <Box sx={{ textAlign: \"left\" }}>\r\n <Typography\r\n variant=\"subtitle2\"\r\n sx={{\r\n color: \"#000000\",\r\n fontWeight: 600,\r\n textTransform: \"uppercase\",\r\n letterSpacing: \"0.5px\",\r\n mb: 0.5,\r\n }}\r\n >\r\n {item.label}\r\n </Typography>\r\n {item.value && (\r\n <Typography\r\n variant=\"subtitle2\"\r\n sx={{ fontWeight: 600, color: \"#000000\", mb: 0.5 }}\r\n >\r\n {typeof item.value === 'object' && item.value !== null\r\n ? (item.value.value !== undefined ? item.value.value : JSON.stringify(item.value))\r\n : item.value}\r\n </Typography>\r\n )}\r\n {item.subValue && (\r\n <Typography\r\n variant=\"subtitle2\"\r\n sx={{ color: \"#000000\", fontWeight: 600 }}\r\n >\r\n {typeof item.subValue === 'object' && item.subValue !== null\r\n ? JSON.stringify(item.subValue)\r\n : item.subValue}\r\n </Typography>\r\n )}\r\n </Box>\r\n )}\r\n\r\n <Box sx={{ display: \"flex\", gap: 1, alignItems: \"center\" }}>\r\n {item.hideControls ? (\r\n item.series && (\r\n <Box\r\n sx={{\r\n display: item.exportMode ? \"flex\" : { xs: \"none\", sm: \"flex\" },\r\n gap: 2,\r\n alignItems: \"center\",\r\n }}\r\n >\r\n {[\r\n { label: \"Paid Ads\", color: \"#6366F1\" },\r\n { label: \"Organic\", color: \"#10B981\" },\r\n { label: \"Email\", color: \"#06B6D4\" },\r\n ].map((leg) => (\r\n <Box\r\n key={leg.label}\r\n sx={{ display: \"flex\", alignItems: \"center\", gap: 0.5 }}\r\n >\r\n <Box\r\n sx={{\r\n width: 8,\r\n height: 8,\r\n borderRadius: \"50%\",\r\n bgcolor: leg.color,\r\n }}\r\n />\r\n <Typography\r\n sx={{\r\n fontSize: \"12px\",\r\n color: \"rgba(0,0,0,0.6)\",\r\n fontWeight: 500,\r\n }}\r\n >\r\n {leg.label}\r\n </Typography>\r\n </Box>\r\n ))}\r\n </Box>\r\n )\r\n) : (\r\n <>\r\n {item.showSelector && (\r\n <MetricSelector\r\n metric={metric}\r\n onMetricChange={setMetric}\r\n options={[\"Revenue\", \"Donations\"]}\r\n />\r\n )}\r\n <IconButton\r\n sx={{\r\n border: \"1px solid #E9E9EB\",\r\n borderRadius: \"8px\",\r\n color: \"#000\",\r\n height: \"40px\",\r\n width: \"40px\",\r\n \"&:hover\": {\r\n borderColor: \"primary.main\",\r\n bgcolor: \"rgba(99, 99, 230, 0.04)\",\r\n },\r\n }}\r\n >\r\n <MoreHorizIcon sx={{ fontSize: \"1.2rem\" }} />\r\n </IconButton>\r\n </>\r\n )}\r\n </Box>\r\n </Box>\r\n\r\n <Box sx={{ flexGrow: 1, minHeight: isPrimary ? \"250px\" : \"200px\" }}>\r\n <RevenueChart\r\n id={`${item.label}-${index}`}\r\n metric={\r\n item.label.includes(\"Rate\") ||\r\n item.label.includes(\"Performance\") ||\r\n item.label.includes(\"source\") ||\r\n item.label === \"URL\"\r\n ? \"Percent\"\r\n : item.stacked\r\n ? item.label.includes(\"Traffic\")\r\n ? \"Visitors\"\r\n : \"Donors\"\r\n : metric\r\n }\r\n data={item.data}\r\n series={item.series}\r\n categories={item.categories}\r\n height={item.height || (isPrimary ? 250 : 200)}\r\n stacked={item.stacked}\r\n type={type || item.type || \"area\"}\r\n colors={item.colors}\r\n showLegend={!item.hideControls}\r\n />\r\n {item.hideControls && item.series && (\r\n <Box\r\n sx={{\r\n display: { xs: \"flex\", sm: \"none\" },\r\n justifyContent: \"center\",\r\n gap: 2,\r\n flexWrap: \"wrap\",\r\n mt: 1.5,\r\n }}\r\n >\r\n {[\r\n { label: \"Paid Ads\", color: \"#6366F1\" },\r\n { label: \"Organic\", color: \"#10B981\" },\r\n { label: \"Email\", color: \"#06B6D4\" },\r\n ].map((leg) => (\r\n <Box\r\n key={leg.label}\r\n sx={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: 0.5,\r\n }}\r\n >\r\n <Box\r\n sx={{\r\n width: 8,\r\n height: 8,\r\n borderRadius: \"50%\",\r\n bgcolor: leg.color,\r\n }}\r\n />\r\n <Typography\r\n sx={{\r\n fontSize: \"11px\",\r\n color: \"rgba(0,0,0,0.6)\",\r\n fontWeight: 500,\r\n marginTop: {xs: \"1px\", sm: 0}\r\n }}\r\n >\r\n {leg.label}\r\n </Typography>\r\n </Box>\r\n ))}\r\n </Box>\r\n )}\r\n </Box>\r\n\r\n {item.footer && (\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n mt: 2,\r\n pt: 2,\r\n borderTop: \"1px solid #f0f0f0\",\r\n }}\r\n >\r\n <Typography\r\n variant=\"caption\"\r\n sx={{ color: \"#606062\", fontWeight: 600 }}\r\n >\r\n {item.footer.left}\r\n </Typography>\r\n <Typography\r\n variant=\"caption\"\r\n sx={{ color: \"#606062\", fontWeight: 600 }}\r\n >\r\n {item.footer.right}\r\n </Typography>\r\n </Box>\r\n )}\r\n </CardContent>\r\n </Card>\r\n </Grid>\r\n );\r\n};\r\n\r\nexport default RenderChartCard;\r\n"],"names":["RevenueChart","_ref","metric","data","series","categories","_ref$height","height","_ref$stacked","stacked","_ref$type","type","_ref$id","id","colors","_ref$showLegend","showLegend","theme","useTheme","isRadial","baseOptions","chart","toolbar","show","sparkline","enabled","animations","palette","primary","main","tooltip","y","formatter","value","toLowerCase","concat","toLocaleString","radialOptions","_objectSpread","labels","stroke","width","dataLabels","legend","position","horizontalAlign","plotOptions","pie","donut","size","total","label","w","sum","globals","seriesTotals","reduce","a","b","Math","round","linearOptions","curve","fill","opacity","gradient","undefined","shadeIntensity","opacityFrom","opacityTo","stops","xaxis","axisBorder","axisTicks","tickAmount","rotate","rotateAlways","hideOverlappingLabels","style","fontSize","val","yaxis","grid","borderColor","strokeDashArray","length","bar","borderRadius","columnWidth","chartOptions","chartSeries","_series$","processedData","Array","isArray","map","v","_typeof","name","_jsx","ReactApexChart","options","MetricSelector","onMetricChange","_ref$options","_ref$label","_React$useState","React","useState","_React$useState2","_slicedToArray","anchorEl","setAnchorEl","open","Boolean","handleClick","event","currentTarget","handleClose","_jsxs","Box","sx","display","gap","children","Button","onClick","variant","color","textTransform","fontWeight","px","bgcolor","Menu","onClose","MenuListProps","PaperProps","mt","boxShadow","minWidth","option","MenuItem","TREND_UP_COLOR","TREND_DOWN_COLOR","getTrendDirection","valueOrText","text","String","trim","includes","match","n","Number","getTrendColor","arguments","_ref$up","up","_ref$down","down","_ref$neutral","neutral","direction","getTrendArrow","RenderChartCard","item","index","_ref$isPrimary","isPrimary","_ref$isPremium","isPremium","setMetric","_ref$md","md","_ref$numberOfDays","numberOfDays","_ref$sx","_ref$cardSx","cardSx","_ref$contentSx","contentSx","daysLabel","trendText","trend","trendColor","trendArrow","trendBadgeBg","Grid","xs","paddingTop","Card","flexDirection","border","CardContent","p","exportMode","flexGrow","justifyContent","alignItems","mb","textAlign","Typography","subtitle","JSON","stringify","py","letterSpacing","subValue","hideControls","sm","leg","_Fragment","showSelector","IconButton","MoreHorizIcon","minHeight","flexWrap","marginTop","footer","pt","borderTop","left","right"],"mappings":"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"}
package/dist/index.cjs.js CHANGED
@@ -561,6 +561,51 @@ var RevenueChart = function RevenueChart(_ref) {
561
561
  }, "".concat(id, "-").concat(type, "-").concat(chartSeries.length));
562
562
  };
563
563
 
564
+ var TREND_UP_COLOR = "#22C55E";
565
+ var TREND_DOWN_COLOR = "#EF4444";
566
+ function getTrendDirection(valueOrText) {
567
+ var text = String(valueOrText !== null && valueOrText !== void 0 ? valueOrText : "").trim();
568
+ if (text.includes("▼")) return "down";
569
+ if (text.includes("▲")) return "up";
570
+ var match = text.match(/-?\d+(\.\d+)?/);
571
+ if (!match) return "neutral";
572
+ var n = Number(match[0]);
573
+ if (n < 0) return "down";
574
+ if (n > 0) return "up";
575
+ return "neutral";
576
+ }
577
+ function getTrendColor(valueOrText) {
578
+ var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
579
+ _ref$up = _ref.up,
580
+ up = _ref$up === void 0 ? TREND_UP_COLOR : _ref$up,
581
+ _ref$down = _ref.down,
582
+ down = _ref$down === void 0 ? TREND_DOWN_COLOR : _ref$down,
583
+ _ref$neutral = _ref.neutral,
584
+ neutral = _ref$neutral === void 0 ? up : _ref$neutral;
585
+ var direction = getTrendDirection(valueOrText);
586
+ if (direction === "down") return down;
587
+ if (direction === "up") return up;
588
+ return neutral;
589
+ }
590
+ function getTrendArrow(valueOrText) {
591
+ var direction = getTrendDirection(valueOrText);
592
+ if (direction === "down") return "▼";
593
+ if (direction === "up") return "▲";
594
+ return "";
595
+ }
596
+ function formatNumber(num) {
597
+ if (num >= 1000000000) {
598
+ return (num / 1000000000).toFixed(1).replace(/\.0$/, "") + "B";
599
+ }
600
+ if (num >= 1000000) {
601
+ return (num / 1000000).toFixed(1).replace(/\.0$/, "") + "M";
602
+ }
603
+ if (num >= 1000) {
604
+ return (num / 1000).toFixed(1).replace(/\.0$/, "") + "K";
605
+ }
606
+ return (num !== null && num !== void 0 ? num : 0).toString();
607
+ }
608
+
564
609
  var RenderChartCard = function RenderChartCard(_ref) {
565
610
  var item = _ref.item,
566
611
  index = _ref.index,
@@ -583,6 +628,13 @@ var RenderChartCard = function RenderChartCard(_ref) {
583
628
  _ref$contentSx = _ref.contentSx,
584
629
  contentSx = _ref$contentSx === void 0 ? {} : _ref$contentSx;
585
630
  var daysLabel = "".concat(numberOfDays, " day").concat(numberOfDays === 1 ? "" : "s");
631
+ var trendText = item.trend || "18%";
632
+ var trendColor = getTrendColor(trendText, {
633
+ up: "#054835ff",
634
+ down: "#EF4444"
635
+ });
636
+ var trendArrow = getTrendArrow(trendText);
637
+ var trendBadgeBg = trendColor === "#EF4444" ? "#fee2e2" : "#8df3be9a";
586
638
  return /*#__PURE__*/jsxRuntime.jsx(material.Grid, {
587
639
  item: true,
588
640
  xs: 12,
@@ -653,17 +705,17 @@ var RenderChartCard = function RenderChartCard(_ref) {
653
705
  display: "flex",
654
706
  alignItems: "center",
655
707
  gap: 0.5,
656
- bgcolor: "#8df3be9a",
657
- color: "#054835ff",
708
+ bgcolor: trendBadgeBg,
709
+ color: trendColor,
658
710
  px: 1,
659
711
  py: 0.5,
660
712
  borderRadius: "100px",
661
713
  fontSize: "12px",
662
714
  fontWeight: 600
663
715
  },
664
- children: [/*#__PURE__*/jsxRuntime.jsx("span", {
665
- children: "\u25B2"
666
- }), item.trend || "18% vs last month"]
716
+ children: [trendArrow && /*#__PURE__*/jsxRuntime.jsx("span", {
717
+ children: trendArrow
718
+ }), trendText === "18%" && !item.trend ? "18% vs last month" : trendText]
667
719
  })]
668
720
  })]
669
721
  }) : /*#__PURE__*/jsxRuntime.jsxs(material.Box, {
@@ -1186,12 +1238,13 @@ var MetricCard$1 = function MetricCard(_ref) {
1186
1238
  avatarSx = _ref$avatarSx === void 0 ? {} : _ref$avatarSx;
1187
1239
  var captionText = String(caption !== null && caption !== void 0 ? caption : "");
1188
1240
  var isPercentCaption = captionText.includes("%");
1189
- var firstNumberMatch = captionText.match(/-?\d+(\.\d+)?/);
1190
- var trendValue = firstNumberMatch ? Number(firstNumberMatch[0]) : null;
1191
- var isNegativeTrend = isPercentCaption && trendValue !== null && trendValue < 0;
1192
- var isPositiveTrend = isPercentCaption && trendValue !== null && trendValue > 0;
1193
- var trendPrefix = isNegativeTrend ? "▼ " : isPositiveTrend ? "" : "";
1194
- var captionColor = captionText.includes("failed") ? "#4F46E5" : error || isNegativeTrend ? "#ef4444" : "#0B8F61";
1241
+ var trendDirection = isPercentCaption ? getTrendDirection(captionText) : "neutral";
1242
+ var hasTrendArrow = captionText.includes("▼") || captionText.includes("▲");
1243
+ var trendPrefix = hasTrendArrow || !isPercentCaption ? "" : trendDirection === "down" ? "▼ " : trendDirection === "up" ? "▲ " : "";
1244
+ var captionColor = captionText.includes("failed") ? "#4F46E5" : error ? "#ef4444" : isPercentCaption ? getTrendColor(captionText, {
1245
+ up: "#0B8F61",
1246
+ down: "#ef4444"
1247
+ }) : "#0B8F61";
1195
1248
  return /*#__PURE__*/jsxRuntime.jsxs(material.Box, {
1196
1249
  sx: _objectSpread2({
1197
1250
  bgcolor: "#fff",
@@ -1247,19 +1300,6 @@ var MetricCard$1 = function MetricCard(_ref) {
1247
1300
  });
1248
1301
  };
1249
1302
 
1250
- function formatNumber(num) {
1251
- if (num >= 1000000000) {
1252
- return (num / 1000000000).toFixed(1).replace(/\.0$/, "") + "B";
1253
- }
1254
- if (num >= 1000000) {
1255
- return (num / 1000000).toFixed(1).replace(/\.0$/, "") + "M";
1256
- }
1257
- if (num >= 1000) {
1258
- return (num / 1000).toFixed(1).replace(/\.0$/, "") + "K";
1259
- }
1260
- return (num !== null && num !== void 0 ? num : 0).toString();
1261
- }
1262
-
1263
1303
  var PURPLE = "#6363E6";
1264
1304
  var REPORT_COLORS = {
1265
1305
  purple: PURPLE};
@@ -3726,6 +3766,8 @@ var DonorMixCard = function DonorMixCard(_ref) {
3726
3766
  compact = _ref$compact === void 0 ? false : _ref$compact,
3727
3767
  _ref$sx = _ref.sx,
3728
3768
  sx = _ref$sx === void 0 ? {} : _ref$sx;
3769
+ var trendColor = getTrendColor(bottomSummaryTrend);
3770
+ var trendArrow = getTrendArrow(bottomSummaryTrend);
3729
3771
  var chartOptions = {
3730
3772
  chart: {
3731
3773
  type: "donut"
@@ -3897,12 +3939,12 @@ var DonorMixCard = function DonorMixCard(_ref) {
3897
3939
  display: "flex",
3898
3940
  alignItems: "center",
3899
3941
  gap: 0.5,
3900
- color: "#22C55E",
3942
+ color: trendColor,
3901
3943
  fontSize: "12px",
3902
3944
  fontWeight: 600
3903
3945
  },
3904
- children: [/*#__PURE__*/jsxRuntime.jsx("span", {
3905
- children: "\u25B2"
3946
+ children: [trendArrow && /*#__PURE__*/jsxRuntime.jsx("span", {
3947
+ children: trendArrow
3906
3948
  }), bottomSummaryTrend]
3907
3949
  })]
3908
3950
  })]
@@ -4117,8 +4159,7 @@ var MetricSparklineCard = function MetricSparklineCard(_ref) {
4117
4159
  subtitle = _ref.subtitle,
4118
4160
  value = _ref.value,
4119
4161
  trend = _ref.trend,
4120
- _ref$trendColor = _ref.trendColor,
4121
- trendColor = _ref$trendColor === void 0 ? "#22C55E" : _ref$trendColor,
4162
+ trendColor = _ref.trendColor,
4122
4163
  _ref$chartData = _ref.chartData,
4123
4164
  chartData = _ref$chartData === void 0 ? [] : _ref$chartData,
4124
4165
  _ref$chartColor = _ref.chartColor,
@@ -4130,6 +4171,8 @@ var MetricSparklineCard = function MetricSparklineCard(_ref) {
4130
4171
  bottomSection = _ref$bottomSection === void 0 ? false : _ref$bottomSection,
4131
4172
  _ref$compact = _ref.compact,
4132
4173
  compact = _ref$compact === void 0 ? false : _ref$compact;
4174
+ var resolvedTrendColor = trendColor !== null && trendColor !== void 0 ? trendColor : getTrendColor(trend);
4175
+
4133
4176
  // Extract values for chart series
4134
4177
  var series = [{
4135
4178
  name: title,
@@ -4250,7 +4293,7 @@ var MetricSparklineCard = function MetricSparklineCard(_ref) {
4250
4293
  sx: {
4251
4294
  fontSize: "11px",
4252
4295
  fontWeight: 700,
4253
- color: trendColor,
4296
+ color: resolvedTrendColor,
4254
4297
  mt: 0.2
4255
4298
  },
4256
4299
  children: trend
@@ -4324,19 +4367,39 @@ var MetricSparklineCard = function MetricSparklineCard(_ref) {
4324
4367
  });
4325
4368
  };
4326
4369
 
4327
- var MetricDonutCard = function MetricDonutCard(_ref) {
4328
- var title = _ref.title,
4329
- subtitle = _ref.subtitle,
4330
- acceptanceRate = _ref.acceptanceRate,
4331
- acceptanceVal = _ref.acceptanceVal,
4332
- acceptanceTrend = _ref.acceptanceTrend,
4333
- raisedVal = _ref.raisedVal,
4334
- raisedTrend = _ref.raisedTrend,
4335
- _ref$chartColors = _ref.chartColors,
4336
- chartColors = _ref$chartColors === void 0 ? ["rgb(99, 99, 230)", "#88bfd290"] : _ref$chartColors,
4337
- sx = _ref.sx,
4338
- _ref$compact = _ref.compact,
4339
- compact = _ref$compact === void 0 ? false : _ref$compact;
4370
+ var TrendValue = function TrendValue(_ref) {
4371
+ var trend = _ref.trend;
4372
+ var direction = getTrendDirection(trend);
4373
+ var color = getTrendColor(trend);
4374
+ var Icon = direction === "down" ? iconsMaterial.TrendingDown : iconsMaterial.TrendingUp;
4375
+ return /*#__PURE__*/jsxRuntime.jsxs(material.Typography, {
4376
+ sx: {
4377
+ fontSize: "10px",
4378
+ fontWeight: 700,
4379
+ color: color,
4380
+ display: "flex",
4381
+ alignItems: "center"
4382
+ },
4383
+ children: [/*#__PURE__*/jsxRuntime.jsx(Icon, {
4384
+ sx: {
4385
+ fontSize: "12px"
4386
+ }
4387
+ }), " ", trend]
4388
+ });
4389
+ };
4390
+ var MetricDonutCard = function MetricDonutCard(_ref2) {
4391
+ var title = _ref2.title,
4392
+ subtitle = _ref2.subtitle,
4393
+ acceptanceRate = _ref2.acceptanceRate,
4394
+ acceptanceVal = _ref2.acceptanceVal,
4395
+ acceptanceTrend = _ref2.acceptanceTrend,
4396
+ raisedVal = _ref2.raisedVal,
4397
+ raisedTrend = _ref2.raisedTrend,
4398
+ _ref2$chartColors = _ref2.chartColors,
4399
+ chartColors = _ref2$chartColors === void 0 ? ["rgb(99, 99, 230)", "#88bfd290"] : _ref2$chartColors,
4400
+ sx = _ref2.sx,
4401
+ _ref2$compact = _ref2.compact,
4402
+ compact = _ref2$compact === void 0 ? false : _ref2$compact;
4340
4403
  var chartOptions = {
4341
4404
  chart: {
4342
4405
  type: "radialBar",
@@ -4477,19 +4540,8 @@ var MetricDonutCard = function MetricDonutCard(_ref) {
4477
4540
  color: "#000"
4478
4541
  },
4479
4542
  children: acceptanceVal
4480
- }), /*#__PURE__*/jsxRuntime.jsxs(material.Typography, {
4481
- sx: {
4482
- fontSize: "10px",
4483
- fontWeight: 700,
4484
- color: "#22C55E",
4485
- display: "flex",
4486
- alignItems: "center"
4487
- },
4488
- children: [/*#__PURE__*/jsxRuntime.jsx(iconsMaterial.TrendingUp, {
4489
- sx: {
4490
- fontSize: "12px"
4491
- }
4492
- }), " ", acceptanceTrend]
4543
+ }), /*#__PURE__*/jsxRuntime.jsx(TrendValue, {
4544
+ trend: acceptanceTrend
4493
4545
  })]
4494
4546
  })]
4495
4547
  }), /*#__PURE__*/jsxRuntime.jsxs(material.Box, {
@@ -4532,19 +4584,8 @@ var MetricDonutCard = function MetricDonutCard(_ref) {
4532
4584
  color: "#000"
4533
4585
  },
4534
4586
  children: raisedVal
4535
- }), /*#__PURE__*/jsxRuntime.jsxs(material.Typography, {
4536
- sx: {
4537
- fontSize: "10px",
4538
- fontWeight: 700,
4539
- color: "#22C55E",
4540
- display: "flex",
4541
- alignItems: "center"
4542
- },
4543
- children: [/*#__PURE__*/jsxRuntime.jsx(iconsMaterial.TrendingUp, {
4544
- sx: {
4545
- fontSize: "12px"
4546
- }
4547
- }), " ", raisedTrend]
4587
+ }), /*#__PURE__*/jsxRuntime.jsx(TrendValue, {
4588
+ trend: raisedTrend
4548
4589
  })]
4549
4590
  })]
4550
4591
  })]
@@ -6362,7 +6403,7 @@ var OverallDetailsGrid = function OverallDetailsGrid(_ref) {
6362
6403
  title: "Upsell",
6363
6404
  subtitle: "Acceptance & raised",
6364
6405
  acceptanceRate: (upsellData === null || upsellData === void 0 ? void 0 : upsellData.acceptanceRate) || 0,
6365
- acceptanceVal: "".concat(formatNumber((upsellData === null || upsellData === void 0 ? void 0 : upsellData.totalUpsellsAttached) || 0)),
6406
+ acceptanceVal: "".concat(formatNumber((upsellData === null || upsellData === void 0 ? void 0 : upsellData.acceptanceRate) || 0), "%"),
6366
6407
  acceptanceTrend: "".concat((upsellData === null || upsellData === void 0 ? void 0 : upsellData.acceptanceGrowth) >= 0 ? "▲" : "▼", " ").concat(Math.abs((upsellData === null || upsellData === void 0 ? void 0 : upsellData.acceptanceGrowth) || 0).toFixed(1), "%"),
6367
6408
  raisedVal: "$".concat(formatNumber((upsellData === null || upsellData === void 0 ? void 0 : upsellData.raised) || 0)),
6368
6409
  raisedTrend: "".concat((upsellData === null || upsellData === void 0 ? void 0 : upsellData.raisedGrowth) >= 0 ? "▲" : "▼", " ").concat(Math.abs((upsellData === null || upsellData === void 0 ? void 0 : upsellData.raisedGrowth) || 0).toFixed(1), "%"),
@@ -6372,15 +6413,15 @@ var OverallDetailsGrid = function OverallDetailsGrid(_ref) {
6372
6413
  subtitle: "Acceptance & raised",
6373
6414
  acceptanceRate: (downsellData === null || downsellData === void 0 ? void 0 : downsellData.acceptanceRate) || 0,
6374
6415
  acceptanceVal: "".concat(formatNumber((downsellData === null || downsellData === void 0 ? void 0 : downsellData.acceptanceRate) || 0), "%"),
6375
- acceptanceTrend: "".concat(formatNumber((downsellData === null || downsellData === void 0 ? void 0 : downsellData.acceptanceGrowth) || 0), "%"),
6416
+ acceptanceTrend: "".concat((downsellData === null || downsellData === void 0 ? void 0 : downsellData.acceptanceGrowth) >= 0 ? "▲" : "▼", " ").concat(Math.abs((downsellData === null || downsellData === void 0 ? void 0 : downsellData.acceptanceGrowth) || 0).toFixed(1), "%"),
6376
6417
  raisedVal: "$".concat(formatNumber((downsellData === null || downsellData === void 0 ? void 0 : downsellData.raised) || 0)),
6377
- raisedTrend: "".concat(formatNumber((downsellData === null || downsellData === void 0 ? void 0 : downsellData.raisedGrowth) || 0), "%"),
6418
+ raisedTrend: "".concat((downsellData === null || downsellData === void 0 ? void 0 : downsellData.raisedGrowth) >= 0 ? "▲" : "▼", " ").concat(Math.abs((downsellData === null || downsellData === void 0 ? void 0 : downsellData.raisedGrowth) || 0).toFixed(1), "%"),
6378
6419
  sx: CARD_SX
6379
6420
  }), /*#__PURE__*/jsxRuntime.jsx(MetricSparklineCard, {
6380
6421
  title: "Referrals",
6381
6422
  subtitle: "Revenue trend \xB7 last ".concat(daysLabel),
6382
6423
  value: "$".concat(formatNumber((referralData === null || referralData === void 0 ? void 0 : referralData.totalRevenue) || 0)),
6383
- trend: "\u25B2 ".concat((referralData === null || referralData === void 0 ? void 0 : referralData.growthPercentage) || 0, "% vs previous period"),
6424
+ trend: "".concat((referralData === null || referralData === void 0 ? void 0 : referralData.growthPercentage) >= 0 ? "▲" : "▼", " ").concat(Math.abs((referralData === null || referralData === void 0 ? void 0 : referralData.growthPercentage) || 0).toFixed(1), "% vs previous period"),
6384
6425
  chartData: (referralData === null || referralData === void 0 || (_referralData$chartDa = referralData.chartData) === null || _referralData$chartDa === void 0 ? void 0 : _referralData$chartDa.map(function (item) {
6385
6426
  return {
6386
6427
  label: item.date,
@@ -17888,6 +17929,12 @@ var EmailTrendCard = function EmailTrendCard(_ref) {
17888
17929
  }
17889
17930
  return series;
17890
17931
  }, [trendData, trendSeries, series]);
17932
+ var trendColor = getTrendColor(trend, {
17933
+ up: "#10b981",
17934
+ down: "#EF4444"
17935
+ });
17936
+ var trendArrow = getTrendArrow(trend);
17937
+ var trendBadgeBg = trendColor === "#EF4444" ? "#fee2e2" : "#ebfcf4";
17891
17938
  var chartOptions = {
17892
17939
  chart: {
17893
17940
  type: "area",
@@ -18047,8 +18094,8 @@ var EmailTrendCard = function EmailTrendCard(_ref) {
18047
18094
  children: value
18048
18095
  }), /*#__PURE__*/jsxRuntime.jsxs(material.Box, {
18049
18096
  sx: {
18050
- bgcolor: "#ebfcf4",
18051
- color: "#10b981",
18097
+ bgcolor: trendBadgeBg,
18098
+ color: trendColor,
18052
18099
  px: 1,
18053
18100
  py: 0.4,
18054
18101
  borderRadius: "100px",
@@ -18058,11 +18105,11 @@ var EmailTrendCard = function EmailTrendCard(_ref) {
18058
18105
  alignItems: "center",
18059
18106
  gap: 0.3
18060
18107
  },
18061
- children: [/*#__PURE__*/jsxRuntime.jsx("span", {
18108
+ children: [trendArrow && /*#__PURE__*/jsxRuntime.jsx("span", {
18062
18109
  style: {
18063
18110
  fontSize: "10px"
18064
18111
  },
18065
- children: "\u25B2"
18112
+ children: trendArrow
18066
18113
  }), " ", trend]
18067
18114
  })]
18068
18115
  }), /*#__PURE__*/jsxRuntime.jsx(material.Box, {