Skip to main content

yggdrasil/components/
mod.rs

1//! 组件模块 —— 按「可复用层级」组织,从通用到特定。
2//!
3//! 【导航】写 `rsx!` 前先查这里,避免手搓重复的 Tailwind class:
4//! - 要 class 常量或通用原子(按钮 / 输入 / 徽章 / 空状态)? → **原子层**
5//! - 要页面外壳或全局导航?                              → **布局层**
6//! - 要特定页面域(文章 / 评论 / 代码运行)的组件?       → **feature 层**
7//! - 数据加载占位?                                      → **骨架屏层**
8//!
9//! 层级越靠上越通用、对 app 其余部分依赖越少;feature 层组件绑定各自的
10//! `models` / `Route` / `api`,不应跨页面域复用。同一类样式或结构只允许
11//! 存在一个实现 —— 新增前先在本模块对应层查找,缺功能就扩展现有组件,
12//! 不要在旁边另起一套(散落的内联 class 是被禁止的反模式)。
13
14// ========= 原子层 (atoms) — 跨页面复用,无 app 领域依赖 =========
15// class 常量与最基础的展示 / 输入原子。写新页面前先扫这一层。
16
17/// 空状态组件(无数据时的插画配图 + 文案)。
18pub mod empty_state;
19/// 表单控件(FormInput / FormSelect / AlertBox / …)与 INPUT class 常量。
20pub mod forms;
21/// 通用 UI 原子与全部 class 常量(卡片 / 按钮 / 徽章 / 分页 / spinner / checkbox)。
22/// 任何 inline Tailwind class 字符串上线前,先在此查是否已有常量。
23pub mod ui;
24
25// ========= 骨架屏层 (skeletons) — 纯展示占位 =========
26// 内部仅依赖原子层的 SkeletonBox + ADMIN class;不含业务逻辑。
27
28/// 各页面数据加载期间的占位组件集合,以及通用骨架原子。
29pub mod skeletons;
30
31// ========= 布局层 (layouts) — 页面外壳与全局导航 =========
32
33/// 后台布局组件(侧栏 + 内容区 + admin 路由骨架屏切换)。
34pub mod admin_layout;
35/// 页脚与回到顶部按钮组件。
36pub mod footer;
37/// 前台布局组件(header + footer + 路由骨架屏切换)。
38pub mod frontend_layout;
39/// 顶部导航栏组件。
40pub mod header;
41/// 导航项生成组件。
42pub mod nav;
43
44// ========= feature 层 — 绑定特定领域 (models / Route / api) =========
45// 按页面域划分;跨域复用前先考虑原子层。
46
47/// 素材选择与上传 modal 组件。
48pub mod assets;
49/// 代码运行器组件(可运行代码块 UI)。
50pub mod code_runner;
51/// 评论组件(列表 / 表单 / 待审核项)。
52pub mod comments;
53/// 文章详情页组件(标题 / 正文 / 目录 / 面包屑 / 相邻导航)。
54pub mod post;
55/// 文章列表卡片组件。
56pub mod post_card;
57/// SQL 查询结果表格组件(SQL 控制台专用)。
58pub mod sql_result_table;