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:
@@ -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)',
|
||||
})
|
||||
Reference in New Issue
Block a user