iter(g265): 新增布局骨架组件 layout

This commit is contained in:
HIsheR
2026-10-26 22:48:04 +08:00
parent 617269166a
commit 71cff84932
12 changed files with 299 additions and 12 deletions
+30 -1
View File
@@ -1,6 +1,6 @@
# @ui-arch 组件库 Agent 文档(无图形版)
> 自动生成于 2026-10-26T14:26:38.557Z,数据源:各包 ua.manifest.json,勿手改。人类版文档站:apps/docs/index.html。
> 自动生成于 2026-10-26T14:47:27.279Z,数据源:各包 ua.manifest.json,勿手改。人类版文档站:apps/docs/index.html。
> 组件 = 普通函数,传 props 返回 DOM;状态用 signal 双向绑定:读 signal() 写 signal(v)。
## 快速上手
@@ -2179,6 +2179,34 @@ inputTag({ value: tags, max: 5, onChange: (list) => console.log(list.length) })
现场演示:apps/docs/demo.html#sec-inputtag
### layout — 布局骨架 Layout
参数:
- header:unknown —— 页头内容(文案 / 节点);缺省不渲染页头
- sider:unknown —— 侧栏内容(通常是 menu);缺省则内容区独占整行
- footer:unknown —— 页脚内容;缺省不渲染页脚
- siderWidth:number —— 侧栏展开宽度(px);缺省 220
- collapsible:boolean —— 是否可折叠:true 时页头左侧出现折叠开关
- collapsed:Signal<boolean> —— 折叠态信号;传入则双向绑定(外部可读数),缺省内部自管
- sticky:boolean —— 页头是否吸顶;缺省 false(长内容里建议打开)
示例:
```
layout({ header: '控制台', sider: menu({ items }), footer: '© 2026', collapsible: true, sticky: true }, card({ title: '内容区' }, ...))
```
手把手:
1. 把整页交给 layout:children 就是内容区,页头 / 侧栏 / 页脚用 header / sider / footer 三个入参一次给全
2. 侧栏通常放 menu 或 anchor,宽度用 siderWidth 调(缺省 220px,够放四项中文菜单)
3. 需要折叠时传 collapsible: true,页头左侧自动出现开关;想把折叠态接到别处(比如只显示图标栏)就传 collapsed 信号读它的值
4. 长内容页面打开 sticky,页头吸顶;内容区自己滚动,不会把整页撑高
5. 只要内容不要骨架时省略 header / sider / footer:不套多余容器,内容区独占整行
现场演示:apps/docs/demo.html#sec-layout
API 速览:
- button(props):按钮,variant 三档视觉强度,disabled / loading 支持布尔或信号动态同步(loading 转圈并禁点),onClick 点击回调
@@ -2259,6 +2287,7 @@ API 速览:
- kbd(props):键盘按键标记,键帽样式展示单个按键或组合键(多键以 + 连接),用于快捷键提示
- highlight(props):关键词高亮,命中片段包 mark(大小写不敏感全部命中),text / keyword 支持信号响应式刷新
- inputTag(props):标签输入,输入后回车 / 逗号成标签、chip 可单个删除、空框退格删末个,value 信号双向绑定,max 满额自动禁输
- layout(props, ...children):布局骨架,页头 / 侧栏 / 内容 / 页脚四区一次成型,侧栏可折叠(collapsed 信号双向绑定)
一行用法: