PluginProbe ʕ •ᴥ•ʔ
Presto Player / trunk
Presto Player vtrunk
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 1 month ago LearnPage.js 1 month ago LearnPageSkeleton.js 1 month ago ProgressPill.js 1 month ago ScreenshotDialog.js 1 month ago SetupCompleteCard.js 1 month ago StepItem.js 1 month ago useLearnProgress.js 1 month 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