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 / components / ChartEmptyState.js
presto-player / src / admin / dashboard / components Last commit date
Emails 1 month ago EngagementChart 2 months ago MediaHub 1 month ago Onboarding 2 months ago Popup 2 months ago Skeletons 1 month ago WhatsNew 2 months ago charts 2 months ago test 2 months ago AdminMenuSync.js 2 months ago ChartEmptyState.js 2 months ago ChooseDate.js 2 months ago ColorPicker.js 2 months ago ExtendPlugins.js 2 months ago Filters.js 2 months ago Link.js 2 months ago Navbar.js 1 month ago NoFound.js 2 months ago PageHeader.js 2 months ago PluginRecommendations.js 2 months ago PostScheduleField.js 2 months ago PrestoPlayerIcon.js 2 months ago ProGateOverlay.js 2 months ago QuickAccess.js 2 months ago RankedTable.js 2 months ago StatCard.js 2 months ago TopMedia.js 2 months ago TopPerformingMedia.js 2 months ago TopUsers.js 2 months ago TruncatedTitle.js 2 months ago UpgradeNotice.js 2 months ago UpgradeToPro.js 2 months ago VideoModal.js 2 months ago WelcomeBanner.js 2 months ago
ChartEmptyState.js
145 lines
1 import { Text } from "@bsf/force-ui";
2 const { __ } = wp.i18n;
3
4 const FileVideoIcon = () => (
5 <svg
6 width="24"
7 height="24"
8 viewBox="0 0 24 24"
9 fill="none"
10 xmlns="http://www.w3.org/2000/svg"
11 aria-hidden="true"
12 >
13 <path
14 d="M14.5 2H6C5.46957 2 4.96086 2.21071 4.58579 2.58579C4.21071 2.96086 4 3.46957 4 4V20C4 20.5304 4.21071 21.0391 4.58579 21.4142C4.96086 21.7893 5.46957 22 6 22H18C18.5304 22 19.0391 21.7893 19.4142 21.4142C19.7893 21.0391 20 20.5304 20 20V7.5L14.5 2Z"
15 stroke="#111827"
16 strokeWidth="1.25"
17 strokeLinecap="round"
18 strokeLinejoin="round"
19 />
20 <path
21 d="M14.5 2H6C5.46957 2 4.96086 2.21071 4.58579 2.58579C4.21071 2.96086 4 3.46957 4 4V20C4 20.5304 4.21071 21.0391 4.58579 21.4142C4.96086 21.7893 5.46957 22 6 22H18C18.5304 22 19.0391 21.7893 19.4142 21.4142C19.7893 21.0391 20 20.5304 20 20V7.5L14.5 2Z"
22 stroke="url(#paint0_linear_chart_empty)"
23 strokeWidth="1.25"
24 strokeLinecap="round"
25 strokeLinejoin="round"
26 />
27 <path
28 d="M14 2V8H20"
29 stroke="#111827"
30 strokeWidth="1.25"
31 strokeLinecap="round"
32 strokeLinejoin="round"
33 />
34 <path
35 d="M14 2V8H20"
36 stroke="url(#paint1_linear_chart_empty)"
37 strokeWidth="1.25"
38 strokeLinecap="round"
39 strokeLinejoin="round"
40 />
41 <path
42 d="M10 11L15 14L10 17V11Z"
43 stroke="#111827"
44 strokeWidth="1.25"
45 strokeLinecap="round"
46 strokeLinejoin="round"
47 />
48 <path
49 d="M10 11L15 14L10 17V11Z"
50 stroke="url(#paint2_linear_chart_empty)"
51 strokeWidth="1.25"
52 strokeLinecap="round"
53 strokeLinejoin="round"
54 />
55 <defs>
56 <linearGradient
57 id="paint0_linear_chart_empty"
58 x1="12"
59 y1="2"
60 x2="12"
61 y2="22"
62 gradientUnits="userSpaceOnUse"
63 >
64 <stop stopColor="#9A20F8" />
65 <stop offset="1" stopColor="#3058E5" />
66 </linearGradient>
67 <linearGradient
68 id="paint1_linear_chart_empty"
69 x1="17"
70 y1="2"
71 x2="17"
72 y2="8"
73 gradientUnits="userSpaceOnUse"
74 >
75 <stop stopColor="#9A20F8" />
76 <stop offset="1" stopColor="#3058E5" />
77 </linearGradient>
78 <linearGradient
79 id="paint2_linear_chart_empty"
80 x1="12.5"
81 y1="11"
82 x2="12.5"
83 y2="17"
84 gradientUnits="userSpaceOnUse"
85 >
86 <stop stopColor="#9A20F8" />
87 <stop offset="1" stopColor="#3058E5" />
88 </linearGradient>
89 </defs>
90 </svg>
91 );
92
93 /**
94 * Shared empty state for analytics/engagement charts and stats tables.
95 * Keeps the icon, copy, and layout identical across the dashboard so every
96 * "no data" moment feels like the same product.
97 *
98 * Pass `className` to control the container height/padding per chart — the
99 * engagement chart gets a tall 256px placeholder while the Top Performing
100 * widget gets a compact 112px one. Pass `description={null}` to hide the
101 * secondary line in tight spaces (e.g. the retention mini-chart).
102 *
103 * Pass `proGated` for charts that only fill in for Pro users. When the
104 * current user isn't licensed, an "Unlock with Pro." sentence is appended
105 * to the description so the empty state reads as gated rather than empty.
106 * The phrase is intentionally plain text (no link) — the page already has
107 * upgrade banners and CTAs, and stacking another clickable nudge here was
108 * deemed too noisy.
109 */
110 const ChartEmptyState = ({
111 title = __("No Stats Available", "presto-player"),
112 description = __(
113 "You'll find detailed insights here to help you monitor and manage your video performance.",
114 "presto-player"
115 ),
116 className = "",
117 proGated = false,
118 }) => {
119 const isPremium = !!window?.prestoPlayer?.isPremium;
120 const showUpsell = proGated && !isPremium;
121 const showText = !!description || showUpsell;
122
123 return (
124 <div
125 className={`flex flex-col gap-4 items-center justify-center text-center px-1 ${className}`}
126 >
127 <FileVideoIcon />
128 <div className="flex flex-col gap-1 items-center">
129 <Text size="sm" className="font-medium text-text-primary m-0">
130 {title}
131 </Text>
132 {showText && (
133 <Text size="sm" className="font-normal text-text-tertiary m-0">
134 {description}
135 {description && showUpsell ? " " : null}
136 {showUpsell && __("Unlock with Pro.", "presto-player")}
137 </Text>
138 )}
139 </div>
140 </div>
141 );
142 };
143
144 export default ChartEmptyState;
145