PluginProbe ʕ •ᴥ•ʔ
Presto Player / 4.3.2
Presto Player v4.3.2
4.4.0 4.3.3 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 / Skeletons / SettingsSectionSkeleton.js
presto-player / src / admin / dashboard / components / Skeletons Last commit date
AnalyticsDetailSkeleton.js 3 months ago AnalyticsPageSkeleton.js 3 months ago DashboardSkeleton.js 3 months ago MediaHubPageSkeleton.js 2 months ago MediaHubRowSkeleton.js 2 months ago SettingsSectionSkeleton.js 3 months ago SettingsSkeleton.js 3 months ago UserAnalyticsDetailSkeleton.js 3 months ago
SettingsSectionSkeleton.js
56 lines
1 import { Skeleton } from '@bsf/force-ui';
2
3 const SectionSkeleton = ( { children } ) => (
4 <div className="bg-white p-6 box-border shadow-sm rounded-xl flex flex-col gap-4">
5 { children }
6 </div>
7 );
8
9 const CardHeader = () => (
10 <div className="flex flex-col gap-1">
11 <Skeleton className="h-5 w-28 rounded-md" />
12 <Skeleton className="h-3 w-56 rounded-md" />
13 </div>
14 );
15
16 const FieldRow = ( { labelWidth = 'w-24' } ) => (
17 <div className="flex flex-col gap-2">
18 <Skeleton className={ `h-3 ${ labelWidth } rounded-md` } />
19 <Skeleton className="h-9 w-full rounded-md" />
20 </div>
21 );
22
23 const ToggleRow = () => (
24 <div className="flex items-center justify-between gap-4">
25 <div className="flex flex-col gap-1">
26 <Skeleton className="h-4 w-32 rounded-md" />
27 <Skeleton className="h-3 w-48 rounded-md" />
28 </div>
29 <Skeleton className="h-5 w-9 rounded-full shrink-0" />
30 </div>
31 );
32
33 const GenericCard = () => (
34 <SectionSkeleton>
35 <CardHeader />
36 <FieldRow labelWidth="w-20" />
37 <FieldRow labelWidth="w-28" />
38 <ToggleRow />
39 </SectionSkeleton>
40 );
41
42 // `cards` mirrors the real page's <SectionCard> count so the skeleton doesn't
43 // visually over- or under-claim the eventual layout. Almost every settings
44 // page renders exactly one SectionCard — default = 1. Pages that genuinely
45 // render more (e.g. EmailCapture with its optional CsvExportSection) opt in
46 // via the `skeletonCards` field on their SETTINGS_PAGES entry.
47 const SettingsSectionSkeleton = ( { cards = 1 } ) => (
48 <div className="flex flex-col gap-6">
49 { Array.from( { length: Math.max( 1, cards ) } ).map( ( _, index ) => (
50 <GenericCard key={ index } />
51 ) ) }
52 </div>
53 );
54
55 export default SettingsSectionSkeleton;
56