feat(render): M2 — React 渲染内核 + 布局画廊(playground)

- core 新增 render 子路径(vibe-registry/render):PageView + WidgetView + LayoutGallery
- layout 注册项支持 render 实现;缺省兜底 DefaultLayout
- widget 注册项 component 挂真实 React 组件
- PageBlockDecl 增加 slot 字段(块落在布局哪个槽位)
- playground:admin 布局真实骨架 + 组件 + 订单页,dev 预览 + 生产构建通过
- 全量回归:core/qa-orchestrator/playground typecheck 全绿
This commit is contained in:
hellow-da-sb
2026-09-03 00:59:31 +08:00
parent 8c93bde5f6
commit 2277d55ac9
16 changed files with 1628 additions and 4 deletions
+44
View File
@@ -0,0 +1,44 @@
/**
* playground 集中注册:widget 挂真实组件,layout 挂真实骨架
* 这就是"项目侧注册"的完整形态 —— 之后 AI 生成页面只用 id,不碰实现
*/
import { registerLayout, registerWidget } from 'vibe-registry'
import { AdminLayout } from './layouts/admin.tsx'
import { PageHeader, DataTable, NavMenu } from './widgets.tsx'
// ── 布局注册(带真实渲染骨架)──────────────────────────────
registerLayout({
kind: 'layout',
id: 'admin',
slots: ['sidebar', 'header', 'content', 'footer'],
description: '后台管理骨架',
render: AdminLayout,
preview: {
title: 'Admin · 后台管理',
demoBlocks: [
{ slot: 'sidebar', widget: 'nav-menu', props: { items: [{ label: '订单', active: true }, { label: '商品' }] } },
{ slot: 'header', widget: 'page-header', props: { title: '订单管理', subtitle: '全部订单' } },
{ slot: 'content', widget: 'data-table' },
],
},
})
// ── widget 注册(挂真实组件)──────────────────────────────
registerWidget({
kind: 'widget',
id: 'page-header',
component: PageHeader,
description: '页头(标题 + 副标题)',
})
registerWidget({
kind: 'widget',
id: 'nav-menu',
component: NavMenu,
description: '侧栏导航菜单',
})
registerWidget({
kind: 'widget',
id: 'data-table',
component: DataTable,
description: '通用数据表格(列定义来自声明 props)',
})