-
- {/* LEFT COLUMN: LEADERBOARD (65% = lg:col-span-8) */}
-
-
- {/* Tab Selector & Controls */}
-
- ,
- },
- {
- value: "organizations",
- label: "Organizations",
- count: stats.organizationCount,
- icon: ,
- },
- ]}
- value={activeTab}
- onChange={(val) => {
- setActiveTab(val as "individuals" | "organizations");
- setIsExpanded(false);
- }}
- layoutId="ewaste-26-segmented-pill"
- />
-
+ {/* PODIUM (Top 3 Contributors) */}
+
+ {/* Hero Podium Ambient Emerald Glow — Strongest focal spotlight */}
+
- {/* PODIUM (Top 3 Contributors) */}
-
- {/* Hero Podium Ambient Emerald Glow — Strongest focal spotlight */}
-
-
-
- {isLeaderboardLoading ? (
-
-
-
Loading live leaderboard...
-
- ) : podiumItems.length === 0 ? (
-
-
-
No verified entries recorded yet.
-
- ) : (
- <>
- {/* Podium (Ranks 2, 1, 3) — same layout on all screen sizes */}
-
-
- {/* 2nd Place */}
- {podiumItems[1] && (
-
-
-
-
- {getInitials(podiumItems[1].name)}
-
-
-
-
-
-
-
- {podiumItems[1].name}
-
-
-
- 2nd Rank
-
-
- {/* Podium Base */}
-
-
-
-
-
- {podiumItems[1].category}
-
-
-
-
- )}
-
- {/* 1st Place (Center and slightly taller) */}
- {podiumItems[0] && (
-
-
-
-
-
-
-
-
- {getInitials(podiumItems[0].name)}
-
-
-
-
-
-
-
- {podiumItems[0].name}
-
-
- 1st Rank
-
-
- {/* Podium Base */}
-
-
-
-
-
-
- {podiumItems[0].category}
-
-
-
-
- )}
-
- {/* 3rd Place */}
- {podiumItems[2] && (
-
-
-
-
- {getInitials(podiumItems[2].name)}
-
-
-
-
-
- {podiumItems[2].name}
-
-
-
- 3rd Rank
-
-
- {/* Podium Base */}
-
-
-
-
-
- {podiumItems[2].category}
-
-
-
-
- )}
-
- >
- )}
-
+
+ {isLeaderboardLoading ? (
+
+
+
Loading live leaderboard...
+
+ ) : podiumItems.length === 0 ? (
+
+
+
No verified entries recorded yet.
+
+ ) : (
+ <>
+ {/* Podium (Ranks 2, 1, 3) — same layout on all screen sizes */}
+
+
+ {/* 2nd Place */}
+ {podiumItems[1] && (
+
+
+
+
+ {getInitials(podiumItems[1].name)}
+
+
+
+
+
+
+
+ {podiumItems[1].name}
+
+
+
+ 2nd Rank
+
+
+ {/* Podium Base */}
+
+
+
+
+
+ {podiumItems[1].category}
+
+
+
+
+ )}
+
+ {/* 1st Place (Center and slightly taller) */}
+ {podiumItems[0] && (
+
+
+
+
+
+
+
+
+ {getInitials(podiumItems[0].name)}
+
+
+
+
+
+
+
+ {podiumItems[0].name}
+
+
+ 1st Rank
+
+
+ {/* Podium Base */}
+
+
+
+
+
+
+ {podiumItems[0].category}
+
+
+
+
+ )}
+
+ {/* 3rd Place */}
+ {podiumItems[2] && (
+
+
+
+
+ {getInitials(podiumItems[2].name)}
+
+
+
+
+
+ {podiumItems[2].name}
+
+
+
+ 3rd Rank
+
+
+ {/* Podium Base */}
+
+
+
+
+
+ {podiumItems[2].category}
+
+
+
+
+ )}
+
+ >
+ )}
+
- {/* RANKED LIST (Positions 4–10) */}
-
-
-
- Ranked Standings
-
- Positions {listItems[0] ? listItems[0].rank : 4} and onwards
-
+ {/* RANKED LIST (Positions 4–10) */}
+
+
+
+ Ranked Standings
+
+ Positions {listItems[0] ? listItems[0].rank : 4} and onwards
+
-
-
- {listItems.length === 0 ? (
-
- No additional rankings to show.
-
- ) : (
- listItems.map((item, idx) => {
- return (
-
-
+
+
+ {listItems.length === 0 ? (
+
+ No additional rankings to show.
+
+ ) : (
+ listItems.map((item, idx) => {
+ return (
+
+
#{item.rank}
-
- {getInitials(item.name)}
-
-
-
-
- {item.name}
-
-
-
- {new Date(item.submittedAt).toLocaleDateString("en-IN", { day: "numeric", month: "short" })}
-
-
-
-
-
-
- {getCategoryIcon(item.category)}
- {item.category}
-
-
-
-
- {item.weight.toFixed(1)} kg
-
-
- Weight
-
-
-
-
- );
- })
- )}
-
-
-
- {/* View Full Leaderboard Button */}
- {hasMoreItems && (
-
-
-
- )}
+
+ {getInitials(item.name)}
+
+
+
+
+ {item.name}
+
+
+
+ {new Date(item.submittedAt).toLocaleDateString("en-IN", { day: "numeric", month: "short" })}
+
+
+
+
+
+
+ {getCategoryIcon(item.category)}
+ {item.category}
+
+
+
+
+ {item.weight.toFixed(1)} kg
+
+
+ Weight
+
+
+
+
+ );
+ })
+ )}
+
+
+ {/* View Full Leaderboard Button */}
+ {hasMoreItems && (
+
+
+
+ )}
+
- {/* RIGHT COLUMN: ANALYTICS PANEL (35% = lg:col-span-4) */}
-
- {/* Analytics Panel Medium Glow — Secondary focal glow */}
-
+ {/* RIGHT COLUMN: ANALYTICS PANEL (35% = lg:col-span-4) */}
+
+ {/* Analytics Panel Medium Glow — Secondary focal glow */}
+
-
+
- {/* Analytics Panel Header */}
-
-
-
Drive Analytics
-
+ {/* Analytics Panel Header */}
+
+
+
Drive Analytics
+
- {/* Total E-Waste Collected Card */}
-
-
-
-
-
Total E-Waste Collected
-
-
- kg
-
-
-
-
-
-
-
-
- {/* Total Contributors Card */}
-
-
-
-
-
Total Active Contributors
-
-
-
+ {/* Total E-Waste Collected Card */}
+
+
+
+
+
Total E-Waste Collected
+
+
+ kg
-
-
-
-
-
-
- {/* Donut Chart: Collection by Device Type */}
-
-
-
By Device Type
- Shares
-
-
- {mounted && deviceData.length > 0 ? (
-
-
-
- {deviceData.map((entry, index) => (
- |
- ))}
-
- [`${value}%`, "Contribution"]}
- />
-
-
- ) : (
-
{mounted ? "No device data yet." : "Loading chart..."}
- )}
-
- {/* Inside Text for Donut Chart */}
-
-
Top Category
-
{deviceData[0]?.name ?? "No Data"}
+
+
+
+
+
+
+ {/* Total Contributors Card */}
+
+
+
+
+
Total Active Contributors
+
+
-
-
- {deviceData.map((device) => (
-
-
- {device.name} ({device.value}%)
-
- ))}
+
+
-
+
+
+
+ {/* Donut Chart: Collection by Device Type */}
+
+
+
By Device Type
+ Shares
+
- {/* Horizontal Bar Chart: Collection by Department */}
-
-
-
By Participant Type
- kg
-
+
+ {mounted && deviceData.length > 0 ? (
+
+
+
+ {deviceData.map((entry, index) => (
+ |
+ ))}
+
+ [`${value}%`, "Contribution"]}
+ />
+
+
+ ) : (
+
{mounted ? "No device data yet." : "Loading chart..."}
+ )}
-
- {mounted && departmentData.some((item) => item.weight > 0) ? (
-
-
-
-
-
- {departmentData.map((entry, index) => (
- |
- ))}
-
- [`${value} kg`, "Weight"]}
- />
-
-
- ) : (
-
{mounted ? "No contribution data yet." : "Loading chart..."}
- )}
-
-
-
- {/* Line Chart: Daily Collection Trend */}
-
-
-
Daily Trend
-
-
- Growth
-
+ {/* Inside Text for Donut Chart */}
+
+ Top Category
+ {deviceData[0]?.name ?? "No Data"}
+
-
- {mounted && trendData.length > 0 ? (
-
-
-
-
-
-
-
- ) : (
-
{mounted ? "No trend data yet." : "Loading chart..."}
- )}
-
-
-
+
+ {deviceData.map((device) => (
+
+
+ {device.name} ({device.value}%)
+
+ ))}
+
+
+
+ {/* Horizontal Bar Chart: Collection by Department */}
+
+
+
By Participant Type
+ kg
+
+
+
+ {mounted && departmentData.some((item) => item.weight > 0) ? (
+
+
+
+
+
+ {departmentData.map((entry, index) => (
+ |
+ ))}
+
+ [`${value} kg`, "Weight"]}
+ />
+
+
+ ) : (
+
{mounted ? "No contribution data yet." : "Loading chart..."}
+ )}
+
+
+
+ {/* Line Chart: Daily Collection Trend */}
+
+
+
Daily Trend
+
+
+ Growth
+
+
+
+
+ {mounted && trendData.length > 0 ? (
+
+
+
+
+
+
+
+ ) : (
+
{mounted ? "No trend data yet." : "Loading chart..."}
+ )}
+
+
-
+
+
{/* Gallery Section */}
diff --git a/public/paavni-mascot-final.png b/public/paavni-mascot-final.png
new file mode 100644
index 0000000..204a5db
Binary files /dev/null and b/public/paavni-mascot-final.png differ