aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/channel-card.tsx
diff options
context:
space:
mode:
authorPinapelz <yukais@pinapelz.com>2023-11-22 21:58:45 -0800
committerPinapelz <yukais@pinapelz.com>2023-11-22 21:58:45 -0800
commit77a0b69d9a0dd755a0a59a4c1dc3f3d045327e89 (patch)
tree423c31591b868e0ccd4577c9b259f4895918f164 /src/components/channel-card.tsx
parent02e1e6ad3a4ca2a52e1045b5ed62858e55d8159b (diff)
feat: re-implement individual statistic pages on next
Diffstat (limited to 'src/components/channel-card.tsx')
-rw-r--r--src/components/channel-card.tsx53
1 files changed, 53 insertions, 0 deletions
diff --git a/src/components/channel-card.tsx b/src/components/channel-card.tsx
new file mode 100644
index 0000000..f2eed59
--- /dev/null
+++ b/src/components/channel-card.tsx
@@ -0,0 +1,53 @@
+import { AvatarImage, AvatarFallback, Avatar } from "@/components/ui/avatar"
+import { CardTitle, CardHeader, CardContent, Card } from "@/components/ui/card"
+import { Badge } from "@/components/ui/badge"
+
+interface ChannelCardProps {
+ name: string
+ avatarUrl: string
+ subscriberCount: number
+ videoCount: number
+ suborg: string
+ nextMilestone: string
+ nextMilestoneDays: string
+ nextMilestoneDate: string
+}
+
+export function ChannelCard(props: ChannelCardProps) {
+ const { name, avatarUrl, subscriberCount, videoCount, suborg, nextMilestone, nextMilestoneDays, nextMilestoneDate } = props
+ return (
+ <Card className="w-[500px] shadow-lg rounded-lg overflow-hidden mt-4 py-4">
+ <CardHeader>
+ <div className="flex items-center space-x-4 p-4">
+ <Avatar>
+ <AvatarImage src={avatarUrl}/>
+ <AvatarFallback>PR</AvatarFallback>
+ </Avatar>
+ <div>
+ <CardTitle>{name}</CardTitle>
+ <Badge variant="secondary">{suborg}</Badge>
+ </div>
+ </div>
+ </CardHeader>
+ <CardContent className="px-4 py-2 space-y-4">
+ <div className="flex flex-col items-center">
+ <span className="text-l text-gray-600">Subscribers</span>
+ <span className="font-semibold">{subscriberCount.toLocaleString()}</span>
+ </div>
+ <div className="flex flex-col items-center">
+ <span className="text-l text-gray-600">Videos</span>
+ <span className="font-semibold">{videoCount}</span>
+ </div>
+ <div className="flex flex-col items-center">
+ <span className="text-l text-gray-600">Next Milestone</span>
+ <span className="font-semibold">{nextMilestone}</span>
+ <div className="flex justify-center items-center">
+ <span className="text-sm text-gray-600 px-2">{nextMilestoneDays} days</span>
+ <span className="text-sm text-gray-600 px-2">{nextMilestoneDate}</span>
+ </div>
+
+ </div>
+ </CardContent>
+ </Card>
+ )
+}
send patches to the email below
yukais@pinapelz.com
include the subject [PATCH repo_name]
pinapelz.com
homepage