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 / SettingsSkeleton.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
SettingsSkeleton.js
99 lines
1 import { Skeleton, Sidebar, Menu } from '@bsf/force-ui';
2 import SettingsSectionSkeleton from './SettingsSectionSkeleton';
3
4 // Mirrors the real sidebar shape (Settings.js): grouped Menu.Lists with
5 // headings + a standalone Menu.List preceded by a Menu.Separator. Item counts
6 // match the real nav (General: 7, Integrations: 5, Performance: 1) so the
7 // skeleton settles into the real layout without a height jump.
8 const SIDEBAR_GROUPS = [
9 {
10 headingWidth: 'w-14',
11 itemWidths: [
12 'w-[110px]',
13 'w-[100px]',
14 'w-[130px]',
15 'w-[90px]',
16 'w-[110px]',
17 'w-[100px]',
18 'w-[120px]',
19 ],
20 },
21 {
22 headingWidth: 'w-20',
23 itemWidths: [
24 'w-[130px]',
25 'w-[90px]',
26 'w-[120px]',
27 'w-[100px]',
28 'w-[110px]',
29 ],
30 },
31 {
32 headingWidth: 'w-24',
33 itemWidths: [ 'w-[110px]' ],
34 },
35 ];
36
37 const STANDALONE_ITEM_WIDTH = 'w-[80px]';
38
39 // Menu.Item adds `[&>*:not(svg)]:m-1` to every non-SVG child. Override the
40 // icon skeleton's margin to match the real Lucide icon's `[&>svg]:m-1.5`
41 // outer box so the skeleton rows don't render 4px shorter than real rows.
42 const MenuItemSkeleton = ( { width } ) => (
43 <Menu.Item disabled>
44 <Skeleton className="!m-1.5 size-5 shrink-0 rounded" />
45 <div className="flex-1">
46 <Skeleton className={ `${ width } h-4 rounded-md` } />
47 </div>
48 </Menu.Item>
49 );
50
51 const SettingsSkeleton = ( { cards = 1 } ) => (
52 <div className="flex min-h-[calc(100vh-var(--presto-admin-bar-h)-var(--presto-navbar-h))]">
53 <Sidebar
54 borderOn={ false }
55 collapsible={ false }
56 collapsed={ false }
57 className="!w-[240px] !min-w-[240px] shrink-0 !p-3 !h-auto sticky top-[calc(var(--presto-admin-bar-h)+var(--presto-navbar-h))] max-h-[calc(100vh-var(--presto-admin-bar-h)-var(--presto-navbar-h))] overflow-y-auto"
58 >
59 <Sidebar.Body className="grow">
60 <Menu size="md" className="p-0 w-full gap-2">
61 { SIDEBAR_GROUPS.map( ( group, groupIndex ) => (
62 <Menu.List
63 key={ groupIndex }
64 open
65 heading={
66 <Skeleton
67 className={ `${ group.headingWidth } h-3 rounded-md` }
68 />
69 }
70 >
71 { group.itemWidths.map( ( width, itemIndex ) => (
72 <MenuItemSkeleton key={ itemIndex } width={ width } />
73 ) ) }
74 </Menu.List>
75 ) ) }
76
77 <Menu.Separator />
78
79 <Menu.List open>
80 <MenuItemSkeleton width={ STANDALONE_ITEM_WIDTH } />
81 </Menu.List>
82 </Menu>
83 </Sidebar.Body>
84 </Sidebar>
85
86 <div className="flex-1 min-w-0 bg-background-secondary p-6">
87 <div className="max-w-3xl w-full mx-auto flex flex-col gap-6">
88 <div className="w-full flex items-center justify-between">
89 <Skeleton className="h-6 w-32 rounded-md" />
90 <Skeleton className="h-8 w-16 rounded-md" />
91 </div>
92 <SettingsSectionSkeleton cards={ cards } />
93 </div>
94 </div>
95 </div>
96 );
97
98 export default SettingsSkeleton;
99