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 / learn / LearnPage.js
presto-player / src / admin / dashboard / pages / learn Last commit date
ChapterCard.js 2 months ago LearnPage.js 2 months ago LearnPageSkeleton.js 2 months ago ProgressPill.js 2 months ago ScreenshotDialog.js 2 months ago SetupCompleteCard.js 2 months ago StepItem.js 2 months ago useLearnProgress.js 2 months ago
LearnPage.js
83 lines
1 import { useMemo } from '@wordpress/element';
2 import { Container } from '@bsf/force-ui';
3 import { BookOpen } from 'lucide-react';
4 import ChapterCard from './ChapterCard';
5 import LearnPageSkeleton from './LearnPageSkeleton';
6 import SetupCompleteCard from './SetupCompleteCard';
7 import useLearnProgress from './useLearnProgress';
8
9 const { __ } = wp.i18n;
10
11 const LearnPage = () => {
12 const { chapters, isLoading, setStepCompleted } = useLearnProgress();
13
14 const showCelebration = useMemo( () => {
15 const gettingStarted = chapters.find(
16 ( c ) => c.id === 'getting-started'
17 );
18 if ( ! gettingStarted || ! gettingStarted.steps?.length ) {
19 return false;
20 }
21 return gettingStarted.steps.every( ( s ) => s.completed );
22 }, [ chapters ] );
23
24 if ( isLoading ) {
25 return <LearnPageSkeleton />;
26 }
27
28 return (
29 <Container
30 containerType="flex"
31 direction="column"
32 gap="md"
33 className="p-8 max-w-4xl mx-auto w-full"
34 >
35 { /* Header */ }
36 <Container.Item>
37 <h1 className="m-0 text-2xl font-semibold text-text-primary">
38 { __( 'Learn', 'presto-player' ) }
39 </h1>
40 <p className="m-0 mt-2 text-sm text-text-secondary leading-relaxed max-w-3xl">
41 { __(
42 'Follow these chapters to set up your video player and get the most out of Presto Player — learn how to add videos, brand the player, embed, track analytics, and unlock advanced features.',
43 'presto-player'
44 ) }
45 </p>
46 </Container.Item>
47
48 { /* Celebration banner — shown when Getting Started chapter is done */ }
49 { showCelebration && (
50 <Container.Item>
51 <SetupCompleteCard />
52 </Container.Item>
53 ) }
54
55 { /* Chapters */ }
56 { chapters.length === 0 ? (
57 <Container.Item>
58 <div className="flex flex-col items-center justify-center py-16 gap-3 text-text-secondary">
59 <BookOpen className="w-10 h-10 text-text-tertiary" />
60 <p className="m-0 text-sm">
61 { __(
62 'No learn chapters available yet.',
63 'presto-player'
64 ) }
65 </p>
66 </div>
67 </Container.Item>
68 ) : (
69 chapters.map( ( chapter ) => (
70 <Container.Item key={ chapter.id }>
71 <ChapterCard
72 chapter={ chapter }
73 onStepToggle={ setStepCompleted }
74 />
75 </Container.Item>
76 ) )
77 ) }
78 </Container>
79 );
80 };
81
82 export default LearnPage;
83