PluginProbe ʕ •ᴥ•ʔ
Presto Player / 4.3.2
Presto Player v4.3.2
4.3.2 4.3.1 4.3.0 4.2.4 4.2.3 4.2.2 4.2.0 4.2.1 trunk 1.10.0 1.10.1 1.10.2 1.11.0 1.12.0 1.13.0 1.14.0 1.14.1 1.5.10 1.5.11 1.5.12 1.5.13 1.5.14 1.5.15 1.5.5 1.5.6 1.5.7 1.5.8 1.5.9 1.6.0 1.6.1 1.6.10 1.6.11 1.6.12 1.6.13 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.7 1.6.8 1.6.9 1.7.0 1.7.1 1.7.2 1.8.0 1.8.1 1.8.2 1.8.3 1.8.4 1.8.5 1.8.6 1.9.0 1.9.1 1.9.10 1.9.11 1.9.12 1.9.13 1.9.14 1.9.2 1.9.3 1.9.4 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.0.0 2.0.1 2.0.10 2.0.11 2.0.12 2.0.13 2.0.14 2.0.15 2.0.16 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.0.8 2.0.9 2.1.0 2.2.0 2.2.1 2.2.2 2.2.3 2.2.3-beta1 2.3.0 2.3.1 2.3.2 2.3.3 3.0.0 3.0.0-beta1 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.0.6 3.0.7 3.0.8 3.1.0 3.1.1 3.1.2 3.1.3 4.0.0 4.0.1 4.0.2 4.0.3 4.0.4 4.0.5 4.0.6 4.0.7 4.0.8 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4
presto-player / src / admin / dashboard / pages / Dashboard.js
presto-player / src / admin / dashboard / pages Last commit date
learn 2 months ago settings 2 months ago Analytics.js 2 months ago AnalyticsDetail.js 2 months ago Dashboard.js 2 months ago Emails.js 1 month ago Learn.js 2 months ago MediaHub.js 1 month ago Onboarding.js 1 month ago Settings.js 2 months ago UserAnalyticsDetail.js 2 months ago
Dashboard.js
63 lines
1 import React, { useState, useRef } from "react";
2 import { Container } from "@bsf/force-ui";
3 import WelcomeBanner from "../components/WelcomeBanner";
4 import VideoModal from "../components/VideoModal";
5 import ExtendPlugins from "../components/ExtendPlugins";
6 import QuickAccess from "../components/QuickAccess";
7 import TopPerformingMedia from "../components/TopPerformingMedia";
8 import UpgradeToPro from "../components/UpgradeToPro";
9 import EngagementChart, { Chart } from "../components/EngagementChart";
10 import useTopPerforming from "../hooks/useTopPerforming";
11 import DashboardSkeleton from "../components/Skeletons/DashboardSkeleton";
12
13 const Dashboard = () => {
14 const [isVideoOpen, setIsVideoOpen] = useState(false);
15 const videoTriggerRef = useRef(null);
16
17 const { data: topPerformingData, isLoading: isTopPerformingLoading } =
18 useTopPerforming({ mediaPerPage: 5 });
19
20 if (isTopPerformingLoading) {
21 return <DashboardSkeleton />;
22 }
23
24 return (
25 <Container className="p-8" gap="md" direction="column">
26 <Container gap="md" direction={{ sm: "column", md: "row" }}>
27 {/* Left Card */}
28 <div className="relative flex flex-col gap-6 flex-1 min-w-0">
29 <WelcomeBanner onVideoOpen={setIsVideoOpen} videoTriggerRef={videoTriggerRef} />
30
31 <EngagementChart showAllTimeSummary>
32 <Chart>
33 <Container.Item className="flex items-center justify-between w-full p-1">
34 <Chart.Tabs />
35 <Chart.DateFilter />
36 </Container.Item>
37 <Container.Item className="w-full flex items-stretch justify-between gap-1 bg-background-secondary rounded-lg p-1">
38 <Chart.AreaChart />
39 <Chart.Summary />
40 </Container.Item>
41 </Chart>
42 </EngagementChart>
43
44 <ExtendPlugins layout="inline" />
45 </div>
46
47 {/* Right Card */}
48 <Container.Item className="max-w-full w-full md:max-w-[33%]">
49 <Container direction="column" gap="md">
50 <UpgradeToPro />
51 <TopPerformingMedia data={topPerformingData} />
52 <QuickAccess />
53 </Container>
54 </Container.Item>
55 </Container>
56
57 <VideoModal isOpen={isVideoOpen} onClose={() => setIsVideoOpen(false)} triggerRef={videoTriggerRef} />
58 </Container>
59 );
60 };
61
62 export default Dashboard;
63