@ammarkhalidfarooq/dashboard-package 0.5.39 → 0.6.0

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 CHANGED
@@ -8,8 +8,16 @@ A reusable React Dashboard component library.
8
8
  npm install @ammarkhalidfarooq/dashboard-package
9
9
  ```
10
10
 
11
+ Peer dependencies are required in your app:
12
+
13
+ - `react`, `react-dom`
14
+ - `@mui/material`, `@mui/icons-material`, `@emotion/react`, `@emotion/styled`
15
+ - `apexcharts`, `react-apexcharts`
16
+
11
17
  ## Usage
12
18
 
19
+ ### Full Dashboard
20
+
13
21
  ```jsx
14
22
  import React from "react";
15
23
  import { Dashboard } from "@ammarkhalidfarooq/dashboard-package";
@@ -21,6 +29,202 @@ const App = () => {
21
29
  export default App;
22
30
  ```
23
31
 
32
+ ### RenderChartCard (tree-shakeable)
33
+
34
+ Import only the chart card bundle — avoids pulling in the full dashboard:
35
+
36
+ ```jsx
37
+ import RenderChartCard from "@ammarkhalidfarooq/dashboard-package/RenderChartCard";
38
+ ```
39
+
40
+ Or import from the main entry:
41
+
42
+ ```jsx
43
+ import { RenderChartCard } from "@ammarkhalidfarooq/dashboard-package";
44
+ ```
45
+
46
+ **Example:**
47
+
48
+ ```jsx
49
+ import { useState } from "react";
50
+ import Grid from "@mui/material/Grid";
51
+ import RenderChartCard from "@ammarkhalidfarooq/dashboard-package/RenderChartCard";
52
+
53
+ const chartItem = {
54
+ label: "Revenue per Visitor",
55
+ value: "$5.12",
56
+ subtitle: "Last 30 days · daily aggregation",
57
+ trend: "18% vs last month",
58
+ data: [3000, 4500, 4200, 5800, 5200, 7100, 8500, 9200, 5000],
59
+ categories: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep"],
60
+ };
61
+
62
+ const App = () => {
63
+ const [metric, setMetric] = useState("Revenue");
64
+
65
+ return (
66
+ <Grid container spacing={3}>
67
+ <RenderChartCard
68
+ item={chartItem}
69
+ index={0}
70
+ isPremium
71
+ md={6}
72
+ metric={metric}
73
+ setMetric={setMetric}
74
+ />
75
+ </Grid>
76
+ );
77
+ };
78
+
79
+ export default App;
80
+ ```
81
+
82
+ **Props:**
83
+
84
+ | Prop | Type | Default | Description |
85
+ |------|------|---------|-------------|
86
+ | `item` | `object` | — | Chart config (see below) |
87
+ | `index` | `number` | — | Unique index for the chart |
88
+ | `isPrimary` | `boolean` | `false` | Uses a taller chart area |
89
+ | `isPremium` | `boolean` | `false` | Premium card layout with trend badge |
90
+ | `metric` | `string` | — | Active metric label (e.g. `"Revenue"`) |
91
+ | `setMetric` | `function` | — | Metric change handler |
92
+ | `md` | `number` | `4` | Grid column width on `md` breakpoint |
93
+ | `type` | `string` | `"area"` | Chart type (`"area"`, `"bar"`, `"donut"`, etc.) |
94
+
95
+ **`item` shape (common fields):**
96
+
97
+ ```js
98
+ {
99
+ label: "Revenue per Visitor", // Card title
100
+ value: "$5.12", // Main metric value
101
+ subtitle: "Last 30 days", // Optional subtitle (premium layout)
102
+ trend: "18% vs last month", // Optional trend badge (premium layout)
103
+ data: [3000, 4500, 4200], // Single-series chart data
104
+ categories: ["Jan", "Feb", "Mar"], // X-axis labels
105
+ series: [{ name: "Paid Ads", data: [...] }], // Multi-series (optional)
106
+ stacked: false, // Stack series (optional)
107
+ showSelector: false, // Show metric dropdown (optional)
108
+ hideControls: false, // Hide menu / show legend only (optional)
109
+ height: 250, // Chart height override (optional)
110
+ type: "area", // Per-card chart type override (optional)
111
+ colors: ["#6366F1", "#10B981"], // Custom chart colors (optional)
112
+ footer: { left: "Total", right: "$12k" }, // Optional footer row
113
+ }
114
+ ```
115
+
116
+ ### ActiveCampaignsCard (tree-shakeable)
117
+
118
+ A configurable table card — used for channel performance, active campaigns, and similar ranked lists.
119
+
120
+ ```jsx
121
+ import ActiveCampaignsCard from "@ammarkhalidfarooq/dashboard-package/ActiveCampaignsCard";
122
+ ```
123
+
124
+ Or import from the main entry:
125
+
126
+ ```jsx
127
+ import { ActiveCampaignsCard } from "@ammarkhalidfarooq/dashboard-package";
128
+ ```
129
+
130
+ **Channel performance example:**
131
+
132
+ ```jsx
133
+ import ActiveCampaignsCard from "@ammarkhalidfarooq/dashboard-package/ActiveCampaignsCard";
134
+
135
+ const channelRows = [
136
+ {
137
+ id: "M",
138
+ avatarBg: "#4267B2",
139
+ name: "Meta Ads",
140
+ val1: "$32,800",
141
+ val2: "$112,400",
142
+ val3: "3.4x",
143
+ val4: "$340",
144
+ type: "trend",
145
+ trendType: "up",
146
+ trendLabel: "Improving",
147
+ highlightVal3: true,
148
+ val3Color: "#22C55E",
149
+ },
150
+ {
151
+ id: "G",
152
+ avatarBg: "#4285F4",
153
+ name: "Google Ads",
154
+ val1: "$28,200",
155
+ val2: "$78,300",
156
+ val3: "2.8x",
157
+ val4: "$385",
158
+ type: "trend",
159
+ trendType: "up",
160
+ trendLabel: "Improving",
161
+ highlightVal3: true,
162
+ val3Color: "#22C55E",
163
+ },
164
+ ];
165
+
166
+ const App = () => (
167
+ <ActiveCampaignsCard
168
+ title="Channel performance"
169
+ subtitle="Ad platforms ranked by ROAS"
170
+ columns={["channel", "spend", "revenue", "ROAS", "CPA", "trend"]}
171
+ gridTemplateColumns="2.2fr 1fr 1fr 0.8fr 0.8fr 1.2fr"
172
+ height="100%"
173
+ rows={channelRows}
174
+ />
175
+ );
176
+
177
+ export default App;
178
+ ```
179
+
180
+ **Props:**
181
+
182
+ | Prop | Type | Default | Description |
183
+ |------|------|---------|-------------|
184
+ | `title` | `string` | `"Active campaigns"` | Card title |
185
+ | `subtitle` | `string` | `"Live fundraisers ranked by velocity"` | Card subtitle |
186
+ | `actionLabel` | `string` | — | Optional top-right action link text |
187
+ | `columns` | `string[]` | `["Campaign", "Raised", "Progress", "Donors", "Avg gift"]` | Table header labels |
188
+ | `rows` | `object[]` | `[]` | Table row data (see below) |
189
+ | `gridTemplateColumns` | `string` | `"3fr 1fr 1.5fr 0.8fr 1fr"` | CSS grid column template |
190
+ | `height` | `string` | — | Card height (e.g. `"100%"`) |
191
+ | `compact` | `boolean` | `false` | Smaller typography and spacing |
192
+
193
+ **`row` shape:**
194
+
195
+ ```js
196
+ // Channel performance / trend table (6 columns)
197
+ {
198
+ id: "M", // Avatar label (optional)
199
+ avatarBg: "#4267B2", // Avatar background color
200
+ name: "Meta Ads", // Row label
201
+ val1: "$32,800", // Column 2 (spend / raised)
202
+ val2: "$112,400", // Column 3 when type !== "progress"
203
+ val3: "3.4x", // Column 4 (ROAS / donors)
204
+ val4: "$340", // Column 5 (CPA / avg gift)
205
+ type: "trend", // "trend" | "progress" — controls column 3 & 6
206
+ trendType: "up", // "up" | "down" (when type is "trend")
207
+ trendLabel: "Improving", // Trend badge text
208
+ highlightVal3: true, // Highlight column 4 value
209
+ val3Color: "#22C55E", // Highlight color for column 4
210
+ }
211
+
212
+ // Campaign progress table (5 columns)
213
+ {
214
+ id: "1",
215
+ name: "Ramadan Appeal",
216
+ val1: "$45,200",
217
+ type: "progress",
218
+ progress: 72,
219
+ progressColor: "rgb(99, 99, 230)",
220
+ val3: "1,240",
221
+ val4: "$36.45",
222
+ status: "Live",
223
+ statusBg: "#DCFCE7",
224
+ statusColor: "#166534",
225
+ }
226
+ ```
227
+
24
228
  ## Development
25
229
 
26
230
  To preview the component locally:
@@ -35,4 +239,4 @@ To build the package:
35
239
  npm run build
36
240
  ```
37
241
 
38
- The build outputs both ESM and CommonJS bundles in the `dist` folder.
242
+ The build outputs ESM and CommonJS bundles in the `dist` folder, including separate `RenderChartCard` and `ActiveCampaignsCard` bundles for tree-shaking.
@@ -0,0 +1,266 @@
1
+ 'use strict';
2
+
3
+ var material = require('@mui/material');
4
+ var jsxRuntime = require('react/jsx-runtime');
5
+
6
+ var ActiveCampaignsCard = function ActiveCampaignsCard(_ref) {
7
+ var _ref$title = _ref.title,
8
+ title = _ref$title === void 0 ? "Active campaigns" : _ref$title,
9
+ _ref$subtitle = _ref.subtitle,
10
+ subtitle = _ref$subtitle === void 0 ? "Live fundraisers ranked by velocity" : _ref$subtitle,
11
+ actionLabel = _ref.actionLabel,
12
+ _ref$columns = _ref.columns,
13
+ columns = _ref$columns === void 0 ? ["Campaign", "Raised", "Progress", "Donors", "Avg gift"] : _ref$columns,
14
+ _ref$rows = _ref.rows,
15
+ rows = _ref$rows === void 0 ? [] : _ref$rows,
16
+ _ref$gridTemplateColu = _ref.gridTemplateColumns,
17
+ gridTemplateColumns = _ref$gridTemplateColu === void 0 ? "3fr 1fr 1.5fr 0.8fr 1fr " : _ref$gridTemplateColu,
18
+ height = _ref.height,
19
+ _ref$compact = _ref.compact,
20
+ compact = _ref$compact === void 0 ? false : _ref$compact;
21
+ return /*#__PURE__*/jsxRuntime.jsxs(material.Box, {
22
+ sx: {
23
+ bgcolor: "#fff",
24
+ borderRadius: compact ? 3 : 4,
25
+ border: "1px solid #f0f0f0",
26
+ boxShadow: compact ? "0 2px 12px rgba(0,0,0,0.05)" : "0 4px 24px rgba(0,0,0,0.06)",
27
+ p: compact ? 1.5 : 3,
28
+ height: height
29
+ // height: "100%",
30
+ },
31
+ children: [/*#__PURE__*/jsxRuntime.jsxs(material.Box, {
32
+ sx: {
33
+ display: "flex",
34
+ justifyContent: "space-between",
35
+ alignItems: "flex-start",
36
+ mb: compact ? 1.25 : 3
37
+ },
38
+ children: [/*#__PURE__*/jsxRuntime.jsxs(material.Box, {
39
+ children: [/*#__PURE__*/jsxRuntime.jsx(material.Typography, {
40
+ sx: {
41
+ fontWeight: 700,
42
+ fontSize: compact ? "14px" : "18px",
43
+ color: "#000",
44
+ textAlign: "left"
45
+ },
46
+ children: title
47
+ }), /*#__PURE__*/jsxRuntime.jsx(material.Typography, {
48
+ sx: {
49
+ fontSize: compact ? "10px" : "13px",
50
+ color: "rgba(0, 0, 0, 0.4)",
51
+ mt: 0.2
52
+ },
53
+ children: subtitle
54
+ })]
55
+ }), actionLabel && /*#__PURE__*/jsxRuntime.jsx(material.Typography, {
56
+ sx: {
57
+ fontSize: compact ? "10px" : "13px",
58
+ fontWeight: 600,
59
+ color: "rgb(99, 99, 230)",
60
+ cursor: "pointer"
61
+ },
62
+ children: actionLabel
63
+ })]
64
+ }), /*#__PURE__*/jsxRuntime.jsx(material.Box, {
65
+ sx: {
66
+ overflowX: compact ? "hidden" : "auto"
67
+ },
68
+ children: /*#__PURE__*/jsxRuntime.jsxs(material.Box, {
69
+ sx: {
70
+ minWidth: compact ? 0 : "600px"
71
+ },
72
+ children: [/*#__PURE__*/jsxRuntime.jsx(material.Box, {
73
+ sx: {
74
+ display: "grid",
75
+ gridTemplateColumns: gridTemplateColumns,
76
+ gap: compact ? 1 : 2,
77
+ pb: compact ? 1 : 2.5,
78
+ borderBottom: "1px solid #f0f0f0"
79
+ },
80
+ children: columns.map(function (header) {
81
+ return /*#__PURE__*/jsxRuntime.jsx(material.Typography, {
82
+ sx: {
83
+ fontSize: compact ? "9px" : "12px",
84
+ color: "rgba(0, 0, 0, 0.4)",
85
+ fontWeight: 500,
86
+ textAlign: "left"
87
+ },
88
+ children: header
89
+ }, header);
90
+ })
91
+ }), /*#__PURE__*/jsxRuntime.jsx(material.Box, {
92
+ sx: {
93
+ mt: 1
94
+ },
95
+ children: rows.map(function (row, idx) {
96
+ var _row$progress;
97
+ return /*#__PURE__*/jsxRuntime.jsxs(material.Box, {
98
+ sx: {
99
+ display: "grid",
100
+ gridTemplateColumns: gridTemplateColumns,
101
+ gap: compact ? 1 : 2,
102
+ py: compact ? 0.5 : 1.2,
103
+ alignItems: "center",
104
+ borderBottom: idx === rows.length - 1 ? "none" : "1px solid #f5f5f5"
105
+ },
106
+ children: [/*#__PURE__*/jsxRuntime.jsxs(material.Box, {
107
+ sx: {
108
+ display: "flex",
109
+ alignItems: "center",
110
+ gap: 1.5
111
+ },
112
+ children: [row.id && /*#__PURE__*/jsxRuntime.jsx(material.Avatar, {
113
+ sx: {
114
+ width: compact ? 22 : 28,
115
+ height: compact ? 22 : 28,
116
+ fontSize: compact ? "8px" : "10px",
117
+ fontWeight: 700,
118
+ bgcolor: row.avatarBg || "#F3F4F6",
119
+ color: "rgb(99, 99, 230)"
120
+ },
121
+ children: row.id
122
+ }), row.icon && /*#__PURE__*/jsxRuntime.jsx(material.Box, {
123
+ sx: {
124
+ color: row.iconColor || "inherit",
125
+ display: "flex",
126
+ alignItems: "center"
127
+ },
128
+ children: /*#__PURE__*/jsxRuntime.jsx(row.icon, {
129
+ sx: {
130
+ fontSize: "18px"
131
+ }
132
+ })
133
+ }), /*#__PURE__*/jsxRuntime.jsx(material.Typography, {
134
+ sx: {
135
+ fontSize: compact ? "10px" : "12px",
136
+ fontWeight: 700,
137
+ color: "#000"
138
+ },
139
+ children: row.name
140
+ })]
141
+ }), /*#__PURE__*/jsxRuntime.jsx(material.Typography, {
142
+ sx: {
143
+ fontSize: compact ? "10px" : "13px",
144
+ fontWeight: 600,
145
+ color: "#000",
146
+ textAlign: "left"
147
+ },
148
+ children: row.val1
149
+ }), row.type === "progress" ? /*#__PURE__*/jsxRuntime.jsxs(material.Box, {
150
+ sx: {
151
+ display: "flex",
152
+ alignItems: "center",
153
+ gap: 1.5
154
+ },
155
+ children: [/*#__PURE__*/jsxRuntime.jsx(material.Box, {
156
+ sx: {
157
+ flexGrow: 1
158
+ },
159
+ children: /*#__PURE__*/jsxRuntime.jsx(material.LinearProgress, {
160
+ variant: "determinate",
161
+ value: Math.min(100, Math.max(0, (_row$progress = row.progress) !== null && _row$progress !== void 0 ? _row$progress : 0)),
162
+ sx: {
163
+ height: compact ? 6 : 8,
164
+ borderRadius: 4,
165
+ bgcolor: "#F3F4F6",
166
+ "& .MuiLinearProgress-bar": {
167
+ borderRadius: 4,
168
+ bgcolor: row.progressColor || "rgb(99, 99, 230)"
169
+ }
170
+ }
171
+ })
172
+ }), /*#__PURE__*/jsxRuntime.jsxs(material.Typography, {
173
+ sx: {
174
+ fontSize: compact ? "9px" : "11px",
175
+ color: "rgba(0, 0, 0, 0.4)",
176
+ minWidth: "30px"
177
+ },
178
+ children: [row.progress, "%"]
179
+ })]
180
+ }) : /*#__PURE__*/jsxRuntime.jsx(material.Typography, {
181
+ sx: {
182
+ fontSize: "13px",
183
+ fontWeight: 600,
184
+ color: "#000",
185
+ textAlign: "left"
186
+ },
187
+ children: row.val2
188
+ }), /*#__PURE__*/jsxRuntime.jsx(material.Typography, {
189
+ sx: {
190
+ fontSize: compact ? "10px" : "13px",
191
+ fontWeight: row.highlightVal3 ? 700 : 500,
192
+ color: row.highlightVal3 ? row.val3Color || "#22C55E" : "#000",
193
+ textAlign: "left"
194
+ },
195
+ children: row.val3
196
+ }), /*#__PURE__*/jsxRuntime.jsx(material.Typography, {
197
+ sx: {
198
+ fontSize: "13px",
199
+ fontWeight: 500,
200
+ color: "#000",
201
+ textAlign: "left"
202
+ },
203
+ children: row.val4
204
+ }), columns.length > 5 && /*#__PURE__*/jsxRuntime.jsx(material.Box, {
205
+ children: row.type === "trend" ? /*#__PURE__*/jsxRuntime.jsx(material.Box, {
206
+ sx: {
207
+ display: "flex",
208
+ alignItems: "center",
209
+ gap: 0.5
210
+ },
211
+ children: row.trendType === "up" ? /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
212
+ children: [/*#__PURE__*/jsxRuntime.jsx(material.Typography, {
213
+ sx: {
214
+ fontSize: "14px",
215
+ color: "#22C55E"
216
+ },
217
+ children: "\u25B2"
218
+ }), /*#__PURE__*/jsxRuntime.jsx(material.Typography, {
219
+ sx: {
220
+ fontSize: "12px",
221
+ color: "#22C55E",
222
+ fontWeight: 700
223
+ },
224
+ children: row.trendLabel
225
+ })]
226
+ }) : /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
227
+ children: [/*#__PURE__*/jsxRuntime.jsx(material.Typography, {
228
+ sx: {
229
+ fontSize: "14px",
230
+ color: "#EF4444"
231
+ },
232
+ children: "\u25BC"
233
+ }), /*#__PURE__*/jsxRuntime.jsx(material.Typography, {
234
+ sx: {
235
+ fontSize: "12px",
236
+ color: "#EF4444",
237
+ fontWeight: 700
238
+ },
239
+ children: row.trendLabel
240
+ })]
241
+ })
242
+ }) : /*#__PURE__*/jsxRuntime.jsx(material.Box, {
243
+ sx: {
244
+ display: "inline-block",
245
+ px: compact ? 1 : 1.5,
246
+ py: compact ? 0.25 : 0.5,
247
+ borderRadius: "100px",
248
+ bgcolor: row.statusBg,
249
+ color: row.statusColor,
250
+ fontSize: compact ? "9px" : "11px",
251
+ fontWeight: 700,
252
+ textAlign: "center"
253
+ },
254
+ children: row.status
255
+ })
256
+ })]
257
+ }, idx);
258
+ })
259
+ })]
260
+ })
261
+ })]
262
+ });
263
+ };
264
+
265
+ module.exports = ActiveCampaignsCard;
266
+ //# sourceMappingURL=ActiveCampaignsCard.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActiveCampaignsCard.cjs.js","sources":["../src/components/UI/ActiveCampaignsCard/index.jsx"],"sourcesContent":["import { Box, Typography, LinearProgress, Avatar } from \"@mui/material\";\r\n\r\nconst ActiveCampaignsCard = ({\r\n title = \"Active campaigns\",\r\n subtitle = \"Live fundraisers ranked by velocity\",\r\n actionLabel,\r\n columns = [\"Campaign\", \"Raised\", \"Progress\", \"Donors\", \"Avg gift\",],\r\n rows = [],\r\n gridTemplateColumns = \"3fr 1fr 1.5fr 0.8fr 1fr \",\r\n height,\r\n compact = false,\r\n}) => {\r\n return (\r\n <Box\r\n sx={{\r\n bgcolor: \"#fff\",\r\n borderRadius: compact ? 3 : 4,\r\n border: \"1px solid #f0f0f0\",\r\n boxShadow: compact ? \"0 2px 12px rgba(0,0,0,0.05)\" : \"0 4px 24px rgba(0,0,0,0.06)\",\r\n p: compact ? 1.5 : 3,\r\n height: height,\r\n // height: \"100%\",\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: compact ? 1.25 : 3,\r\n }}\r\n >\r\n <Box>\r\n <Typography\r\n sx={{\r\n fontWeight: 700,\r\n fontSize: compact ? \"14px\" : \"18px\",\r\n color: \"#000\",\r\n textAlign: \"left\",\r\n }}\r\n >\r\n {title}\r\n </Typography>\r\n <Typography\r\n sx={{ fontSize: compact ? \"10px\" : \"13px\", color: \"rgba(0, 0, 0, 0.4)\", mt: 0.2 }}\r\n >\r\n {subtitle}\r\n </Typography>\r\n </Box>\r\n {actionLabel && (\r\n <Typography\r\n sx={{\r\n fontSize: compact ? \"10px\" : \"13px\",\r\n fontWeight: 600,\r\n color: \"rgb(99, 99, 230)\",\r\n cursor: \"pointer\",\r\n }}\r\n >\r\n {actionLabel}\r\n </Typography>\r\n )}\r\n </Box>\r\n\r\n <Box sx={{ overflowX: compact ? \"hidden\" : \"auto\" }}>\r\n <Box sx={{ minWidth: compact ? 0 : \"600px\" }}>\r\n <Box\r\n sx={{\r\n display: \"grid\",\r\n gridTemplateColumns: gridTemplateColumns,\r\n gap: compact ? 1 : 2,\r\n pb: compact ? 1 : 2.5,\r\n borderBottom: \"1px solid #f0f0f0\",\r\n }}\r\n >\r\n {columns.map((header) => (\r\n <Typography\r\n key={header}\r\n sx={{\r\n fontSize: compact ? \"9px\" : \"12px\",\r\n color: \"rgba(0, 0, 0, 0.4)\",\r\n fontWeight: 500,\r\n textAlign: \"left\",\r\n }}\r\n >\r\n {header}\r\n </Typography>\r\n ))}\r\n </Box>\r\n\r\n <Box sx={{ mt: 1 }}>\r\n {rows.map((row, idx) => (\r\n <Box\r\n key={idx}\r\n sx={{\r\n display: \"grid\",\r\n gridTemplateColumns: gridTemplateColumns,\r\n gap: compact ? 1 : 2,\r\n py: compact ? 0.5 : 1.2,\r\n alignItems: \"center\",\r\n borderBottom:\r\n idx === rows.length - 1 ? \"none\" : \"1px solid #f5f5f5\",\r\n }}\r\n >\r\n {/* Column 1: Item with Avatar/Icon */}\r\n <Box sx={{ display: \"flex\", alignItems: \"center\", gap: 1.5 }}>\r\n {row.id && (\r\n <Avatar\r\n sx={{\r\n width: compact ? 22 : 28,\r\n height: compact ? 22 : 28,\r\n fontSize: compact ? \"8px\" : \"10px\",\r\n fontWeight: 700,\r\n bgcolor: row.avatarBg || \"#F3F4F6\",\r\n color: \"rgb(99, 99, 230)\",\r\n }}\r\n >\r\n {row.id}\r\n </Avatar>\r\n )}\r\n {row.icon && (\r\n <Box\r\n sx={{\r\n color: row.iconColor || \"inherit\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n }}\r\n >\r\n <row.icon sx={{ fontSize: \"18px\" }} />\r\n </Box>\r\n )}\r\n <Typography\r\n sx={{ fontSize: compact ? \"10px\" : \"12px\", fontWeight: 700, color: \"#000\" }}\r\n >\r\n {row.name}\r\n </Typography>\r\n </Box>\r\n\r\n {/* Column 2: Value 1 (Spent/Raised) */}\r\n <Typography\r\n sx={{\r\n fontSize: compact ? \"10px\" : \"13px\",\r\n fontWeight: 600,\r\n color: \"#000\",\r\n textAlign: \"left\",\r\n }}\r\n >\r\n {row.val1}\r\n </Typography>\r\n\r\n {/* Column 3: Progress or Value 2 */}\r\n {row.type === \"progress\" ? (\r\n <Box sx={{ display: \"flex\", alignItems: \"center\", gap: 1.5, }}>\r\n <Box sx={{ flexGrow: 1 }}>\r\n <LinearProgress\r\n variant=\"determinate\"\r\n value={Math.min(100, Math.max(0, row.progress ?? 0))}\r\n sx={{\r\n height: compact ? 6 : 8,\r\n borderRadius: 4,\r\n bgcolor: \"#F3F4F6\",\r\n \"& .MuiLinearProgress-bar\": {\r\n borderRadius: 4,\r\n bgcolor: row.progressColor || \"rgb(99, 99, 230)\",\r\n },\r\n }}\r\n />\r\n </Box>\r\n <Typography\r\n sx={{\r\n fontSize: compact ? \"9px\" : \"11px\",\r\n color: \"rgba(0, 0, 0, 0.4)\",\r\n minWidth: \"30px\",\r\n }}\r\n >\r\n {row.progress}%\r\n </Typography>\r\n </Box>\r\n ) : (\r\n <Typography\r\n sx={{\r\n fontSize: \"13px\",\r\n fontWeight: 600,\r\n color: \"#000\",\r\n textAlign: \"left\",\r\n }}\r\n >\r\n {row.val2}\r\n </Typography>\r\n )}\r\n\r\n {/* Column 4: Value 3 or highlighted ROAS */}\r\n <Typography\r\n sx={{\r\n fontSize: compact ? \"10px\" : \"13px\",\r\n fontWeight: row.highlightVal3 ? 700 : 500,\r\n color: row.highlightVal3\r\n ? row.val3Color || \"#22C55E\"\r\n : \"#000\",\r\n textAlign: \"left\",\r\n }}\r\n >\r\n {row.val3}\r\n </Typography>\r\n\r\n {/* Column 5: Value 4 */}\r\n <Typography\r\n sx={{\r\n fontSize: \"13px\",\r\n fontWeight: 500,\r\n color: \"#000\",\r\n textAlign: \"left\",\r\n }}\r\n >\r\n {row.val4}\r\n </Typography>\r\n\r\n {/* Column 6: Status or Trend */}\r\n {columns.length > 5 && (\r\n <Box>\r\n {row.type === \"trend\" ? (\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: 0.5,\r\n }}\r\n >\r\n {row.trendType === \"up\" ? (\r\n <>\r\n <Typography sx={{ fontSize: \"14px\", color: \"#22C55E\" }}>\r\n ▲\r\n </Typography>\r\n <Typography\r\n sx={{\r\n fontSize: \"12px\",\r\n color: \"#22C55E\",\r\n fontWeight: 700,\r\n }}\r\n >\r\n {row.trendLabel}\r\n </Typography>\r\n </>\r\n ) : (\r\n <>\r\n <Typography sx={{ fontSize: \"14px\", color: \"#EF4444\" }}>\r\n ▼\r\n </Typography>\r\n <Typography\r\n sx={{\r\n fontSize: \"12px\",\r\n color: \"#EF4444\",\r\n fontWeight: 700,\r\n }}\r\n >\r\n {row.trendLabel}\r\n </Typography>\r\n </>\r\n )}\r\n </Box>\r\n ) : (\r\n <Box\r\n sx={{\r\n display: \"inline-block\",\r\n px: compact ? 1 : 1.5,\r\n py: compact ? 0.25 : 0.5,\r\n borderRadius: \"100px\",\r\n bgcolor: row.statusBg,\r\n color: row.statusColor,\r\n fontSize: compact ? \"9px\" : \"11px\",\r\n fontWeight: 700,\r\n textAlign: \"center\",\r\n }}\r\n >\r\n {row.status}\r\n </Box>\r\n )}\r\n </Box>\r\n )}\r\n </Box>\r\n ))}\r\n </Box>\r\n </Box>\r\n </Box>\r\n </Box>\r\n );\r\n};\r\n\r\nexport default ActiveCampaignsCard;\r\n"],"names":["ActiveCampaignsCard","_ref","_ref$title","title","_ref$subtitle","subtitle","actionLabel","_ref$columns","columns","_ref$rows","rows","_ref$gridTemplateColu","gridTemplateColumns","height","_ref$compact","compact","_jsxs","Box","sx","bgcolor","borderRadius","border","boxShadow","p","children","display","justifyContent","alignItems","mb","_jsx","Typography","fontWeight","fontSize","color","textAlign","mt","cursor","overflowX","minWidth","gap","pb","borderBottom","map","header","row","idx","_row$progress","py","length","id","Avatar","width","avatarBg","icon","iconColor","name","val1","type","flexGrow","LinearProgress","variant","value","Math","min","max","progress","progressColor","val2","highlightVal3","val3Color","val3","val4","trendType","_Fragment","trendLabel","px","statusBg","statusColor","status"],"mappings":"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"}