@ammarkhalidfarooq/dashboard-package 0.6.126 → 0.6.128
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.
- package/README.md +305 -305
- package/dist/ActiveCampaignsCard.cjs.js +419 -243
- package/dist/ActiveCampaignsCard.cjs.js.map +1 -1
- package/dist/ActiveCampaignsCard.es.js +421 -245
- package/dist/ActiveCampaignsCard.es.js.map +1 -1
- package/dist/MetricCard.cjs.js.map +1 -1
- package/dist/MetricCard.es.js.map +1 -1
- package/dist/RenderChartCard.cjs.js.map +1 -1
- package/dist/RenderChartCard.es.js.map +1 -1
- package/dist/index.cjs.js +749 -808
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.es.js +750 -809
- package/dist/index.es.js.map +1 -1
- package/package.json +80 -80
package/dist/index.cjs.js
CHANGED
|
@@ -436,13 +436,13 @@ function formatCurrency(value) {
|
|
|
436
436
|
}
|
|
437
437
|
function formatNumber(num) {
|
|
438
438
|
if (num >= 1000000000) {
|
|
439
|
-
return (num / 1000000000).toFixed(
|
|
439
|
+
return (num / 1000000000).toFixed(2).replace(/\.00$/, "") + "B";
|
|
440
440
|
}
|
|
441
441
|
if (num >= 1000000) {
|
|
442
|
-
return (num / 1000000).toFixed(
|
|
442
|
+
return (num / 1000000).toFixed(2).replace(/\.00$/, "") + "M";
|
|
443
443
|
}
|
|
444
444
|
if (num >= 1000) {
|
|
445
|
-
return (num / 1000).toFixed(
|
|
445
|
+
return (num / 1000).toFixed(2).replace(/\.00$/, "") + "K";
|
|
446
446
|
}
|
|
447
447
|
return (num !== null && num !== void 0 ? num : 0).toString();
|
|
448
448
|
}
|
|
@@ -1021,262 +1021,482 @@ var ActiveCampaignsCard = function ActiveCampaignsCard(_ref) {
|
|
|
1021
1021
|
title = _ref$title === void 0 ? "Active campaigns" : _ref$title,
|
|
1022
1022
|
_ref$subtitle = _ref.subtitle,
|
|
1023
1023
|
subtitle = _ref$subtitle === void 0 ? "Live fundraisers ranked by velocity" : _ref$subtitle,
|
|
1024
|
-
actionLabel = _ref.actionLabel,
|
|
1025
1024
|
_ref$columns = _ref.columns,
|
|
1026
|
-
columns = _ref$columns === void 0 ? ["Campaign", "Raised", "Progress", "Donors", "Avg
|
|
1025
|
+
columns = _ref$columns === void 0 ? ["Campaign", "Raised", "Progress", "Donors", "Avg gift"] : _ref$columns,
|
|
1027
1026
|
_ref$rows = _ref.rows,
|
|
1028
1027
|
rows = _ref$rows === void 0 ? [] : _ref$rows,
|
|
1029
1028
|
_ref$gridTemplateColu = _ref.gridTemplateColumns,
|
|
1030
|
-
gridTemplateColumns = _ref$gridTemplateColu === void 0 ? "3fr 1fr 1.5fr 0.8fr 1fr
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
boxShadow: compact ? "0 2px 12px rgba(0,0,0,0.05)" : "0 4px 24px rgba(0,0,0,0.06)",
|
|
1046
|
-
p: compact ? 1.5 : 3,
|
|
1047
|
-
height: height
|
|
1048
|
-
}, sx),
|
|
1049
|
-
children: [/*#__PURE__*/jsxRuntime.jsxs(material.Box, {
|
|
1050
|
-
sx: _objectSpread2({
|
|
1051
|
-
display: "flex",
|
|
1052
|
-
justifyContent: "space-between",
|
|
1053
|
-
alignItems: "flex-start",
|
|
1054
|
-
mb: compact ? 1.25 : 3
|
|
1055
|
-
}, headerSx),
|
|
1029
|
+
gridTemplateColumns = _ref$gridTemplateColu === void 0 ? "3fr 1fr 1.5fr 0.8fr 1fr" : _ref$gridTemplateColu;
|
|
1030
|
+
var theme = material.useTheme();
|
|
1031
|
+
var isMobile = material.useMediaQuery(theme.breakpoints.down("sm"));
|
|
1032
|
+
var isTablet = material.useMediaQuery(theme.breakpoints.between("sm", "md"));
|
|
1033
|
+
|
|
1034
|
+
/* ─── Desktop / Tablet: Grid Table ─── */
|
|
1035
|
+
if (!isMobile) {
|
|
1036
|
+
return /*#__PURE__*/jsxRuntime.jsxs(material.Box, {
|
|
1037
|
+
sx: {
|
|
1038
|
+
bgcolor: "#fff",
|
|
1039
|
+
borderRadius: 4,
|
|
1040
|
+
border: "1px solid #f0f0f0",
|
|
1041
|
+
boxShadow: "0 4px 24px rgba(0,0,0,0.06)",
|
|
1042
|
+
p: 3
|
|
1043
|
+
},
|
|
1056
1044
|
children: [/*#__PURE__*/jsxRuntime.jsxs(material.Box, {
|
|
1045
|
+
sx: {
|
|
1046
|
+
mb: 3
|
|
1047
|
+
},
|
|
1057
1048
|
children: [/*#__PURE__*/jsxRuntime.jsx(material.Typography, {
|
|
1058
1049
|
sx: {
|
|
1059
1050
|
fontWeight: 700,
|
|
1060
|
-
fontSize:
|
|
1061
|
-
color: "#000"
|
|
1062
|
-
textAlign: "left",
|
|
1063
|
-
lineHeight: 1.15
|
|
1051
|
+
fontSize: "18px",
|
|
1052
|
+
color: "#000"
|
|
1064
1053
|
},
|
|
1065
1054
|
children: title
|
|
1066
1055
|
}), /*#__PURE__*/jsxRuntime.jsx(material.Typography, {
|
|
1067
1056
|
sx: {
|
|
1068
|
-
fontSize:
|
|
1069
|
-
color: "rgba(0,
|
|
1070
|
-
|
|
1071
|
-
lineHeight: 1.15
|
|
1057
|
+
fontSize: "13px",
|
|
1058
|
+
color: "rgba(0,0,0,0.4)",
|
|
1059
|
+
mt: 0.2
|
|
1072
1060
|
},
|
|
1073
1061
|
children: subtitle
|
|
1074
1062
|
})]
|
|
1075
|
-
}),
|
|
1063
|
+
}), /*#__PURE__*/jsxRuntime.jsx(material.Box, {
|
|
1076
1064
|
sx: {
|
|
1077
|
-
|
|
1078
|
-
fontWeight: 600,
|
|
1079
|
-
color: "rgb(99, 99, 230)",
|
|
1080
|
-
cursor: "pointer"
|
|
1065
|
+
overflowX: "auto"
|
|
1081
1066
|
},
|
|
1082
|
-
children:
|
|
1067
|
+
children: /*#__PURE__*/jsxRuntime.jsxs(material.Box, {
|
|
1068
|
+
sx: {
|
|
1069
|
+
minWidth: "600px"
|
|
1070
|
+
},
|
|
1071
|
+
children: [/*#__PURE__*/jsxRuntime.jsx(material.Box, {
|
|
1072
|
+
sx: {
|
|
1073
|
+
display: "grid",
|
|
1074
|
+
gridTemplateColumns: gridTemplateColumns,
|
|
1075
|
+
gap: 2,
|
|
1076
|
+
pb: 2.5,
|
|
1077
|
+
borderBottom: "1px solid #f0f0f0"
|
|
1078
|
+
},
|
|
1079
|
+
children: columns.map(function (header, colIdx) {
|
|
1080
|
+
return /*#__PURE__*/jsxRuntime.jsx(material.Typography, {
|
|
1081
|
+
sx: {
|
|
1082
|
+
fontSize: "12px",
|
|
1083
|
+
color: "rgba(0,0,0,0.4)",
|
|
1084
|
+
fontWeight: 500,
|
|
1085
|
+
whiteSpace: "nowrap",
|
|
1086
|
+
textAlign: colIdx === 0 ? "left" : "center"
|
|
1087
|
+
},
|
|
1088
|
+
children: header
|
|
1089
|
+
}, header);
|
|
1090
|
+
})
|
|
1091
|
+
}), /*#__PURE__*/jsxRuntime.jsx(material.Box, {
|
|
1092
|
+
sx: {
|
|
1093
|
+
mt: 1
|
|
1094
|
+
},
|
|
1095
|
+
children: rows.map(function (row, idx) {
|
|
1096
|
+
var isDisabled = row.comingSoon;
|
|
1097
|
+
return /*#__PURE__*/jsxRuntime.jsxs(material.Box, {
|
|
1098
|
+
sx: {
|
|
1099
|
+
display: "grid",
|
|
1100
|
+
gridTemplateColumns: gridTemplateColumns,
|
|
1101
|
+
gap: 2,
|
|
1102
|
+
py: 1.2,
|
|
1103
|
+
alignItems: "center",
|
|
1104
|
+
borderBottom: idx === rows.length - 1 ? "none" : "1px solid #f5f5f5",
|
|
1105
|
+
opacity: isDisabled ? 0.55 : 1,
|
|
1106
|
+
transition: "opacity 0.2s ease"
|
|
1107
|
+
},
|
|
1108
|
+
children: [/*#__PURE__*/jsxRuntime.jsxs(material.Box, {
|
|
1109
|
+
sx: {
|
|
1110
|
+
display: "flex",
|
|
1111
|
+
alignItems: "center",
|
|
1112
|
+
gap: 1.5,
|
|
1113
|
+
minWidth: 0
|
|
1114
|
+
},
|
|
1115
|
+
children: [row.id && /*#__PURE__*/jsxRuntime.jsx(material.Avatar, {
|
|
1116
|
+
sx: {
|
|
1117
|
+
width: 28,
|
|
1118
|
+
height: 28,
|
|
1119
|
+
fontSize: "10px",
|
|
1120
|
+
fontWeight: 700,
|
|
1121
|
+
bgcolor: row.avatarBg || "#F3F4F6",
|
|
1122
|
+
color: row.avatarColor || "#fff",
|
|
1123
|
+
flexShrink: 0
|
|
1124
|
+
},
|
|
1125
|
+
children: row.id
|
|
1126
|
+
}), /*#__PURE__*/jsxRuntime.jsxs(material.Box, {
|
|
1127
|
+
sx: {
|
|
1128
|
+
display: "flex",
|
|
1129
|
+
alignItems: "center",
|
|
1130
|
+
gap: 0.8,
|
|
1131
|
+
flexWrap: "nowrap",
|
|
1132
|
+
minWidth: 0
|
|
1133
|
+
},
|
|
1134
|
+
children: [/*#__PURE__*/jsxRuntime.jsx(material.Typography, {
|
|
1135
|
+
sx: {
|
|
1136
|
+
fontSize: "12px",
|
|
1137
|
+
fontWeight: 700,
|
|
1138
|
+
color: "#000",
|
|
1139
|
+
whiteSpace: "nowrap"
|
|
1140
|
+
},
|
|
1141
|
+
children: row.name
|
|
1142
|
+
}), isDisabled && /*#__PURE__*/jsxRuntime.jsx(material.Box, {
|
|
1143
|
+
sx: {
|
|
1144
|
+
display: "inline-flex",
|
|
1145
|
+
alignItems: "center",
|
|
1146
|
+
px: 0.8,
|
|
1147
|
+
py: 0.2,
|
|
1148
|
+
borderRadius: "100px",
|
|
1149
|
+
bgcolor: "#F3F4F6",
|
|
1150
|
+
border: "1px solid #E5E7EB",
|
|
1151
|
+
flexShrink: 0,
|
|
1152
|
+
whiteSpace: "nowrap"
|
|
1153
|
+
},
|
|
1154
|
+
children: /*#__PURE__*/jsxRuntime.jsx(material.Typography, {
|
|
1155
|
+
sx: {
|
|
1156
|
+
fontSize: "8px",
|
|
1157
|
+
fontWeight: 700,
|
|
1158
|
+
color: "#6B7280",
|
|
1159
|
+
letterSpacing: "0.3px",
|
|
1160
|
+
textTransform: "uppercase",
|
|
1161
|
+
whiteSpace: "nowrap"
|
|
1162
|
+
},
|
|
1163
|
+
children: "Coming Soon"
|
|
1164
|
+
})
|
|
1165
|
+
})]
|
|
1166
|
+
})]
|
|
1167
|
+
}), /*#__PURE__*/jsxRuntime.jsx(material.Typography, {
|
|
1168
|
+
sx: {
|
|
1169
|
+
fontSize: "13px",
|
|
1170
|
+
fontWeight: 600,
|
|
1171
|
+
color: isDisabled ? "#9CA3AF" : "#000",
|
|
1172
|
+
whiteSpace: "nowrap",
|
|
1173
|
+
textAlign: "center"
|
|
1174
|
+
},
|
|
1175
|
+
children: row.val1
|
|
1176
|
+
}), row.type === "progress" ? /*#__PURE__*/jsxRuntime.jsxs(material.Box, {
|
|
1177
|
+
sx: {
|
|
1178
|
+
display: "flex",
|
|
1179
|
+
alignItems: "center",
|
|
1180
|
+
gap: 1.5,
|
|
1181
|
+
justifyContent: "center"
|
|
1182
|
+
},
|
|
1183
|
+
children: [/*#__PURE__*/jsxRuntime.jsx(material.Box, {
|
|
1184
|
+
sx: {
|
|
1185
|
+
flexGrow: 1,
|
|
1186
|
+
maxWidth: "80px"
|
|
1187
|
+
},
|
|
1188
|
+
children: /*#__PURE__*/jsxRuntime.jsx(material.LinearProgress, {
|
|
1189
|
+
variant: "determinate",
|
|
1190
|
+
value: row.progress,
|
|
1191
|
+
sx: {
|
|
1192
|
+
height: 8,
|
|
1193
|
+
borderRadius: 4,
|
|
1194
|
+
bgcolor: "#F3F4F6",
|
|
1195
|
+
"& .MuiLinearProgress-bar": {
|
|
1196
|
+
borderRadius: 4,
|
|
1197
|
+
bgcolor: row.progressColor || "rgb(99,99,230)"
|
|
1198
|
+
}
|
|
1199
|
+
}
|
|
1200
|
+
})
|
|
1201
|
+
}), /*#__PURE__*/jsxRuntime.jsxs(material.Typography, {
|
|
1202
|
+
sx: {
|
|
1203
|
+
fontSize: "11px",
|
|
1204
|
+
color: "rgba(0,0,0,0.4)",
|
|
1205
|
+
minWidth: "30px",
|
|
1206
|
+
textAlign: "center"
|
|
1207
|
+
},
|
|
1208
|
+
children: [row.progress, "%"]
|
|
1209
|
+
})]
|
|
1210
|
+
}) : /*#__PURE__*/jsxRuntime.jsx(material.Typography, {
|
|
1211
|
+
sx: {
|
|
1212
|
+
fontSize: "13px",
|
|
1213
|
+
fontWeight: 600,
|
|
1214
|
+
color: isDisabled ? "#9CA3AF" : "#000",
|
|
1215
|
+
whiteSpace: "nowrap",
|
|
1216
|
+
textAlign: "center"
|
|
1217
|
+
},
|
|
1218
|
+
children: row.val2
|
|
1219
|
+
}), /*#__PURE__*/jsxRuntime.jsx(material.Typography, {
|
|
1220
|
+
sx: {
|
|
1221
|
+
fontSize: "13px",
|
|
1222
|
+
fontWeight: row.highlightVal3 ? 700 : 500,
|
|
1223
|
+
color: isDisabled ? "#9CA3AF" : row.highlightVal3 ? row.val3Color || "#22C55E" : "#000",
|
|
1224
|
+
whiteSpace: "nowrap",
|
|
1225
|
+
textAlign: "center"
|
|
1226
|
+
},
|
|
1227
|
+
children: row.val3
|
|
1228
|
+
}), /*#__PURE__*/jsxRuntime.jsx(material.Typography, {
|
|
1229
|
+
sx: {
|
|
1230
|
+
fontSize: "13px",
|
|
1231
|
+
fontWeight: 500,
|
|
1232
|
+
color: isDisabled ? "#9CA3AF" : "#000",
|
|
1233
|
+
whiteSpace: "nowrap",
|
|
1234
|
+
textAlign: "center"
|
|
1235
|
+
},
|
|
1236
|
+
children: row.val4
|
|
1237
|
+
}), columns.length > 5 && /*#__PURE__*/jsxRuntime.jsx(material.Box, {
|
|
1238
|
+
sx: {
|
|
1239
|
+
display: "flex",
|
|
1240
|
+
justifyContent: "center"
|
|
1241
|
+
},
|
|
1242
|
+
children: row.type === "trend" ? /*#__PURE__*/jsxRuntime.jsxs(material.Box, {
|
|
1243
|
+
sx: {
|
|
1244
|
+
display: "flex",
|
|
1245
|
+
alignItems: "center",
|
|
1246
|
+
gap: 0.5
|
|
1247
|
+
},
|
|
1248
|
+
children: [/*#__PURE__*/jsxRuntime.jsx(material.Typography, {
|
|
1249
|
+
sx: {
|
|
1250
|
+
fontSize: "14px",
|
|
1251
|
+
color: row.trendType === "up" ? "#22C55E" : "#EF4444"
|
|
1252
|
+
},
|
|
1253
|
+
children: row.trendType === "up" ? "▲" : "▼"
|
|
1254
|
+
}), /*#__PURE__*/jsxRuntime.jsx(material.Typography, {
|
|
1255
|
+
sx: {
|
|
1256
|
+
fontSize: "12px",
|
|
1257
|
+
color: row.trendType === "up" ? "#22C55E" : "#EF4444",
|
|
1258
|
+
fontWeight: 700,
|
|
1259
|
+
whiteSpace: "nowrap"
|
|
1260
|
+
},
|
|
1261
|
+
children: isTablet ? row.trendType === "up" ? "Up" : "Down" : row.trendLabel
|
|
1262
|
+
})]
|
|
1263
|
+
}) : row.type === "comingSoon" ? /*#__PURE__*/jsxRuntime.jsx(material.Typography, {
|
|
1264
|
+
sx: {
|
|
1265
|
+
fontSize: "12px",
|
|
1266
|
+
color: "#9CA3AF",
|
|
1267
|
+
fontWeight: 500,
|
|
1268
|
+
textAlign: "center"
|
|
1269
|
+
},
|
|
1270
|
+
children: "\u2014"
|
|
1271
|
+
}) : /*#__PURE__*/jsxRuntime.jsx(material.Box, {
|
|
1272
|
+
sx: {
|
|
1273
|
+
display: "inline-block",
|
|
1274
|
+
px: 1.5,
|
|
1275
|
+
py: 0.5,
|
|
1276
|
+
borderRadius: "100px",
|
|
1277
|
+
bgcolor: row.statusBg,
|
|
1278
|
+
color: row.statusColor,
|
|
1279
|
+
fontSize: "11px",
|
|
1280
|
+
fontWeight: 700
|
|
1281
|
+
},
|
|
1282
|
+
children: row.status
|
|
1283
|
+
})
|
|
1284
|
+
})]
|
|
1285
|
+
}, idx);
|
|
1286
|
+
})
|
|
1287
|
+
})]
|
|
1288
|
+
})
|
|
1083
1289
|
})]
|
|
1084
|
-
})
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
|
|
1088
|
-
|
|
1290
|
+
});
|
|
1291
|
+
}
|
|
1292
|
+
|
|
1293
|
+
/* ─── Mobile: Stacked Card Layout ─── */
|
|
1294
|
+
return /*#__PURE__*/jsxRuntime.jsxs(material.Box, {
|
|
1295
|
+
sx: {
|
|
1296
|
+
bgcolor: "#fff",
|
|
1297
|
+
borderRadius: 4,
|
|
1298
|
+
border: "1px solid #f0f0f0",
|
|
1299
|
+
boxShadow: "0 4px 24px rgba(0,0,0,0.06)",
|
|
1300
|
+
p: 2
|
|
1301
|
+
},
|
|
1302
|
+
children: [/*#__PURE__*/jsxRuntime.jsxs(material.Box, {
|
|
1303
|
+
sx: {
|
|
1304
|
+
mb: 2
|
|
1305
|
+
},
|
|
1306
|
+
children: [/*#__PURE__*/jsxRuntime.jsx(material.Typography, {
|
|
1089
1307
|
sx: {
|
|
1090
|
-
|
|
1308
|
+
fontWeight: 700,
|
|
1309
|
+
fontSize: "16px",
|
|
1310
|
+
color: "#000"
|
|
1091
1311
|
},
|
|
1092
|
-
children:
|
|
1312
|
+
children: title
|
|
1313
|
+
}), /*#__PURE__*/jsxRuntime.jsx(material.Typography, {
|
|
1314
|
+
sx: {
|
|
1315
|
+
fontSize: "11px",
|
|
1316
|
+
color: "rgba(0,0,0,0.4)",
|
|
1317
|
+
mt: 0.2
|
|
1318
|
+
},
|
|
1319
|
+
children: subtitle
|
|
1320
|
+
})]
|
|
1321
|
+
}), /*#__PURE__*/jsxRuntime.jsx(material.Box, {
|
|
1322
|
+
sx: {
|
|
1323
|
+
display: "flex",
|
|
1324
|
+
flexDirection: "column",
|
|
1325
|
+
gap: 1.5
|
|
1326
|
+
},
|
|
1327
|
+
children: rows.map(function (row, idx) {
|
|
1328
|
+
var isDisabled = row.comingSoon;
|
|
1329
|
+
return /*#__PURE__*/jsxRuntime.jsxs(material.Box, {
|
|
1093
1330
|
sx: {
|
|
1094
|
-
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
-
|
|
1098
|
-
|
|
1331
|
+
p: 2,
|
|
1332
|
+
borderRadius: 3,
|
|
1333
|
+
border: isDisabled ? "1px dashed #E5E7EB" : "1px solid #F3F4F6",
|
|
1334
|
+
bgcolor: isDisabled ? "#FAFAFA" : "#fff",
|
|
1335
|
+
opacity: isDisabled ? 0.7 : 1,
|
|
1336
|
+
transition: "opacity 0.2s ease"
|
|
1099
1337
|
},
|
|
1100
|
-
children:
|
|
1101
|
-
|
|
1338
|
+
children: [/*#__PURE__*/jsxRuntime.jsxs(material.Box, {
|
|
1339
|
+
sx: {
|
|
1340
|
+
display: "flex",
|
|
1341
|
+
alignItems: "center",
|
|
1342
|
+
gap: 1.5,
|
|
1343
|
+
mb: isDisabled ? 0 : 1.5
|
|
1344
|
+
},
|
|
1345
|
+
children: [row.id && /*#__PURE__*/jsxRuntime.jsx(material.Avatar, {
|
|
1102
1346
|
sx: {
|
|
1103
|
-
|
|
1104
|
-
|
|
1105
|
-
|
|
1106
|
-
|
|
1347
|
+
width: 32,
|
|
1348
|
+
height: 32,
|
|
1349
|
+
fontSize: "11px",
|
|
1350
|
+
fontWeight: 700,
|
|
1351
|
+
bgcolor: row.avatarBg || "#F3F4F6",
|
|
1352
|
+
color: row.avatarColor || "#fff",
|
|
1353
|
+
flexShrink: 0
|
|
1107
1354
|
},
|
|
1108
|
-
children:
|
|
1109
|
-
},
|
|
1110
|
-
})
|
|
1111
|
-
}), /*#__PURE__*/jsxRuntime.jsx(material.Box, {
|
|
1112
|
-
sx: {
|
|
1113
|
-
mt: 1
|
|
1114
|
-
},
|
|
1115
|
-
children: rows.map(function (row, idx) {
|
|
1116
|
-
var _row$progress;
|
|
1117
|
-
return /*#__PURE__*/jsxRuntime.jsxs(material.Box, {
|
|
1355
|
+
children: row.id
|
|
1356
|
+
}), /*#__PURE__*/jsxRuntime.jsxs(material.Box, {
|
|
1118
1357
|
sx: {
|
|
1119
|
-
display: "
|
|
1120
|
-
gridTemplateColumns: gridTemplateColumns,
|
|
1121
|
-
gap: compact ? 1 : 2,
|
|
1122
|
-
py: compact ? 0.5 : 1.2,
|
|
1358
|
+
display: "flex",
|
|
1123
1359
|
alignItems: "center",
|
|
1124
|
-
|
|
1360
|
+
gap: 1,
|
|
1361
|
+
flex: 1,
|
|
1362
|
+
flexWrap: "nowrap"
|
|
1125
1363
|
},
|
|
1126
|
-
children: [/*#__PURE__*/jsxRuntime.
|
|
1364
|
+
children: [/*#__PURE__*/jsxRuntime.jsx(material.Typography, {
|
|
1127
1365
|
sx: {
|
|
1128
|
-
|
|
1366
|
+
fontSize: "14px",
|
|
1367
|
+
fontWeight: 700,
|
|
1368
|
+
color: "#000"
|
|
1369
|
+
},
|
|
1370
|
+
children: row.name
|
|
1371
|
+
}), isDisabled && /*#__PURE__*/jsxRuntime.jsx(material.Box, {
|
|
1372
|
+
sx: {
|
|
1373
|
+
display: "inline-flex",
|
|
1129
1374
|
alignItems: "center",
|
|
1130
|
-
|
|
1375
|
+
px: 1,
|
|
1376
|
+
py: 0.3,
|
|
1377
|
+
borderRadius: "100px",
|
|
1378
|
+
bgcolor: "#F3F4F6",
|
|
1379
|
+
border: "1px solid #E5E7EB",
|
|
1380
|
+
flexShrink: 0
|
|
1131
1381
|
},
|
|
1132
|
-
children:
|
|
1133
|
-
sx: {
|
|
1134
|
-
width: compact ? 22 : 28,
|
|
1135
|
-
height: compact ? 22 : 28,
|
|
1136
|
-
fontSize: compact ? "8px" : "10px",
|
|
1137
|
-
fontWeight: 700,
|
|
1138
|
-
bgcolor: row.avatarBg || "#F3F4F6",
|
|
1139
|
-
color: "rgb(99, 99, 230)"
|
|
1140
|
-
},
|
|
1141
|
-
children: row.id
|
|
1142
|
-
}), row.icon && /*#__PURE__*/jsxRuntime.jsx(material.Box, {
|
|
1143
|
-
sx: {
|
|
1144
|
-
color: row.iconColor || "inherit",
|
|
1145
|
-
display: "flex",
|
|
1146
|
-
alignItems: "center"
|
|
1147
|
-
},
|
|
1148
|
-
children: /*#__PURE__*/jsxRuntime.jsx(row.icon, {
|
|
1149
|
-
sx: {
|
|
1150
|
-
fontSize: "18px"
|
|
1151
|
-
}
|
|
1152
|
-
})
|
|
1153
|
-
}), /*#__PURE__*/jsxRuntime.jsx(material.Typography, {
|
|
1382
|
+
children: /*#__PURE__*/jsxRuntime.jsx(material.Typography, {
|
|
1154
1383
|
sx: {
|
|
1155
|
-
fontSize:
|
|
1384
|
+
fontSize: "8px",
|
|
1156
1385
|
fontWeight: 700,
|
|
1157
|
-
color: "#
|
|
1386
|
+
color: "#6B7280",
|
|
1387
|
+
letterSpacing: "0.3px",
|
|
1388
|
+
textTransform: "uppercase"
|
|
1158
1389
|
},
|
|
1159
|
-
children:
|
|
1160
|
-
})
|
|
1390
|
+
children: "Coming Soon"
|
|
1391
|
+
})
|
|
1392
|
+
})]
|
|
1393
|
+
}), row.type === "trend" && /*#__PURE__*/jsxRuntime.jsxs(material.Box, {
|
|
1394
|
+
sx: {
|
|
1395
|
+
display: "flex",
|
|
1396
|
+
alignItems: "center",
|
|
1397
|
+
gap: 0.3,
|
|
1398
|
+
flexShrink: 0
|
|
1399
|
+
},
|
|
1400
|
+
children: [/*#__PURE__*/jsxRuntime.jsx(material.Typography, {
|
|
1401
|
+
sx: {
|
|
1402
|
+
fontSize: "12px",
|
|
1403
|
+
color: row.trendType === "up" ? "#22C55E" : "#EF4444"
|
|
1404
|
+
},
|
|
1405
|
+
children: row.trendType === "up" ? "▲" : "▼"
|
|
1161
1406
|
}), /*#__PURE__*/jsxRuntime.jsx(material.Typography, {
|
|
1162
1407
|
sx: {
|
|
1163
|
-
fontSize:
|
|
1408
|
+
fontSize: "11px",
|
|
1409
|
+
color: row.trendType === "up" ? "#22C55E" : "#EF4444",
|
|
1410
|
+
fontWeight: 700
|
|
1411
|
+
},
|
|
1412
|
+
children: row.trendType === "up" ? "Up" : "Down"
|
|
1413
|
+
})]
|
|
1414
|
+
})]
|
|
1415
|
+
}), !isDisabled && /*#__PURE__*/jsxRuntime.jsxs(material.Box, {
|
|
1416
|
+
sx: {
|
|
1417
|
+
display: "grid",
|
|
1418
|
+
gridTemplateColumns: "1fr 1fr 1fr 1fr",
|
|
1419
|
+
gap: 1
|
|
1420
|
+
},
|
|
1421
|
+
children: [/*#__PURE__*/jsxRuntime.jsxs(material.Box, {
|
|
1422
|
+
children: [/*#__PURE__*/jsxRuntime.jsx(material.Typography, {
|
|
1423
|
+
sx: {
|
|
1424
|
+
fontSize: "9px",
|
|
1425
|
+
color: "#9CA3AF",
|
|
1164
1426
|
fontWeight: 600,
|
|
1427
|
+
textTransform: "uppercase",
|
|
1428
|
+
letterSpacing: "0.3px"
|
|
1429
|
+
},
|
|
1430
|
+
children: "Spend"
|
|
1431
|
+
}), /*#__PURE__*/jsxRuntime.jsx(material.Typography, {
|
|
1432
|
+
sx: {
|
|
1433
|
+
fontSize: "13px",
|
|
1434
|
+
fontWeight: 700,
|
|
1165
1435
|
color: "#000",
|
|
1166
|
-
|
|
1436
|
+
mt: 0.3
|
|
1167
1437
|
},
|
|
1168
1438
|
children: row.val1
|
|
1169
|
-
})
|
|
1439
|
+
})]
|
|
1440
|
+
}), /*#__PURE__*/jsxRuntime.jsxs(material.Box, {
|
|
1441
|
+
children: [/*#__PURE__*/jsxRuntime.jsx(material.Typography, {
|
|
1170
1442
|
sx: {
|
|
1171
|
-
|
|
1172
|
-
|
|
1173
|
-
|
|
1443
|
+
fontSize: "9px",
|
|
1444
|
+
color: "#9CA3AF",
|
|
1445
|
+
fontWeight: 600,
|
|
1446
|
+
textTransform: "uppercase",
|
|
1447
|
+
letterSpacing: "0.3px"
|
|
1174
1448
|
},
|
|
1175
|
-
children:
|
|
1176
|
-
|
|
1177
|
-
flexGrow: 1
|
|
1178
|
-
},
|
|
1179
|
-
children: /*#__PURE__*/jsxRuntime.jsx(material.LinearProgress, {
|
|
1180
|
-
variant: "determinate",
|
|
1181
|
-
value: Math.min(100, Math.max(0, (_row$progress = row.progress) !== null && _row$progress !== void 0 ? _row$progress : 0)),
|
|
1182
|
-
sx: {
|
|
1183
|
-
height: compact ? 6 : 8,
|
|
1184
|
-
borderRadius: 4,
|
|
1185
|
-
bgcolor: "#F3F4F6",
|
|
1186
|
-
"& .MuiLinearProgress-bar": {
|
|
1187
|
-
borderRadius: 4,
|
|
1188
|
-
bgcolor: row.progressColor || "rgb(99, 99, 230)"
|
|
1189
|
-
}
|
|
1190
|
-
}
|
|
1191
|
-
})
|
|
1192
|
-
}), /*#__PURE__*/jsxRuntime.jsxs(material.Typography, {
|
|
1193
|
-
sx: {
|
|
1194
|
-
fontSize: compact ? "9px" : "11px",
|
|
1195
|
-
color: "rgba(0, 0, 0, 0.4)",
|
|
1196
|
-
minWidth: "30px"
|
|
1197
|
-
},
|
|
1198
|
-
children: [row.progress, "%"]
|
|
1199
|
-
})]
|
|
1200
|
-
}) : /*#__PURE__*/jsxRuntime.jsx(material.Typography, {
|
|
1449
|
+
children: "Revenue"
|
|
1450
|
+
}), /*#__PURE__*/jsxRuntime.jsx(material.Typography, {
|
|
1201
1451
|
sx: {
|
|
1202
1452
|
fontSize: "13px",
|
|
1203
|
-
fontWeight:
|
|
1453
|
+
fontWeight: 700,
|
|
1204
1454
|
color: "#000",
|
|
1205
|
-
|
|
1455
|
+
mt: 0.3
|
|
1206
1456
|
},
|
|
1207
1457
|
children: row.val2
|
|
1458
|
+
})]
|
|
1459
|
+
}), /*#__PURE__*/jsxRuntime.jsxs(material.Box, {
|
|
1460
|
+
children: [/*#__PURE__*/jsxRuntime.jsx(material.Typography, {
|
|
1461
|
+
sx: {
|
|
1462
|
+
fontSize: "9px",
|
|
1463
|
+
color: "#9CA3AF",
|
|
1464
|
+
fontWeight: 600,
|
|
1465
|
+
textTransform: "uppercase",
|
|
1466
|
+
letterSpacing: "0.3px"
|
|
1467
|
+
},
|
|
1468
|
+
children: "ROAS"
|
|
1208
1469
|
}), /*#__PURE__*/jsxRuntime.jsx(material.Typography, {
|
|
1209
1470
|
sx: {
|
|
1210
|
-
fontSize:
|
|
1211
|
-
fontWeight:
|
|
1212
|
-
color: row.
|
|
1213
|
-
|
|
1471
|
+
fontSize: "13px",
|
|
1472
|
+
fontWeight: 700,
|
|
1473
|
+
color: row.val3Color || "#22C55E",
|
|
1474
|
+
mt: 0.3
|
|
1214
1475
|
},
|
|
1215
1476
|
children: row.val3
|
|
1477
|
+
})]
|
|
1478
|
+
}), /*#__PURE__*/jsxRuntime.jsxs(material.Box, {
|
|
1479
|
+
children: [/*#__PURE__*/jsxRuntime.jsx(material.Typography, {
|
|
1480
|
+
sx: {
|
|
1481
|
+
fontSize: "9px",
|
|
1482
|
+
color: "#9CA3AF",
|
|
1483
|
+
fontWeight: 600,
|
|
1484
|
+
textTransform: "uppercase",
|
|
1485
|
+
letterSpacing: "0.3px"
|
|
1486
|
+
},
|
|
1487
|
+
children: "CPA"
|
|
1216
1488
|
}), /*#__PURE__*/jsxRuntime.jsx(material.Typography, {
|
|
1217
1489
|
sx: {
|
|
1218
1490
|
fontSize: "13px",
|
|
1219
|
-
fontWeight:
|
|
1491
|
+
fontWeight: 700,
|
|
1220
1492
|
color: "#000",
|
|
1221
|
-
|
|
1493
|
+
mt: 0.3
|
|
1222
1494
|
},
|
|
1223
1495
|
children: row.val4
|
|
1224
|
-
}), columns.length > 5 && /*#__PURE__*/jsxRuntime.jsx(material.Box, {
|
|
1225
|
-
children: row.type === "trend" ? /*#__PURE__*/jsxRuntime.jsx(material.Box, {
|
|
1226
|
-
sx: {
|
|
1227
|
-
display: "flex",
|
|
1228
|
-
alignItems: "center",
|
|
1229
|
-
gap: 0.5
|
|
1230
|
-
},
|
|
1231
|
-
children: row.trendType === "up" ? /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
1232
|
-
children: [/*#__PURE__*/jsxRuntime.jsx(material.Typography, {
|
|
1233
|
-
sx: {
|
|
1234
|
-
fontSize: "14px",
|
|
1235
|
-
color: "#22C55E"
|
|
1236
|
-
},
|
|
1237
|
-
children: "\u25B2"
|
|
1238
|
-
}), /*#__PURE__*/jsxRuntime.jsx(material.Typography, {
|
|
1239
|
-
sx: {
|
|
1240
|
-
fontSize: "12px",
|
|
1241
|
-
color: "#22C55E",
|
|
1242
|
-
fontWeight: 700
|
|
1243
|
-
},
|
|
1244
|
-
children: row.trendLabel
|
|
1245
|
-
})]
|
|
1246
|
-
}) : /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
1247
|
-
children: [/*#__PURE__*/jsxRuntime.jsx(material.Typography, {
|
|
1248
|
-
sx: {
|
|
1249
|
-
fontSize: "14px",
|
|
1250
|
-
color: "#EF4444"
|
|
1251
|
-
},
|
|
1252
|
-
children: "\u25BC"
|
|
1253
|
-
}), /*#__PURE__*/jsxRuntime.jsx(material.Typography, {
|
|
1254
|
-
sx: {
|
|
1255
|
-
fontSize: "12px",
|
|
1256
|
-
color: "#EF4444",
|
|
1257
|
-
fontWeight: 700
|
|
1258
|
-
},
|
|
1259
|
-
children: row.trendLabel
|
|
1260
|
-
})]
|
|
1261
|
-
})
|
|
1262
|
-
}) : /*#__PURE__*/jsxRuntime.jsx(material.Box, {
|
|
1263
|
-
sx: {
|
|
1264
|
-
display: "inline-block",
|
|
1265
|
-
px: compact ? 1 : 1.5,
|
|
1266
|
-
py: compact ? 0.25 : 0.5,
|
|
1267
|
-
borderRadius: "100px",
|
|
1268
|
-
bgcolor: row.statusBg,
|
|
1269
|
-
color: row.statusColor,
|
|
1270
|
-
fontSize: compact ? "9px" : "11px",
|
|
1271
|
-
fontWeight: 700,
|
|
1272
|
-
textAlign: "center"
|
|
1273
|
-
},
|
|
1274
|
-
children: row.status
|
|
1275
|
-
})
|
|
1276
1496
|
})]
|
|
1277
|
-
}
|
|
1278
|
-
})
|
|
1279
|
-
})
|
|
1497
|
+
})]
|
|
1498
|
+
})]
|
|
1499
|
+
}, idx);
|
|
1280
1500
|
})
|
|
1281
1501
|
})]
|
|
1282
1502
|
});
|
|
@@ -1370,6 +1590,99 @@ var MetricCard$1 = function MetricCard(_ref) {
|
|
|
1370
1590
|
});
|
|
1371
1591
|
};
|
|
1372
1592
|
|
|
1593
|
+
var DisplayCard = function DisplayCard(_ref) {
|
|
1594
|
+
var title = _ref.title,
|
|
1595
|
+
value = _ref.value,
|
|
1596
|
+
subValue = _ref.subValue,
|
|
1597
|
+
Icon = _ref.icon,
|
|
1598
|
+
onClick = _ref.onClick,
|
|
1599
|
+
_ref$sx = _ref.sx,
|
|
1600
|
+
sx = _ref$sx === void 0 ? {} : _ref$sx,
|
|
1601
|
+
_ref$isActive = _ref.isActive,
|
|
1602
|
+
isActive = _ref$isActive === void 0 ? false : _ref$isActive;
|
|
1603
|
+
return /*#__PURE__*/jsxRuntime.jsxs(material.Box, {
|
|
1604
|
+
onClick: onClick,
|
|
1605
|
+
sx: _objectSpread2({
|
|
1606
|
+
height: "100px",
|
|
1607
|
+
borderRadius: "24px",
|
|
1608
|
+
display: "flex",
|
|
1609
|
+
justifyContent: "space-between",
|
|
1610
|
+
alignItems: "center",
|
|
1611
|
+
boxShadow: "rgba(0, 0, 0, 0.06) 0px 4px 15px 0px",
|
|
1612
|
+
// boxShadow: "0 4px 24px rgba(0,0,0,0.06)",
|
|
1613
|
+
// padding: "16px 16px 16px 18px",
|
|
1614
|
+
py: "10px",
|
|
1615
|
+
px: "16px",
|
|
1616
|
+
cursor: "pointer",
|
|
1617
|
+
bgcolor: "#fff",
|
|
1618
|
+
border: isActive ? "1px solid rgb(99, 99, 230)" : "none",
|
|
1619
|
+
// border: "2px solid #f0f0f0",
|
|
1620
|
+
transition: "all 0.3s ease"
|
|
1621
|
+
}, sx),
|
|
1622
|
+
children: [/*#__PURE__*/jsxRuntime.jsxs(material.Box, {
|
|
1623
|
+
sx: {
|
|
1624
|
+
display: "flex",
|
|
1625
|
+
flexDirection: "column",
|
|
1626
|
+
gap: 0.5
|
|
1627
|
+
},
|
|
1628
|
+
children: [/*#__PURE__*/jsxRuntime.jsx(material.Typography, {
|
|
1629
|
+
sx: {
|
|
1630
|
+
fontWeight: "400",
|
|
1631
|
+
color: isActive ? "#c1c1f5" : "#a1a1a8",
|
|
1632
|
+
fontSize: "14px",
|
|
1633
|
+
lineHeight: "16px",
|
|
1634
|
+
textAlign: "left"
|
|
1635
|
+
},
|
|
1636
|
+
children: title
|
|
1637
|
+
}), /*#__PURE__*/jsxRuntime.jsx(material.Typography, {
|
|
1638
|
+
sx: {
|
|
1639
|
+
lineHeight: "1.2",
|
|
1640
|
+
textAlign: "left",
|
|
1641
|
+
color: isActive ? "#6363e6" : "#000",
|
|
1642
|
+
fontSize: "20px",
|
|
1643
|
+
fontWeight: "700",
|
|
1644
|
+
mb: 0.5
|
|
1645
|
+
},
|
|
1646
|
+
children: statusValue(value)
|
|
1647
|
+
}), subValue && /*#__PURE__*/jsxRuntime.jsxs(material.Typography, {
|
|
1648
|
+
sx: {
|
|
1649
|
+
fontSize: "11px",
|
|
1650
|
+
color: typeof subValue === "string" && (subValue.includes("%") || subValue.includes("new") || subValue.includes("x")) && !subValue.includes("/") && !subValue.includes("pass-through") ? "#22C55E" : "rgba(0, 0, 0, 0.4)",
|
|
1651
|
+
fontWeight: "500",
|
|
1652
|
+
display: "flex",
|
|
1653
|
+
alignItems: "center",
|
|
1654
|
+
gap: 0.5
|
|
1655
|
+
},
|
|
1656
|
+
children: [typeof subValue === "string" && (subValue.includes("%") || subValue.includes("new") || subValue.includes("x")) && !subValue.includes("/") && !subValue.includes("pass-through") && /*#__PURE__*/jsxRuntime.jsx("span", {
|
|
1657
|
+
style: {
|
|
1658
|
+
fontSize: "14px"
|
|
1659
|
+
},
|
|
1660
|
+
children: "\u25B2"
|
|
1661
|
+
}), subValue]
|
|
1662
|
+
})]
|
|
1663
|
+
}), Icon && /*#__PURE__*/jsxRuntime.jsx(material.Box, {
|
|
1664
|
+
sx: {
|
|
1665
|
+
width: "44px",
|
|
1666
|
+
height: "44px",
|
|
1667
|
+
borderRadius: "50%",
|
|
1668
|
+
backgroundColor: "#f7f7ff",
|
|
1669
|
+
display: "flex",
|
|
1670
|
+
alignItems: "center",
|
|
1671
|
+
justifyContent: "center",
|
|
1672
|
+
color: "rgb(99, 99, 230)"
|
|
1673
|
+
},
|
|
1674
|
+
children: /*#__PURE__*/jsxRuntime.jsx(Icon, {
|
|
1675
|
+
sx: {
|
|
1676
|
+
fontSize: "20px"
|
|
1677
|
+
}
|
|
1678
|
+
})
|
|
1679
|
+
})]
|
|
1680
|
+
});
|
|
1681
|
+
};
|
|
1682
|
+
var statusValue = function statusValue(value) {
|
|
1683
|
+
return _typeof(value) === "object" && value !== null ? value.value !== undefined ? value.value : JSON.stringify(value) : value;
|
|
1684
|
+
};
|
|
1685
|
+
|
|
1373
1686
|
var PURPLE = "#6363E6";
|
|
1374
1687
|
var REPORT_COLORS = {
|
|
1375
1688
|
purple: PURPLE};
|
|
@@ -1747,8 +2060,8 @@ var kpiRoas = function kpiRoas(v) {
|
|
|
1747
2060
|
};
|
|
1748
2061
|
var d$Compact = function d$Compact(v) {
|
|
1749
2062
|
var n = Number(v !== null && v !== void 0 ? v : 0);
|
|
1750
|
-
if (n >= 1000000) return "$".concat((n / 1000000).toFixed(
|
|
1751
|
-
if (n >= 1000) return "$".concat((n / 1000).toFixed(
|
|
2063
|
+
if (n >= 1000000) return "$".concat((n / 1000000).toFixed(2), "M");
|
|
2064
|
+
if (n >= 1000) return "$".concat((n / 1000).toFixed(2), "K");
|
|
1752
2065
|
return d$(n);
|
|
1753
2066
|
};
|
|
1754
2067
|
var pct = function pct(v) {
|
|
@@ -3758,9 +4071,9 @@ var ExportPdfLayout = /*#__PURE__*/React.forwardRef(function (_ref34, ref) {
|
|
|
3758
4071
|
});
|
|
3759
4072
|
ExportPdfLayout.displayName = "ExportPdfLayout";
|
|
3760
4073
|
|
|
3761
|
-
/**
|
|
3762
|
-
* Captures [data-export-page] elements and saves a multi-page PDF.
|
|
3763
|
-
* Each page uses a custom size matching the captured content so nothing is cropped.
|
|
4074
|
+
/**
|
|
4075
|
+
* Captures [data-export-page] elements and saves a multi-page PDF.
|
|
4076
|
+
* Each page uses a custom size matching the captured content so nothing is cropped.
|
|
3764
4077
|
*/
|
|
3765
4078
|
function exportReportPdf(_x, _x2) {
|
|
3766
4079
|
return _exportReportPdf.apply(this, arguments);
|
|
@@ -4603,8 +4916,6 @@ var DonorMixCard = function DonorMixCard(_ref) {
|
|
|
4603
4916
|
border: "1px solid #f0f0f0",
|
|
4604
4917
|
boxShadow: "0 4px 24px rgba(0,0,0,0.06)",
|
|
4605
4918
|
p: compact ? 1.5 : 3,
|
|
4606
|
-
// height: "100%",
|
|
4607
|
-
// width: "100%",
|
|
4608
4919
|
display: "flex",
|
|
4609
4920
|
flexDirection: "column"
|
|
4610
4921
|
}, sx),
|
|
@@ -4634,7 +4945,6 @@ var DonorMixCard = function DonorMixCard(_ref) {
|
|
|
4634
4945
|
sx: {
|
|
4635
4946
|
position: "relative",
|
|
4636
4947
|
height: compact ? "110px" : "180px",
|
|
4637
|
-
// mb: 1,
|
|
4638
4948
|
display: "flex",
|
|
4639
4949
|
justifyContent: "center"
|
|
4640
4950
|
},
|
|
@@ -4645,13 +4955,16 @@ var DonorMixCard = function DonorMixCard(_ref) {
|
|
|
4645
4955
|
width: compact ? "140" : "210"
|
|
4646
4956
|
})
|
|
4647
4957
|
}), /*#__PURE__*/jsxRuntime.jsxs(material.Box, {
|
|
4648
|
-
sx: {},
|
|
4649
4958
|
children: [items.map(function (item, idx) {
|
|
4959
|
+
var isComingSoon = item.comingSoon;
|
|
4650
4960
|
return /*#__PURE__*/jsxRuntime.jsxs(material.Box, {
|
|
4651
4961
|
sx: {
|
|
4652
4962
|
display: "flex",
|
|
4653
4963
|
justifyContent: "space-between",
|
|
4654
|
-
|
|
4964
|
+
alignItems: "center",
|
|
4965
|
+
mb: idx === items.length - 1 ? showBottomSummary ? compact ? 0.5 : 0 : 0 : compact ? 0.5 : 0,
|
|
4966
|
+
opacity: isComingSoon ? 0.55 : 1,
|
|
4967
|
+
transition: "opacity 0.2s ease"
|
|
4655
4968
|
},
|
|
4656
4969
|
children: [/*#__PURE__*/jsxRuntime.jsxs(material.Box, {
|
|
4657
4970
|
sx: {
|
|
@@ -4670,11 +4983,32 @@ var DonorMixCard = function DonorMixCard(_ref) {
|
|
|
4670
4983
|
sx: {
|
|
4671
4984
|
fontSize: compact ? "10px" : "13px",
|
|
4672
4985
|
fontWeight: 500,
|
|
4673
|
-
color: "rgba(0, 0, 0, 0.4)"
|
|
4986
|
+
color: isComingSoon ? "#9CA3AF" : "rgba(0, 0, 0, 0.4)"
|
|
4674
4987
|
},
|
|
4675
4988
|
children: item.label
|
|
4676
4989
|
})]
|
|
4677
|
-
}), /*#__PURE__*/jsxRuntime.jsx(material.
|
|
4990
|
+
}), isComingSoon ? /*#__PURE__*/jsxRuntime.jsx(material.Box, {
|
|
4991
|
+
sx: {
|
|
4992
|
+
display: "inline-flex",
|
|
4993
|
+
alignItems: "center",
|
|
4994
|
+
px: 1,
|
|
4995
|
+
py: 0.3,
|
|
4996
|
+
borderRadius: "100px",
|
|
4997
|
+
bgcolor: "#F3F4F6",
|
|
4998
|
+
border: "1px solid #E5E7EB"
|
|
4999
|
+
},
|
|
5000
|
+
children: /*#__PURE__*/jsxRuntime.jsx(material.Typography, {
|
|
5001
|
+
sx: {
|
|
5002
|
+
fontSize: "9px",
|
|
5003
|
+
fontWeight: 700,
|
|
5004
|
+
color: "#6B7280",
|
|
5005
|
+
letterSpacing: "0.3px",
|
|
5006
|
+
textTransform: "uppercase",
|
|
5007
|
+
lineHeight: 1
|
|
5008
|
+
},
|
|
5009
|
+
children: "Coming Soon"
|
|
5010
|
+
})
|
|
5011
|
+
}) : /*#__PURE__*/jsxRuntime.jsx(material.Typography, {
|
|
4678
5012
|
sx: {
|
|
4679
5013
|
fontSize: compact ? "10px" : "13px",
|
|
4680
5014
|
fontWeight: 700,
|
|
@@ -4685,9 +5019,6 @@ var DonorMixCard = function DonorMixCard(_ref) {
|
|
|
4685
5019
|
}, idx);
|
|
4686
5020
|
}), showBottomSummary && /*#__PURE__*/jsxRuntime.jsxs(material.Box, {
|
|
4687
5021
|
sx: {
|
|
4688
|
-
// display: "flex",
|
|
4689
|
-
// justifyContent: "space-between",
|
|
4690
|
-
// alignItems: "center",
|
|
4691
5022
|
pt: compact ? 1 : 2,
|
|
4692
5023
|
borderTop: "1px solid #f0f0f0",
|
|
4693
5024
|
textAlign: "left"
|
|
@@ -6463,13 +6794,16 @@ var TopCampaignsConvRateCard = function TopCampaignsConvRateCard(_ref7) {
|
|
|
6463
6794
|
})]
|
|
6464
6795
|
});
|
|
6465
6796
|
};
|
|
6466
|
-
var getCampaignInitials$
|
|
6797
|
+
var getCampaignInitials$1 = function getCampaignInitials() {
|
|
6467
6798
|
var name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "";
|
|
6468
|
-
var words = name.
|
|
6799
|
+
var words = name.match(/[A-Za-z]+/g) || [];
|
|
6469
6800
|
if (words.length >= 2) {
|
|
6470
6801
|
return (words[0][0] + words[1][0]).toUpperCase();
|
|
6471
6802
|
}
|
|
6472
|
-
|
|
6803
|
+
if (words.length === 1) {
|
|
6804
|
+
return words[0].slice(0, 2).toUpperCase();
|
|
6805
|
+
}
|
|
6806
|
+
return "—";
|
|
6473
6807
|
};
|
|
6474
6808
|
var TopPerformingCampaignsCard = function TopPerformingCampaignsCard(_ref8) {
|
|
6475
6809
|
var _ref8$data = _ref8.data,
|
|
@@ -6563,20 +6897,27 @@ var TopPerformingCampaignsCard = function TopPerformingCampaignsCard(_ref8) {
|
|
|
6563
6897
|
alignItems: "center",
|
|
6564
6898
|
gap: 1.5
|
|
6565
6899
|
},
|
|
6566
|
-
children: [/*#__PURE__*/jsxRuntime.jsx(material.
|
|
6900
|
+
children: [/*#__PURE__*/jsxRuntime.jsx(material.Avatar, {
|
|
6901
|
+
src: item.image || item.avatar || item.logo || item.thumbnail || item.campaignImage || undefined,
|
|
6902
|
+
alt: item.name,
|
|
6903
|
+
imgProps: {
|
|
6904
|
+
style: {
|
|
6905
|
+
width: "100%",
|
|
6906
|
+
height: "100%",
|
|
6907
|
+
objectFit: "cover"
|
|
6908
|
+
}
|
|
6909
|
+
},
|
|
6567
6910
|
sx: {
|
|
6568
6911
|
width: 24,
|
|
6569
6912
|
height: 24,
|
|
6913
|
+
flexShrink: 0,
|
|
6570
6914
|
borderRadius: "50%",
|
|
6571
6915
|
bgcolor: "#c1cfde71",
|
|
6572
6916
|
color: "#3431e4ff",
|
|
6573
|
-
display: "flex",
|
|
6574
|
-
alignItems: "center",
|
|
6575
|
-
justifyContent: "center",
|
|
6576
6917
|
fontSize: "10px",
|
|
6577
6918
|
fontWeight: 700
|
|
6578
6919
|
},
|
|
6579
|
-
children: item.id || getCampaignInitials$
|
|
6920
|
+
children: item.id || getCampaignInitials$1(item.name)
|
|
6580
6921
|
}), /*#__PURE__*/jsxRuntime.jsx(material.Typography, {
|
|
6581
6922
|
sx: {
|
|
6582
6923
|
fontSize: "13px",
|
|
@@ -6923,7 +7264,7 @@ var RefundsChargebacksCard = function RefundsChargebacksCard(_ref) {
|
|
|
6923
7264
|
}];
|
|
6924
7265
|
var fmt = function fmt(n) {
|
|
6925
7266
|
var _n$toFixed;
|
|
6926
|
-
return n >= 1000 ? "".concat((n / 1000).toFixed(
|
|
7267
|
+
return n >= 1000 ? "".concat((n / 1000).toFixed(2), "k") : parseFloat((_n$toFixed = n === null || n === void 0 ? void 0 : n.toFixed(2)) !== null && _n$toFixed !== void 0 ? _n$toFixed : 0).toString();
|
|
6927
7268
|
};
|
|
6928
7269
|
var growthColor = growthPercentage > 0 ? "#EF4444" : growthPercentage < 0 ? "#22C55E" : "rgba(0,0,0,0.4)";
|
|
6929
7270
|
var growthLabel = growthPercentage > 0 ? "\u25B2 ".concat(growthPercentage.toFixed(1), "%") : growthPercentage < 0 ? "\u25BC ".concat(Math.abs(growthPercentage).toFixed(1), "%") : "stable";
|
|
@@ -9092,14 +9433,14 @@ var AbandonedDonationRecovery = function AbandonedDonationRecovery() {
|
|
|
9092
9433
|
});
|
|
9093
9434
|
};
|
|
9094
9435
|
|
|
9095
|
-
/**
|
|
9096
|
-
* Theme colors for server components
|
|
9097
|
-
*
|
|
9098
|
-
* These are plain JavaScript objects that can be safely imported
|
|
9099
|
-
* in both server and client components without triggering
|
|
9100
|
-
* client-only code in server components.
|
|
9101
|
-
*
|
|
9102
|
-
* For client components, use the full theme from @/config/customTheme
|
|
9436
|
+
/**
|
|
9437
|
+
* Theme colors for server components
|
|
9438
|
+
*
|
|
9439
|
+
* These are plain JavaScript objects that can be safely imported
|
|
9440
|
+
* in both server and client components without triggering
|
|
9441
|
+
* client-only code in server components.
|
|
9442
|
+
*
|
|
9443
|
+
* For client components, use the full theme from @/config/customTheme
|
|
9103
9444
|
*/
|
|
9104
9445
|
|
|
9105
9446
|
var themeColors = {
|
|
@@ -17439,98 +17780,15 @@ var OverallSectionSkeleton = function OverallSectionSkeleton() {
|
|
|
17439
17780
|
height: 280
|
|
17440
17781
|
}, index);
|
|
17441
17782
|
})
|
|
17442
|
-
}), /*#__PURE__*/jsxRuntime.jsx(material.Box, {
|
|
17443
|
-
sx: fourColGridSx,
|
|
17444
|
-
children: Array.from({
|
|
17445
|
-
length: 4
|
|
17446
|
-
}).map(function (_, index) {
|
|
17447
|
-
return /*#__PURE__*/jsxRuntime.jsx(PanelCardSkeleton, {
|
|
17448
|
-
height: 280
|
|
17449
|
-
}, index);
|
|
17450
|
-
})
|
|
17451
|
-
})]
|
|
17452
|
-
})]
|
|
17453
|
-
});
|
|
17454
|
-
};
|
|
17455
|
-
var PaidSectionSkeleton = function PaidSectionSkeleton() {
|
|
17456
|
-
return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
17457
|
-
children: [/*#__PURE__*/jsxRuntime.jsx(MetricCardsSkeleton, {
|
|
17458
|
-
count: 6,
|
|
17459
|
-
gridTemplateColumns: {
|
|
17460
|
-
xs: "1fr",
|
|
17461
|
-
sm: "1fr 1fr",
|
|
17462
|
-
md: "1fr 1fr 1fr",
|
|
17463
|
-
lg: "repeat(6, 1fr)"
|
|
17464
|
-
},
|
|
17465
|
-
gap: 2
|
|
17466
|
-
}), /*#__PURE__*/jsxRuntime.jsx(material.Grid, {
|
|
17467
|
-
container: true,
|
|
17468
|
-
spacing: 3,
|
|
17469
|
-
sx: {
|
|
17470
|
-
mt: 2.75
|
|
17471
|
-
},
|
|
17472
|
-
children: /*#__PURE__*/jsxRuntime.jsx(material.Grid, {
|
|
17473
|
-
item: true,
|
|
17474
|
-
xs: 12,
|
|
17475
|
-
sx: {
|
|
17476
|
-
paddingTop: "0px !important"
|
|
17477
|
-
},
|
|
17478
|
-
children: /*#__PURE__*/jsxRuntime.jsx(ChartCardSkeleton, {
|
|
17479
|
-
height: 400
|
|
17480
|
-
})
|
|
17481
|
-
})
|
|
17482
|
-
}), /*#__PURE__*/jsxRuntime.jsxs(material.Grid, {
|
|
17483
|
-
container: true,
|
|
17484
|
-
spacing: 3,
|
|
17485
|
-
sx: {
|
|
17486
|
-
mt: 2.25
|
|
17487
|
-
},
|
|
17488
|
-
children: [/*#__PURE__*/jsxRuntime.jsx(material.Grid, {
|
|
17489
|
-
item: true,
|
|
17490
|
-
xs: 12,
|
|
17491
|
-
md: 6,
|
|
17492
|
-
sx: {
|
|
17493
|
-
paddingTop: "0px !important",
|
|
17494
|
-
minHeight: 430
|
|
17495
|
-
},
|
|
17496
|
-
children: /*#__PURE__*/jsxRuntime.jsx(TableCardSkeleton, {})
|
|
17497
|
-
}), /*#__PURE__*/jsxRuntime.jsx(material.Grid, {
|
|
17498
|
-
item: true,
|
|
17499
|
-
xs: 12,
|
|
17500
|
-
md: 6,
|
|
17501
|
-
sx: {
|
|
17502
|
-
paddingTop: "0px !important",
|
|
17503
|
-
minHeight: 430
|
|
17504
|
-
},
|
|
17505
|
-
children: /*#__PURE__*/jsxRuntime.jsx(DonutCardSkeleton, {})
|
|
17506
|
-
})]
|
|
17507
|
-
}), /*#__PURE__*/jsxRuntime.jsxs(material.Grid, {
|
|
17508
|
-
container: true,
|
|
17509
|
-
spacing: 3,
|
|
17510
|
-
sx: {
|
|
17511
|
-
mt: 2.25
|
|
17512
|
-
},
|
|
17513
|
-
children: [/*#__PURE__*/jsxRuntime.jsx(material.Grid, {
|
|
17514
|
-
item: true,
|
|
17515
|
-
xs: 12,
|
|
17516
|
-
md: 6,
|
|
17517
|
-
sx: {
|
|
17518
|
-
paddingTop: "0px !important"
|
|
17519
|
-
},
|
|
17520
|
-
children: /*#__PURE__*/jsxRuntime.jsx(TableCardSkeleton, {
|
|
17521
|
-
height: 360,
|
|
17522
|
-
rowCount: 4
|
|
17523
|
-
})
|
|
17524
|
-
}), /*#__PURE__*/jsxRuntime.jsx(material.Grid, {
|
|
17525
|
-
item: true,
|
|
17526
|
-
xs: 12,
|
|
17527
|
-
md: 6,
|
|
17528
|
-
sx: {
|
|
17529
|
-
paddingTop: "0px !important"
|
|
17530
|
-
},
|
|
17531
|
-
children: /*#__PURE__*/jsxRuntime.jsx(PanelCardSkeleton, {
|
|
17532
|
-
height: 360
|
|
17533
|
-
})
|
|
17783
|
+
}), /*#__PURE__*/jsxRuntime.jsx(material.Box, {
|
|
17784
|
+
sx: fourColGridSx,
|
|
17785
|
+
children: Array.from({
|
|
17786
|
+
length: 4
|
|
17787
|
+
}).map(function (_, index) {
|
|
17788
|
+
return /*#__PURE__*/jsxRuntime.jsx(PanelCardSkeleton, {
|
|
17789
|
+
height: 280
|
|
17790
|
+
}, index);
|
|
17791
|
+
})
|
|
17534
17792
|
})]
|
|
17535
17793
|
})]
|
|
17536
17794
|
});
|
|
@@ -17675,7 +17933,7 @@ var EmailSectionSkeleton = function EmailSectionSkeleton() {
|
|
|
17675
17933
|
});
|
|
17676
17934
|
};
|
|
17677
17935
|
|
|
17678
|
-
var formatKpi$
|
|
17936
|
+
var formatKpi$2 = function formatKpi(value) {
|
|
17679
17937
|
return Number(value !== null && value !== void 0 ? value : 0).toLocaleString("en-US", {
|
|
17680
17938
|
minimumFractionDigits: 2,
|
|
17681
17939
|
maximumFractionDigits: 2
|
|
@@ -17753,7 +18011,7 @@ var OverallSection = function OverallSection(_ref) {
|
|
|
17753
18011
|
};
|
|
17754
18012
|
var metricInfo = {
|
|
17755
18013
|
"Total Raised": {
|
|
17756
|
-
value: "$".concat(formatKpi$
|
|
18014
|
+
value: "$".concat(formatKpi$2((_apiData$overviewStat = apiData === null || apiData === void 0 || (_apiData$overviewStat2 = apiData.overviewStats) === null || _apiData$overviewStat2 === void 0 || (_apiData$overviewStat2 = _apiData$overviewStat2.overview) === null || _apiData$overviewStat2 === void 0 ? void 0 : _apiData$overviewStat2.totalRevenue) !== null && _apiData$overviewStat !== void 0 ? _apiData$overviewStat : 0)) || "$0",
|
|
17757
18015
|
subValue: "".concat(Number((_apiData$overviewStat3 = apiData === null || apiData === void 0 || (_apiData$overviewStat4 = apiData.overviewStats) === null || _apiData$overviewStat4 === void 0 || (_apiData$overviewStat4 = _apiData$overviewStat4.overview) === null || _apiData$overviewStat4 === void 0 || (_apiData$overviewStat4 = _apiData$overviewStat4.growthPercentage) === null || _apiData$overviewStat4 === void 0 ? void 0 : _apiData$overviewStat4.totalRevenue) !== null && _apiData$overviewStat3 !== void 0 ? _apiData$overviewStat3 : 0).toFixed(2), "% vs pp"),
|
|
17758
18016
|
label: "Total Raised",
|
|
17759
18017
|
icon: /*#__PURE__*/jsxRuntime.jsx(iconsMaterial.PaidOutlined, {}),
|
|
@@ -17762,7 +18020,7 @@ var OverallSection = function OverallSection(_ref) {
|
|
|
17762
18020
|
warning: false
|
|
17763
18021
|
},
|
|
17764
18022
|
"Net Raised": {
|
|
17765
|
-
value: "$".concat(formatKpi$
|
|
18023
|
+
value: "$".concat(formatKpi$2((_apiData$overviewStat5 = apiData === null || apiData === void 0 || (_apiData$overviewStat6 = apiData.overviewStats) === null || _apiData$overviewStat6 === void 0 || (_apiData$overviewStat6 = _apiData$overviewStat6.overview) === null || _apiData$overviewStat6 === void 0 ? void 0 : _apiData$overviewStat6.netRevenue) !== null && _apiData$overviewStat5 !== void 0 ? _apiData$overviewStat5 : 0)),
|
|
17766
18024
|
subValue: "".concat(Number((_apiData$overviewStat7 = apiData === null || apiData === void 0 || (_apiData$overviewStat8 = apiData.overviewStats) === null || _apiData$overviewStat8 === void 0 || (_apiData$overviewStat8 = _apiData$overviewStat8.overview.growthPercentage) === null || _apiData$overviewStat8 === void 0 ? void 0 : _apiData$overviewStat8.netRevenue) !== null && _apiData$overviewStat7 !== void 0 ? _apiData$overviewStat7 : 0).toFixed(2), "% vs pp\n "),
|
|
17767
18025
|
label: "Net Raised",
|
|
17768
18026
|
icon: /*#__PURE__*/jsxRuntime.jsx(iconsMaterial.RequestQuoteOutlined, {}),
|
|
@@ -17771,7 +18029,7 @@ var OverallSection = function OverallSection(_ref) {
|
|
|
17771
18029
|
warning: false
|
|
17772
18030
|
},
|
|
17773
18031
|
"Total Donors": {
|
|
17774
|
-
value: formatKpi$
|
|
18032
|
+
value: formatKpi$2((_apiData$overviewStat9 = apiData === null || apiData === void 0 || (_apiData$overviewStat0 = apiData.overviewStats) === null || _apiData$overviewStat0 === void 0 || (_apiData$overviewStat0 = _apiData$overviewStat0.overview) === null || _apiData$overviewStat0 === void 0 ? void 0 : _apiData$overviewStat0.totalDonations) !== null && _apiData$overviewStat9 !== void 0 ? _apiData$overviewStat9 : 0),
|
|
17775
18033
|
subValue: "".concat(Number((_apiData$overviewStat1 = apiData === null || apiData === void 0 || (_apiData$overviewStat10 = apiData.overviewStats) === null || _apiData$overviewStat10 === void 0 || (_apiData$overviewStat10 = _apiData$overviewStat10.overview.growthPercentage) === null || _apiData$overviewStat10 === void 0 ? void 0 : _apiData$overviewStat10.totalDonations) !== null && _apiData$overviewStat1 !== void 0 ? _apiData$overviewStat1 : 0).toFixed(2), "%") || "0 new",
|
|
17776
18034
|
label: "Total Donors",
|
|
17777
18035
|
icon: /*#__PURE__*/jsxRuntime.jsx(iconsMaterial.PeopleAltOutlined, {}),
|
|
@@ -17780,7 +18038,7 @@ var OverallSection = function OverallSection(_ref) {
|
|
|
17780
18038
|
warning: false
|
|
17781
18039
|
},
|
|
17782
18040
|
"Avg Donation": {
|
|
17783
|
-
value: "$".concat(formatKpi$
|
|
18041
|
+
value: "$".concat(formatKpi$2((_apiData$overviewStat11 = apiData === null || apiData === void 0 || (_apiData$overviewStat12 = apiData.overviewStats) === null || _apiData$overviewStat12 === void 0 || (_apiData$overviewStat12 = _apiData$overviewStat12.overview) === null || _apiData$overviewStat12 === void 0 ? void 0 : _apiData$overviewStat12.overallAVGDonations) !== null && _apiData$overviewStat11 !== void 0 ? _apiData$overviewStat11 : 0)),
|
|
17784
18042
|
subValue: "".concat(Number((_apiData$overviewStat13 = apiData === null || apiData === void 0 || (_apiData$overviewStat14 = apiData.overviewStats) === null || _apiData$overviewStat14 === void 0 || (_apiData$overviewStat14 = _apiData$overviewStat14.overview.growthPercentage) === null || _apiData$overviewStat14 === void 0 ? void 0 : _apiData$overviewStat14.overallAVGDonations) !== null && _apiData$overviewStat13 !== void 0 ? _apiData$overviewStat13 : 0).toFixed(2), "% vs pp\n "),
|
|
17785
18043
|
label: "Average Donation Amount",
|
|
17786
18044
|
icon: /*#__PURE__*/jsxRuntime.jsx(AverageDonationIcon, {}),
|
|
@@ -17789,7 +18047,7 @@ var OverallSection = function OverallSection(_ref) {
|
|
|
17789
18047
|
warning: false
|
|
17790
18048
|
},
|
|
17791
18049
|
"ROAS": {
|
|
17792
|
-
value: "".concat(formatKpi$
|
|
18050
|
+
value: "".concat(formatKpi$2((_apiData$overviewStat15 = apiData === null || apiData === void 0 || (_apiData$overviewStat16 = apiData.overviewStats) === null || _apiData$overviewStat16 === void 0 || (_apiData$overviewStat16 = _apiData$overviewStat16.overview) === null || _apiData$overviewStat16 === void 0 ? void 0 : _apiData$overviewStat16.roas) !== null && _apiData$overviewStat15 !== void 0 ? _apiData$overviewStat15 : 0), "x"),
|
|
17793
18051
|
subValue: "".concat(Number((_apiData$overviewStat17 = apiData === null || apiData === void 0 || (_apiData$overviewStat18 = apiData.overviewStats) === null || _apiData$overviewStat18 === void 0 || (_apiData$overviewStat18 = _apiData$overviewStat18.overview) === null || _apiData$overviewStat18 === void 0 || (_apiData$overviewStat18 = _apiData$overviewStat18.growthPercentage) === null || _apiData$overviewStat18 === void 0 ? void 0 : _apiData$overviewStat18.roas) !== null && _apiData$overviewStat17 !== void 0 ? _apiData$overviewStat17 : 0).toFixed(2), "x vs pp"),
|
|
17794
18052
|
label: "ROAS",
|
|
17795
18053
|
icon: /*#__PURE__*/jsxRuntime.jsx(iconsMaterial.TrendingUp, {}),
|
|
@@ -17798,7 +18056,7 @@ var OverallSection = function OverallSection(_ref) {
|
|
|
17798
18056
|
warning: false
|
|
17799
18057
|
},
|
|
17800
18058
|
"Conversion": {
|
|
17801
|
-
value: "".concat(formatKpi$
|
|
18059
|
+
value: "".concat(formatKpi$2((_apiData$overviewStat19 = apiData === null || apiData === void 0 || (_apiData$overviewStat20 = apiData.overviewStats) === null || _apiData$overviewStat20 === void 0 || (_apiData$overviewStat20 = _apiData$overviewStat20.overview) === null || _apiData$overviewStat20 === void 0 ? void 0 : _apiData$overviewStat20.conversionRate) !== null && _apiData$overviewStat19 !== void 0 ? _apiData$overviewStat19 : 0), "%"),
|
|
17802
18060
|
subValue: "".concat(((_apiData$overviewStat21 = apiData === null || apiData === void 0 || (_apiData$overviewStat22 = apiData.overviewStats) === null || _apiData$overviewStat22 === void 0 || (_apiData$overviewStat22 = _apiData$overviewStat22.overview) === null || _apiData$overviewStat22 === void 0 || (_apiData$overviewStat22 = _apiData$overviewStat22.growthPercentage) === null || _apiData$overviewStat22 === void 0 ? void 0 : _apiData$overviewStat22.conversionRate) !== null && _apiData$overviewStat21 !== void 0 ? _apiData$overviewStat21 : 0).toFixed(2), "%") || "0%",
|
|
17803
18061
|
label: "Conversion Rate",
|
|
17804
18062
|
icon: /*#__PURE__*/jsxRuntime.jsx(ConversionRateIcon, {}),
|
|
@@ -18184,448 +18442,93 @@ var OverallSection$1 = /*#__PURE__*/Object.freeze({
|
|
|
18184
18442
|
default: OverallSection
|
|
18185
18443
|
});
|
|
18186
18444
|
|
|
18187
|
-
var
|
|
18188
|
-
return Number(value !== null && value !== void 0 ? value : 0).toLocaleString("en-US", {
|
|
18189
|
-
minimumFractionDigits: 2,
|
|
18190
|
-
maximumFractionDigits: 2
|
|
18191
|
-
});
|
|
18192
|
-
};
|
|
18193
|
-
var CHANNEL_STYLES = {
|
|
18194
|
-
"Meta Ads": {
|
|
18195
|
-
id: "M",
|
|
18196
|
-
avatarBg: "#4267B2",
|
|
18197
|
-
color: "#4267B2"
|
|
18198
|
-
},
|
|
18199
|
-
"Google Ads": {
|
|
18200
|
-
id: "G",
|
|
18201
|
-
avatarBg: "#4285F4",
|
|
18202
|
-
color: "#4285F4"
|
|
18203
|
-
},
|
|
18204
|
-
"TikTok Ads": {
|
|
18205
|
-
id: "T",
|
|
18206
|
-
avatarBg: "#000000",
|
|
18207
|
-
color: "#cd249dff"
|
|
18208
|
-
},
|
|
18209
|
-
YouTube: {
|
|
18210
|
-
id: "Y",
|
|
18211
|
-
avatarBg: "#FF0000",
|
|
18212
|
-
color: "#FF0000"
|
|
18213
|
-
},
|
|
18214
|
-
Snapchat: {
|
|
18215
|
-
id: "S",
|
|
18216
|
-
avatarBg: "#FFFC00",
|
|
18217
|
-
color: "#FFFC00"
|
|
18218
|
-
}
|
|
18219
|
-
};
|
|
18220
|
-
var formatGrowth$2 = function formatGrowth(value) {
|
|
18221
|
-
return "".concat(Number(value !== null && value !== void 0 ? value : 0).toFixed(2), "% vs pp");
|
|
18222
|
-
};
|
|
18223
|
-
var mapTimeSeries$2 = function mapTimeSeries(series) {
|
|
18224
|
-
if (!Array.isArray(series) || series.length === 0) {
|
|
18225
|
-
return {
|
|
18226
|
-
categories: [],
|
|
18227
|
-
data: []
|
|
18228
|
-
};
|
|
18229
|
-
}
|
|
18230
|
-
return {
|
|
18231
|
-
categories: series.map(function (item) {
|
|
18232
|
-
return item.date;
|
|
18233
|
-
}),
|
|
18234
|
-
data: series.map(function (item) {
|
|
18235
|
-
var _item$value;
|
|
18236
|
-
return (_item$value = item.value) !== null && _item$value !== void 0 ? _item$value : 0;
|
|
18237
|
-
})
|
|
18238
|
-
};
|
|
18239
|
-
};
|
|
18240
|
-
var getChannelStyle = function getChannelStyle() {
|
|
18241
|
-
var channel = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "";
|
|
18242
|
-
return CHANNEL_STYLES[channel] || {
|
|
18243
|
-
id: channel.slice(0, 1).toUpperCase() || "?",
|
|
18244
|
-
avatarBg: "#F3F4F6",
|
|
18245
|
-
color: "#6366F1"
|
|
18246
|
-
};
|
|
18247
|
-
};
|
|
18248
|
-
var mapChannelTrend = function mapChannelTrend(trend) {
|
|
18249
|
-
var normalized = (trend || "stable").toLowerCase();
|
|
18250
|
-
if (normalized === "down" || normalized === "declining") {
|
|
18251
|
-
return {
|
|
18252
|
-
type: "trend",
|
|
18253
|
-
trendType: "down",
|
|
18254
|
-
trendLabel: "Declining"
|
|
18255
|
-
};
|
|
18256
|
-
}
|
|
18257
|
-
if (normalized === "up" || normalized === "improving") {
|
|
18258
|
-
return {
|
|
18259
|
-
type: "trend",
|
|
18260
|
-
trendType: "up",
|
|
18261
|
-
trendLabel: "Improving"
|
|
18262
|
-
};
|
|
18263
|
-
}
|
|
18264
|
-
return {
|
|
18265
|
-
type: "status",
|
|
18266
|
-
status: "Stable",
|
|
18267
|
-
statusBg: "#F3F4F6",
|
|
18268
|
-
statusColor: "#6B7280"
|
|
18269
|
-
};
|
|
18270
|
-
};
|
|
18271
|
-
var getRoasColor = function getRoasColor(roas) {
|
|
18272
|
-
return Number(roas !== null && roas !== void 0 ? roas : 0) >= 2.5 ? "#22C55E" : "#EF4444";
|
|
18273
|
-
};
|
|
18274
|
-
var getCampaignInitials$1 = function getCampaignInitials() {
|
|
18275
|
-
var name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "";
|
|
18276
|
-
var words = name.trim().split(/\s+/).filter(Boolean);
|
|
18277
|
-
if (words.length >= 2) {
|
|
18278
|
-
return (words[0][0] + words[1][0]).toUpperCase();
|
|
18279
|
-
}
|
|
18280
|
-
return name.slice(0, 2).toUpperCase() || "—";
|
|
18281
|
-
};
|
|
18282
|
-
var buildEmptySpendAllocation = function buildEmptySpendAllocation() {
|
|
18283
|
-
var channels = Object.keys(CHANNEL_STYLES);
|
|
18284
|
-
return {
|
|
18285
|
-
series: channels.map(function () {
|
|
18286
|
-
return 0;
|
|
18287
|
-
}),
|
|
18288
|
-
labels: channels,
|
|
18289
|
-
colors: channels.map(function (channel) {
|
|
18290
|
-
return CHANNEL_STYLES[channel].color;
|
|
18291
|
-
}),
|
|
18292
|
-
centerLabel: "total spend",
|
|
18293
|
-
centerValue: "$".concat(formatNumber(0)),
|
|
18294
|
-
subtitle: "Where $".concat(formatNumber(0), " went"),
|
|
18295
|
-
items: channels.map(function (channel) {
|
|
18296
|
-
return {
|
|
18297
|
-
label: channel,
|
|
18298
|
-
val: "0.0%",
|
|
18299
|
-
color: CHANNEL_STYLES[channel].color
|
|
18300
|
-
};
|
|
18301
|
-
})
|
|
18302
|
-
};
|
|
18303
|
-
};
|
|
18304
|
-
var PaidSection = function PaidSection(_ref) {
|
|
18305
|
-
var _ref2, _rawOverview$totalSpe, _ref3, _rawOverview$totalRev, _ref4, _rawOverview$roas, _ref5, _rawOverview$costPerD, _rawOverview$conversi, _ref6, _rawOverview$averageD, _ref7, _rawOverview$totalDon, _ref8, _rawOverview$growthPe, _rawOverview$growthPe2, _ref9, _rawOverview$growthPe3, _rawOverview$growthPe4, _ref0, _rawOverview$growthPe5, _rawOverview$growthPe6, _rawOverview$growthPe7, _rawOverview$growthPe8, _rawOverview$growthPe9, _rawOverview$growthPe0, _rawOverview$growthPe1, _rawOverview$growthPe10, _apiData$spendVsReven, _apiData$spendVsReven2, _selectedInfo$categor, _spendAllocation$subt, _spendAllocation$seri, _spendAllocation$labe, _spendAllocation$colo, _spendAllocation$cent, _spendAllocation$cent2, _spendAllocation$item;
|
|
18306
|
-
var _ref$apiData = _ref.apiData,
|
|
18307
|
-
apiData = _ref$apiData === void 0 ? {} : _ref$apiData;
|
|
18308
|
-
_ref.dateName;
|
|
18309
|
-
var _ref$apiLoading = _ref.apiLoading,
|
|
18310
|
-
apiLoading = _ref$apiLoading === void 0 ? false : _ref$apiLoading,
|
|
18311
|
-
_ref$numberOfDays = _ref.numberOfDays,
|
|
18312
|
-
numberOfDays = _ref$numberOfDays === void 0 ? 30 : _ref$numberOfDays;
|
|
18445
|
+
var PaidSection = function PaidSection() {
|
|
18313
18446
|
var _useState = React.useState("Total Spent"),
|
|
18314
18447
|
_useState2 = _slicedToArray(_useState, 2),
|
|
18315
18448
|
activeMetric = _useState2[0],
|
|
18316
18449
|
setActiveMetric = _useState2[1];
|
|
18317
|
-
var
|
|
18318
|
-
var
|
|
18319
|
-
|
|
18320
|
-
|
|
18321
|
-
|
|
18322
|
-
|
|
18323
|
-
|
|
18324
|
-
|
|
18325
|
-
|
|
18326
|
-
|
|
18327
|
-
|
|
18328
|
-
|
|
18329
|
-
|
|
18330
|
-
|
|
18331
|
-
|
|
18332
|
-
|
|
18333
|
-
|
|
18334
|
-
|
|
18335
|
-
|
|
18336
|
-
|
|
18337
|
-
|
|
18338
|
-
|
|
18339
|
-
|
|
18340
|
-
|
|
18341
|
-
|
|
18450
|
+
var categories = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"];
|
|
18451
|
+
var metricInfo = {
|
|
18452
|
+
"Total Spent": {
|
|
18453
|
+
value: "$80,313",
|
|
18454
|
+
subValue: "12% vs last month",
|
|
18455
|
+
chartLabel: "Daily Spend",
|
|
18456
|
+
data: [800, 950, 700, 1100, 900, 1200, 1300],
|
|
18457
|
+
icon: iconsMaterial.IndeterminateCheckBoxOutlined
|
|
18458
|
+
},
|
|
18459
|
+
"Revinue Raised": {
|
|
18460
|
+
value: "$240,398",
|
|
18461
|
+
subValue: "12% vs last month",
|
|
18462
|
+
chartLabel: "Daily Revenue",
|
|
18463
|
+
data: [3200, 4100, 2800, 5600, 4200, 6100, 7500],
|
|
18464
|
+
icon: iconsMaterial.PaidOutlined
|
|
18465
|
+
},
|
|
18466
|
+
ROAS: {
|
|
18467
|
+
value: "3.0",
|
|
18468
|
+
subValue: "12% vs last month",
|
|
18469
|
+
chartLabel: "ROAS Trend",
|
|
18470
|
+
data: [2.5, 3.1, 2.8, 4.2, 3.8, 4.5, 5.2],
|
|
18471
|
+
icon: iconsMaterial.TrendingUp
|
|
18472
|
+
},
|
|
18473
|
+
"Cost per donor": {
|
|
18474
|
+
value: "$373",
|
|
18475
|
+
subValue: "12% vs last month",
|
|
18476
|
+
chartLabel: "CPA Trend",
|
|
18477
|
+
data: [350, 380, 360, 410, 390, 370, 373],
|
|
18478
|
+
icon: iconsMaterial.PersonOutlined
|
|
18479
|
+
},
|
|
18480
|
+
"Conversion rate": {
|
|
18481
|
+
value: "3.1%",
|
|
18482
|
+
subValue: "12% vs last month",
|
|
18483
|
+
chartLabel: "Conversion Rate",
|
|
18484
|
+
data: [2.8, 3.0, 2.9, 3.4, 3.2, 3.1, 3.1],
|
|
18485
|
+
icon: iconsMaterial.Adjust
|
|
18486
|
+
},
|
|
18487
|
+
"Avg donation": {
|
|
18488
|
+
value: "$130.58",
|
|
18489
|
+
subValue: "12% vs last month",
|
|
18490
|
+
chartLabel: "Average Donation",
|
|
18491
|
+
data: [120, 135, 125, 140, 130, 128, 130.58],
|
|
18492
|
+
icon: iconsMaterial.PaidOutlined
|
|
18342
18493
|
}
|
|
18343
|
-
var length = Math.min(spendSeries.data.length, revenueSeries.data.length);
|
|
18344
|
-
return Array.from({
|
|
18345
|
-
length: length
|
|
18346
|
-
}, function (_, index) {
|
|
18347
|
-
var _spendSeries$data$ind, _revenueSeries$data$i;
|
|
18348
|
-
var spend = (_spendSeries$data$ind = spendSeries.data[index]) !== null && _spendSeries$data$ind !== void 0 ? _spendSeries$data$ind : 0;
|
|
18349
|
-
var revenue = (_revenueSeries$data$i = revenueSeries.data[index]) !== null && _revenueSeries$data$i !== void 0 ? _revenueSeries$data$i : 0;
|
|
18350
|
-
return spend > 0 ? revenue / spend : 0;
|
|
18351
|
-
});
|
|
18352
|
-
}, [spendSeries.data, revenueSeries.data]);
|
|
18353
|
-
var fallbackCategories = spendSeries.categories.length ? spendSeries.categories : revenueSeries.categories.length ? revenueSeries.categories : ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"];
|
|
18354
|
-
var flatSeries = function flatSeries(value) {
|
|
18355
|
-
return fallbackCategories.length > 0 ? fallbackCategories.map(function () {
|
|
18356
|
-
return Number(value !== null && value !== void 0 ? value : 0);
|
|
18357
|
-
}) : [Number(value !== null && value !== void 0 ? value : 0)];
|
|
18358
18494
|
};
|
|
18359
|
-
var metricInfo = React.useMemo(function () {
|
|
18360
|
-
if (!hasPaidOverview) {
|
|
18361
|
-
return {
|
|
18362
|
-
"Total Spent": {
|
|
18363
|
-
value: "$".concat(formatKpi$2(0)),
|
|
18364
|
-
subValue: formatGrowth$2(0),
|
|
18365
|
-
data: flatSeries(0),
|
|
18366
|
-
categories: fallbackCategories,
|
|
18367
|
-
icon: /*#__PURE__*/jsxRuntime.jsx(iconsMaterial.IndeterminateCheckBoxOutlined, {}),
|
|
18368
|
-
money: true,
|
|
18369
|
-
error: false,
|
|
18370
|
-
warning: false
|
|
18371
|
-
},
|
|
18372
|
-
"Revenue Raised": {
|
|
18373
|
-
value: "$".concat(formatKpi$2(0)),
|
|
18374
|
-
subValue: formatGrowth$2(0),
|
|
18375
|
-
data: flatSeries(0),
|
|
18376
|
-
categories: fallbackCategories,
|
|
18377
|
-
icon: /*#__PURE__*/jsxRuntime.jsx(iconsMaterial.PaidOutlined, {}),
|
|
18378
|
-
money: true,
|
|
18379
|
-
error: false,
|
|
18380
|
-
warning: false
|
|
18381
|
-
},
|
|
18382
|
-
ROAS: {
|
|
18383
|
-
value: "".concat(formatKpi$2(0), "x"),
|
|
18384
|
-
subValue: formatGrowth$2(0),
|
|
18385
|
-
data: flatSeries(0),
|
|
18386
|
-
categories: fallbackCategories,
|
|
18387
|
-
icon: /*#__PURE__*/jsxRuntime.jsx(iconsMaterial.TrendingUp, {}),
|
|
18388
|
-
money: false,
|
|
18389
|
-
error: false,
|
|
18390
|
-
warning: false
|
|
18391
|
-
},
|
|
18392
|
-
"Cost Per Donor": {
|
|
18393
|
-
value: "$".concat(formatKpi$2(0)),
|
|
18394
|
-
subValue: formatGrowth$2(0),
|
|
18395
|
-
data: flatSeries(0),
|
|
18396
|
-
categories: fallbackCategories,
|
|
18397
|
-
icon: /*#__PURE__*/jsxRuntime.jsx(iconsMaterial.PersonOutlined, {}),
|
|
18398
|
-
money: true,
|
|
18399
|
-
error: false,
|
|
18400
|
-
warning: false
|
|
18401
|
-
},
|
|
18402
|
-
"Conversion Rate": {
|
|
18403
|
-
value: "".concat(formatKpi$2(0), "%"),
|
|
18404
|
-
subValue: formatGrowth$2(0),
|
|
18405
|
-
data: flatSeries(0),
|
|
18406
|
-
categories: fallbackCategories,
|
|
18407
|
-
icon: /*#__PURE__*/jsxRuntime.jsx(ConversionRateIcon, {}),
|
|
18408
|
-
money: false,
|
|
18409
|
-
error: false,
|
|
18410
|
-
warning: false
|
|
18411
|
-
},
|
|
18412
|
-
"Avg Donation": {
|
|
18413
|
-
value: "$".concat(formatKpi$2(0)),
|
|
18414
|
-
subValue: formatGrowth$2(0),
|
|
18415
|
-
data: flatSeries(0),
|
|
18416
|
-
categories: fallbackCategories,
|
|
18417
|
-
icon: /*#__PURE__*/jsxRuntime.jsx(AverageDonationIcon, {}),
|
|
18418
|
-
money: true,
|
|
18419
|
-
error: false,
|
|
18420
|
-
warning: false
|
|
18421
|
-
}
|
|
18422
|
-
};
|
|
18423
|
-
}
|
|
18424
|
-
var chartCategories = spendSeries.categories.length > 0 ? spendSeries.categories : revenueSeries.categories.length > 0 ? revenueSeries.categories : fallbackCategories;
|
|
18425
|
-
return {
|
|
18426
|
-
"Total Spent": {
|
|
18427
|
-
value: "$".concat(formatKpi$2(overview.totalSpent)),
|
|
18428
|
-
subValue: formatGrowth$2(growth.totalSpent),
|
|
18429
|
-
data: spendSeries.data.length > 0 ? spendSeries.data : flatSeries(0),
|
|
18430
|
-
categories: chartCategories,
|
|
18431
|
-
icon: /*#__PURE__*/jsxRuntime.jsx(iconsMaterial.IndeterminateCheckBoxOutlined, {}),
|
|
18432
|
-
money: true,
|
|
18433
|
-
error: false,
|
|
18434
|
-
warning: false
|
|
18435
|
-
},
|
|
18436
|
-
"Revenue Raised": {
|
|
18437
|
-
value: "$".concat(formatKpi$2(overview.totalRevenue)),
|
|
18438
|
-
subValue: formatGrowth$2(growth.totalRevenue),
|
|
18439
|
-
data: revenueSeries.data.length > 0 ? revenueSeries.data : flatSeries(0),
|
|
18440
|
-
categories: chartCategories,
|
|
18441
|
-
icon: /*#__PURE__*/jsxRuntime.jsx(iconsMaterial.PaidOutlined, {}),
|
|
18442
|
-
money: true,
|
|
18443
|
-
error: false,
|
|
18444
|
-
warning: false
|
|
18445
|
-
},
|
|
18446
|
-
ROAS: {
|
|
18447
|
-
value: "".concat(formatKpi$2(overview.roas), "x"),
|
|
18448
|
-
subValue: formatGrowth$2(growth.roas),
|
|
18449
|
-
data: roasChartData.length > 0 ? roasChartData : flatSeries(0),
|
|
18450
|
-
categories: chartCategories,
|
|
18451
|
-
icon: /*#__PURE__*/jsxRuntime.jsx(iconsMaterial.TrendingUp, {}),
|
|
18452
|
-
money: false,
|
|
18453
|
-
error: false,
|
|
18454
|
-
warning: false
|
|
18455
|
-
},
|
|
18456
|
-
"Cost Per Donor": {
|
|
18457
|
-
value: "$".concat(formatKpi$2(overview.costPerDonor)),
|
|
18458
|
-
subValue: formatGrowth$2(growth.costPerDonor),
|
|
18459
|
-
data: flatSeries(overview.costPerDonor),
|
|
18460
|
-
categories: chartCategories,
|
|
18461
|
-
icon: /*#__PURE__*/jsxRuntime.jsx(iconsMaterial.PersonOutlined, {}),
|
|
18462
|
-
money: true,
|
|
18463
|
-
error: false,
|
|
18464
|
-
warning: false
|
|
18465
|
-
},
|
|
18466
|
-
"Conversion Rate": {
|
|
18467
|
-
value: "".concat(formatKpi$2(overview.conversionRate), "%"),
|
|
18468
|
-
subValue: formatGrowth$2(growth.conversionRate),
|
|
18469
|
-
data: flatSeries(overview.conversionRate),
|
|
18470
|
-
categories: chartCategories,
|
|
18471
|
-
icon: /*#__PURE__*/jsxRuntime.jsx(ConversionRateIcon, {}),
|
|
18472
|
-
money: false,
|
|
18473
|
-
error: false,
|
|
18474
|
-
warning: false
|
|
18475
|
-
},
|
|
18476
|
-
"Avg Donation": {
|
|
18477
|
-
value: "$".concat(formatKpi$2(overview.averageDonation)),
|
|
18478
|
-
subValue: formatGrowth$2(growth.averageDonation),
|
|
18479
|
-
data: flatSeries(overview.averageDonation),
|
|
18480
|
-
categories: chartCategories,
|
|
18481
|
-
icon: /*#__PURE__*/jsxRuntime.jsx(AverageDonationIcon, {}),
|
|
18482
|
-
money: true,
|
|
18483
|
-
error: false,
|
|
18484
|
-
warning: false
|
|
18485
|
-
}
|
|
18486
|
-
};
|
|
18487
|
-
}, [fallbackCategories, growth, hasPaidOverview, overview, revenueSeries, roasChartData, spendSeries]);
|
|
18488
|
-
var channelRows = React.useMemo(function () {
|
|
18489
|
-
var channels = apiData === null || apiData === void 0 ? void 0 : apiData.channelPerformance;
|
|
18490
|
-
if (!hasPaidOverview) return [];
|
|
18491
|
-
if (!Array.isArray(channels) || channels.length === 0) return [];
|
|
18492
|
-
return channels.map(function (item) {
|
|
18493
|
-
var _item$roas, _item$spend, _item$revenue, _item$cpa;
|
|
18494
|
-
var style = getChannelStyle(item.channel);
|
|
18495
|
-
var roas = Number((_item$roas = item.roas) !== null && _item$roas !== void 0 ? _item$roas : 0);
|
|
18496
|
-
return _objectSpread2({
|
|
18497
|
-
id: style.id,
|
|
18498
|
-
avatarBg: style.avatarBg,
|
|
18499
|
-
name: item.channel,
|
|
18500
|
-
val1: "$".concat(formatNumber((_item$spend = item.spend) !== null && _item$spend !== void 0 ? _item$spend : 0)),
|
|
18501
|
-
val2: "$".concat(formatNumber((_item$revenue = item.revenue) !== null && _item$revenue !== void 0 ? _item$revenue : 0)),
|
|
18502
|
-
val3: "".concat(roas.toFixed(1), "x"),
|
|
18503
|
-
val4: "$".concat(formatNumber((_item$cpa = item.cpa) !== null && _item$cpa !== void 0 ? _item$cpa : 0)),
|
|
18504
|
-
highlightVal3: true,
|
|
18505
|
-
val3Color: getRoasColor(roas)
|
|
18506
|
-
}, mapChannelTrend(item.trend));
|
|
18507
|
-
});
|
|
18508
|
-
}, [apiData === null || apiData === void 0 ? void 0 : apiData.channelPerformance, hasPaidOverview]);
|
|
18509
|
-
var spendAllocation = React.useMemo(function () {
|
|
18510
|
-
var _allocation$totalSpen, _allocation$totalSpen2;
|
|
18511
|
-
var allocation = apiData === null || apiData === void 0 ? void 0 : apiData.spendAllocation;
|
|
18512
|
-
if (!hasPaidOverview) return [];
|
|
18513
|
-
if (!allocation || !Array.isArray(allocation.data) || allocation.data.length === 0) {
|
|
18514
|
-
return buildEmptySpendAllocation();
|
|
18515
|
-
}
|
|
18516
|
-
var items = allocation.data.map(function (item) {
|
|
18517
|
-
var _item$percentage, _item$spend2, _item$percentage2;
|
|
18518
|
-
var style = getChannelStyle(item.channel);
|
|
18519
|
-
return {
|
|
18520
|
-
label: item.channel,
|
|
18521
|
-
val: "".concat(Number((_item$percentage = item.percentage) !== null && _item$percentage !== void 0 ? _item$percentage : 0).toFixed(1), "%"),
|
|
18522
|
-
color: style.color,
|
|
18523
|
-
spend: (_item$spend2 = item.spend) !== null && _item$spend2 !== void 0 ? _item$spend2 : 0,
|
|
18524
|
-
percentage: (_item$percentage2 = item.percentage) !== null && _item$percentage2 !== void 0 ? _item$percentage2 : 0
|
|
18525
|
-
};
|
|
18526
|
-
});
|
|
18527
|
-
return {
|
|
18528
|
-
series: items.map(function (item) {
|
|
18529
|
-
return item.percentage;
|
|
18530
|
-
}),
|
|
18531
|
-
labels: items.map(function (item) {
|
|
18532
|
-
return item.label;
|
|
18533
|
-
}),
|
|
18534
|
-
colors: items.map(function (item) {
|
|
18535
|
-
return item.color;
|
|
18536
|
-
}),
|
|
18537
|
-
centerLabel: "total spend",
|
|
18538
|
-
centerValue: "$".concat(formatNumber((_allocation$totalSpen = allocation.totalSpend) !== null && _allocation$totalSpen !== void 0 ? _allocation$totalSpen : 0)),
|
|
18539
|
-
subtitle: "Where $".concat(formatNumber((_allocation$totalSpen2 = allocation.totalSpend) !== null && _allocation$totalSpen2 !== void 0 ? _allocation$totalSpen2 : 0), " went"),
|
|
18540
|
-
items: items.map(function (_ref1) {
|
|
18541
|
-
var label = _ref1.label,
|
|
18542
|
-
val = _ref1.val,
|
|
18543
|
-
color = _ref1.color;
|
|
18544
|
-
return {
|
|
18545
|
-
label: label,
|
|
18546
|
-
val: val,
|
|
18547
|
-
color: color
|
|
18548
|
-
};
|
|
18549
|
-
})
|
|
18550
|
-
};
|
|
18551
|
-
}, [apiData === null || apiData === void 0 ? void 0 : apiData.spendAllocation, hasPaidOverview]);
|
|
18552
|
-
var topCampaignsData = React.useMemo(function () {
|
|
18553
|
-
var campaigns = apiData === null || apiData === void 0 ? void 0 : apiData.topCampaigns;
|
|
18554
|
-
if (!hasPaidOverview) return [];
|
|
18555
|
-
if (!Array.isArray(campaigns)) return [];
|
|
18556
|
-
if (campaigns.length === 0) return [];
|
|
18557
|
-
return campaigns.map(function (item) {
|
|
18558
|
-
var _item$spend3, _item$revenue2, _item$roas2;
|
|
18559
|
-
var name = item.campaignName || item.campaign || item.name || "Unknown";
|
|
18560
|
-
return {
|
|
18561
|
-
id: getCampaignInitials$1(name),
|
|
18562
|
-
name: name,
|
|
18563
|
-
spend: "$".concat(formatNumber((_item$spend3 = item.spend) !== null && _item$spend3 !== void 0 ? _item$spend3 : 0)),
|
|
18564
|
-
revenue: "$".concat(formatNumber((_item$revenue2 = item.revenue) !== null && _item$revenue2 !== void 0 ? _item$revenue2 : 0)),
|
|
18565
|
-
roas: "".concat(Number((_item$roas2 = item.roas) !== null && _item$roas2 !== void 0 ? _item$roas2 : 0).toFixed(1), "x")
|
|
18566
|
-
};
|
|
18567
|
-
});
|
|
18568
|
-
}, [apiData === null || apiData === void 0 ? void 0 : apiData.topCampaigns, hasPaidOverview]);
|
|
18569
|
-
var donorGeographyData = React.useMemo(function () {
|
|
18570
|
-
var geography = apiData === null || apiData === void 0 ? void 0 : apiData.donorGeography;
|
|
18571
|
-
if (!hasPaidOverview) return [];
|
|
18572
|
-
var rawCountries = Array.isArray(geography) ? geography : (geography === null || geography === void 0 ? void 0 : geography.countries) || (geography === null || geography === void 0 ? void 0 : geography.data) || [];
|
|
18573
|
-
return Array.isArray(rawCountries) ? rawCountries : [];
|
|
18574
|
-
}, [apiData === null || apiData === void 0 ? void 0 : apiData.donorGeography, hasPaidOverview]);
|
|
18575
18495
|
var renderCard = function renderCard(title) {
|
|
18576
|
-
return /*#__PURE__*/jsxRuntime.jsx(
|
|
18496
|
+
return /*#__PURE__*/jsxRuntime.jsx(DisplayCard, {
|
|
18577
18497
|
title: title,
|
|
18578
18498
|
value: metricInfo[title].value,
|
|
18579
|
-
|
|
18499
|
+
subValue: metricInfo[title].subValue,
|
|
18580
18500
|
icon: metricInfo[title].icon,
|
|
18581
|
-
error: metricInfo[title].error,
|
|
18582
|
-
active: activeMetric === title,
|
|
18583
18501
|
onClick: function onClick() {
|
|
18584
18502
|
return setActiveMetric(title);
|
|
18585
18503
|
},
|
|
18586
|
-
|
|
18587
|
-
|
|
18588
|
-
|
|
18589
|
-
cursor: "pointer"
|
|
18590
|
-
} : {
|
|
18591
|
-
cursor: "pointer"
|
|
18504
|
+
isActive: activeMetric === title,
|
|
18505
|
+
sx: {
|
|
18506
|
+
flex: 1
|
|
18592
18507
|
}
|
|
18593
|
-
});
|
|
18508
|
+
}, title);
|
|
18594
18509
|
};
|
|
18595
|
-
var selectedInfo = metricInfo[activeMetric]
|
|
18596
|
-
var emptySpendAllocation = buildEmptySpendAllocation();
|
|
18597
|
-
var chartCategories = ((_selectedInfo$categor = selectedInfo.categories) === null || _selectedInfo$categor === void 0 ? void 0 : _selectedInfo$categor.length) > 0 ? selectedInfo.categories : fallbackCategories;
|
|
18510
|
+
var selectedInfo = metricInfo[activeMetric];
|
|
18598
18511
|
var mainChart = {
|
|
18599
18512
|
label: activeMetric,
|
|
18600
18513
|
value: selectedInfo.value,
|
|
18601
18514
|
trend: selectedInfo.subValue,
|
|
18602
18515
|
data: selectedInfo.data,
|
|
18603
|
-
categories:
|
|
18604
|
-
hideControls: true,
|
|
18605
|
-
isAmount: selectedInfo.money
|
|
18516
|
+
categories: categories
|
|
18606
18517
|
};
|
|
18607
|
-
if (apiLoading) {
|
|
18608
|
-
return /*#__PURE__*/jsxRuntime.jsx(PaidSectionSkeleton, {});
|
|
18609
|
-
}
|
|
18610
18518
|
return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
18611
18519
|
children: [/*#__PURE__*/jsxRuntime.jsx(material.Box, {
|
|
18612
18520
|
sx: {
|
|
18613
|
-
display: "
|
|
18614
|
-
|
|
18615
|
-
|
|
18616
|
-
|
|
18617
|
-
md: "1fr 1fr 1fr",
|
|
18618
|
-
lg: "repeat(6, 1fr)"
|
|
18619
|
-
},
|
|
18620
|
-
gap: "6px",
|
|
18621
|
-
mb: 0
|
|
18521
|
+
display: "flex",
|
|
18522
|
+
gap: 2,
|
|
18523
|
+
mb: 1,
|
|
18524
|
+
flexWrap: "wrap"
|
|
18622
18525
|
},
|
|
18623
18526
|
children: Object.keys(metricInfo).map(renderCard)
|
|
18624
18527
|
}), /*#__PURE__*/jsxRuntime.jsx(material.Grid, {
|
|
18625
18528
|
container: true,
|
|
18626
18529
|
spacing: 3,
|
|
18627
18530
|
sx: {
|
|
18628
|
-
mt:
|
|
18531
|
+
mt: 1
|
|
18629
18532
|
},
|
|
18630
18533
|
children: /*#__PURE__*/jsxRuntime.jsx(RenderChartCard, {
|
|
18631
18534
|
item: mainChart,
|
|
@@ -18633,61 +18536,125 @@ var PaidSection = function PaidSection(_ref) {
|
|
|
18633
18536
|
md: 12,
|
|
18634
18537
|
type: "area",
|
|
18635
18538
|
isPrimary: true,
|
|
18636
|
-
isPremium: true
|
|
18637
|
-
numberOfDays: numberOfDays,
|
|
18638
|
-
metric: activeMetric === "Conversion Rate" ? "Percent" : activeMetric === "ROAS" ? "ROAS" : selectedInfo.money ? "Revenue" : "Donors"
|
|
18539
|
+
isPremium: true
|
|
18639
18540
|
})
|
|
18640
18541
|
}), /*#__PURE__*/jsxRuntime.jsxs(material.Grid, {
|
|
18641
18542
|
container: true,
|
|
18642
18543
|
spacing: 3,
|
|
18643
18544
|
sx: {
|
|
18644
|
-
mt:
|
|
18545
|
+
mt: 3
|
|
18645
18546
|
},
|
|
18646
18547
|
children: [/*#__PURE__*/jsxRuntime.jsx(material.Grid, {
|
|
18647
18548
|
item: true,
|
|
18648
18549
|
xs: 12,
|
|
18649
18550
|
md: 6,
|
|
18650
|
-
sx: {
|
|
18651
|
-
paddingTop: "0px !important",
|
|
18652
|
-
minHeight: "430px"
|
|
18653
|
-
},
|
|
18654
18551
|
children: /*#__PURE__*/jsxRuntime.jsx(ActiveCampaignsCard, {
|
|
18655
|
-
title: "Channel
|
|
18552
|
+
title: "Channel performance",
|
|
18656
18553
|
subtitle: "Ad platforms ranked by ROAS",
|
|
18657
|
-
columns: ["
|
|
18554
|
+
columns: ["channel", "spend", "revenue", "ROAS", "CPA", "trend"],
|
|
18658
18555
|
gridTemplateColumns: "2.2fr 1fr 1fr 0.8fr 0.8fr 1.2fr",
|
|
18659
|
-
|
|
18660
|
-
|
|
18556
|
+
rows: [{
|
|
18557
|
+
id: "M",
|
|
18558
|
+
avatarBg: "#4267B2",
|
|
18559
|
+
avatarColor: "#fff",
|
|
18560
|
+
name: "Meta Ads",
|
|
18561
|
+
val1: "$32,800",
|
|
18562
|
+
val2: "$112,400",
|
|
18563
|
+
val3: "3.4x",
|
|
18564
|
+
val4: "$340",
|
|
18565
|
+
type: "trend",
|
|
18566
|
+
trendType: "up",
|
|
18567
|
+
trendLabel: "Improving",
|
|
18568
|
+
highlightVal3: true,
|
|
18569
|
+
val3Color: "#22C55E",
|
|
18570
|
+
comingSoon: false
|
|
18571
|
+
}, {
|
|
18572
|
+
id: "G",
|
|
18573
|
+
avatarBg: "#C4C4C4",
|
|
18574
|
+
avatarColor: "#fff",
|
|
18575
|
+
name: "Google Ads",
|
|
18576
|
+
val1: "—",
|
|
18577
|
+
val2: "—",
|
|
18578
|
+
val3: "—",
|
|
18579
|
+
val4: "—",
|
|
18580
|
+
type: "comingSoon",
|
|
18581
|
+
comingSoon: true
|
|
18582
|
+
}, {
|
|
18583
|
+
id: "T",
|
|
18584
|
+
avatarBg: "#C4C4C4",
|
|
18585
|
+
avatarColor: "#fff",
|
|
18586
|
+
name: "TikTok Ads",
|
|
18587
|
+
val1: "—",
|
|
18588
|
+
val2: "—",
|
|
18589
|
+
val3: "—",
|
|
18590
|
+
val4: "—",
|
|
18591
|
+
type: "comingSoon",
|
|
18592
|
+
comingSoon: true
|
|
18593
|
+
}, {
|
|
18594
|
+
id: "Y",
|
|
18595
|
+
avatarBg: "#C4C4C4",
|
|
18596
|
+
avatarColor: "#fff",
|
|
18597
|
+
name: "YouTube",
|
|
18598
|
+
val1: "—",
|
|
18599
|
+
val2: "—",
|
|
18600
|
+
val3: "—",
|
|
18601
|
+
val4: "—",
|
|
18602
|
+
type: "comingSoon",
|
|
18603
|
+
comingSoon: true
|
|
18604
|
+
}, {
|
|
18605
|
+
id: "S",
|
|
18606
|
+
avatarBg: "#C4C4C4",
|
|
18607
|
+
avatarColor: "#fff",
|
|
18608
|
+
name: "Snapchat",
|
|
18609
|
+
val1: "—",
|
|
18610
|
+
val2: "—",
|
|
18611
|
+
val3: "—",
|
|
18612
|
+
val4: "—",
|
|
18613
|
+
type: "comingSoon",
|
|
18614
|
+
comingSoon: true
|
|
18615
|
+
}]
|
|
18661
18616
|
})
|
|
18662
18617
|
}), /*#__PURE__*/jsxRuntime.jsx(material.Grid, {
|
|
18663
18618
|
item: true,
|
|
18664
18619
|
xs: 12,
|
|
18665
18620
|
md: 6,
|
|
18666
|
-
sx: {
|
|
18667
|
-
paddingTop: "0px !important",
|
|
18668
|
-
minHeight: "430px",
|
|
18669
|
-
paddingLeft: {
|
|
18670
|
-
xs: "24px !important",
|
|
18671
|
-
md: "6px !important"
|
|
18672
|
-
},
|
|
18673
|
-
marginTop: {
|
|
18674
|
-
xs: "6px",
|
|
18675
|
-
md: "0px"
|
|
18676
|
-
}
|
|
18677
|
-
},
|
|
18678
18621
|
children: /*#__PURE__*/jsxRuntime.jsx(DonorMixCard, {
|
|
18679
|
-
title: "Spend
|
|
18680
|
-
subtitle:
|
|
18681
|
-
series:
|
|
18682
|
-
labels:
|
|
18683
|
-
colors:
|
|
18684
|
-
centerLabel:
|
|
18685
|
-
centerValue:
|
|
18686
|
-
items:
|
|
18622
|
+
title: "Spend allocation",
|
|
18623
|
+
subtitle: "Where $80.3K went this month",
|
|
18624
|
+
series: [100],
|
|
18625
|
+
labels: ["Meta Ads"],
|
|
18626
|
+
colors: ["#4267B2"],
|
|
18627
|
+
centerLabel: "total spend",
|
|
18628
|
+
centerValue: "$80.3K",
|
|
18629
|
+
items: [{
|
|
18630
|
+
label: "Meta Ads",
|
|
18631
|
+
val: "100%",
|
|
18632
|
+
color: "#4267B2",
|
|
18633
|
+
comingSoon: false
|
|
18634
|
+
}, {
|
|
18635
|
+
label: "Google Ads",
|
|
18636
|
+
val: "Coming Soon",
|
|
18637
|
+
color: "#C4C4C4",
|
|
18638
|
+
comingSoon: true
|
|
18639
|
+
}, {
|
|
18640
|
+
label: "TikTok",
|
|
18641
|
+
val: "Coming Soon",
|
|
18642
|
+
color: "#C4C4C4",
|
|
18643
|
+
comingSoon: true
|
|
18644
|
+
}, {
|
|
18645
|
+
label: "YouTube",
|
|
18646
|
+
val: "Coming Soon",
|
|
18647
|
+
color: "#C4C4C4",
|
|
18648
|
+
comingSoon: true
|
|
18649
|
+
}, {
|
|
18650
|
+
label: "Snapchat",
|
|
18651
|
+
val: "Coming Soon",
|
|
18652
|
+
color: "#C4C4C4",
|
|
18653
|
+
comingSoon: true
|
|
18654
|
+
}],
|
|
18687
18655
|
showBottomSummary: false,
|
|
18688
18656
|
sx: {
|
|
18689
|
-
pb: 3.5
|
|
18690
|
-
height: "100%"
|
|
18657
|
+
pb: 3.5
|
|
18691
18658
|
}
|
|
18692
18659
|
})
|
|
18693
18660
|
})]
|
|
@@ -18695,44 +18662,18 @@ var PaidSection = function PaidSection(_ref) {
|
|
|
18695
18662
|
container: true,
|
|
18696
18663
|
spacing: 3,
|
|
18697
18664
|
sx: {
|
|
18698
|
-
mt:
|
|
18699
|
-
alignItems: "stretch"
|
|
18665
|
+
mt: 3
|
|
18700
18666
|
},
|
|
18701
18667
|
children: [/*#__PURE__*/jsxRuntime.jsx(material.Grid, {
|
|
18702
18668
|
item: true,
|
|
18703
18669
|
xs: 12,
|
|
18704
18670
|
md: 6,
|
|
18705
|
-
|
|
18706
|
-
paddingTop: "0px !important",
|
|
18707
|
-
display: "flex"
|
|
18708
|
-
},
|
|
18709
|
-
children: /*#__PURE__*/jsxRuntime.jsx(material.Box, {
|
|
18710
|
-
sx: {
|
|
18711
|
-
width: "100%"
|
|
18712
|
-
},
|
|
18713
|
-
children: /*#__PURE__*/jsxRuntime.jsx(TopPerformingCampaignsCard, {
|
|
18714
|
-
data: topCampaignsData !== null && topCampaignsData !== void 0 ? topCampaignsData : []
|
|
18715
|
-
})
|
|
18716
|
-
})
|
|
18671
|
+
children: /*#__PURE__*/jsxRuntime.jsx(TopPerformingCampaignsCard, {})
|
|
18717
18672
|
}), /*#__PURE__*/jsxRuntime.jsx(material.Grid, {
|
|
18718
18673
|
item: true,
|
|
18719
18674
|
xs: 12,
|
|
18720
18675
|
md: 6,
|
|
18721
|
-
|
|
18722
|
-
paddingTop: "0px !important",
|
|
18723
|
-
paddingLeft: {
|
|
18724
|
-
xs: "24px !important",
|
|
18725
|
-
md: "6px !important"
|
|
18726
|
-
},
|
|
18727
|
-
marginTop: {
|
|
18728
|
-
xs: "6px",
|
|
18729
|
-
md: "0px"
|
|
18730
|
-
},
|
|
18731
|
-
display: "flex"
|
|
18732
|
-
},
|
|
18733
|
-
children: /*#__PURE__*/jsxRuntime.jsx(PaidDonorGeographyCard, {
|
|
18734
|
-
donorGeographyData: donorGeographyData
|
|
18735
|
-
})
|
|
18676
|
+
children: /*#__PURE__*/jsxRuntime.jsx(PaidDonorGeographyCard, {})
|
|
18736
18677
|
})]
|
|
18737
18678
|
})]
|
|
18738
18679
|
});
|