Skip to main content

yggdrasil/components/skeletons/
settings_admin_skeleton.rs

1//! 后台设置骨架屏
2//!
3//! 与设置页同一版式:左侧分区目录、右侧标题与分区卡片。根节点沿用页面的内部滚动
4//! 容器类,撑满主内容区高度。
5
6use leptos::prelude::*;
7
8use crate::components::skeletons::atoms::{AdminPageHeadSkeleton, SkeletonBox};
9
10/// 后台设置骨架屏组件。
11#[component]
12pub fn SettingsAdminSkeleton() -> impl IntoView {
13    view! {
14        <div class="settings-page" aria-hidden="true">
15            <div class="settings-layout">
16                <div class="settings-nav">
17                    {(0..9)
18                        .map(|_| view! { <SkeletonBox class="h-[30px] w-full rounded-[7px]"/> })
19                        .collect_view()}
20                </div>
21                <div class="settings-main">
22                    <AdminPageHeadSkeleton title_width="w-16" subtitle_width="w-80"/>
23                    {(0..3)
24                        .map(|_| {
25                            view! {
26                                <div class="settings-slot">
27                                    <div class="admin-panel settings-card">
28                                        <div class="settings-card-head">
29                                            <div>
30                                                <SkeletonBox class="h-4 w-20 rounded"/>
31                                                <SkeletonBox class="h-3 w-64 rounded mt-2"/>
32                                            </div>
33                                        </div>
34                                        <div class="settings-rows">
35                                            {(0..2)
36                                                .map(|_| {
37                                                    view! {
38                                                        <div class="settings-row">
39                                                            <SkeletonBox class="h-3.5 w-20 rounded"/>
40                                                            <SkeletonBox class="h-9 w-full rounded-lg"/>
41                                                        </div>
42                                                    }
43                                                })
44                                                .collect_view()}
45                                        </div>
46                                    </div>
47                                </div>
48                            }
49                        })
50                        .collect_view()}
51                </div>
52            </div>
53        </div>
54    }
55}