feat(render): 布局模板画廊 —— live 缩略预览 + 点选完整预览

- LayoutGallery 升级:每模板卡片 = 真实渲染缩略图(scale 0.4),点选看完整预览
- demoPageFrom:由 preview.demoBlocks 构造可渲染 demo 页(预览即真实)
- playground 新增 dashboard 布局 + stat-grid widget;app-shell 验证 DefaultLayout 兜底
- 三个模板(admin/dashboard/app-shell)全部 live 渲染验证通过
This commit is contained in:
hellow-da-sb
2026-09-03 01:13:55 +08:00
parent 2277d55ac9
commit 21c8764993
5 changed files with 243 additions and 39 deletions
+30
View File
@@ -70,3 +70,33 @@ export function NavMenu({ items = [] }: { items?: Array<{ label: string; active?
),
)
}
/** 统计卡片(仪表盘用) */
export function StatCard({
label,
value,
delta,
}: {
label?: string
value?: unknown
delta?: string
}): React.ReactElement {
return React.createElement(
'div',
{ style: { border: '1px solid #e5e7eb', borderRadius: 8, padding: 16, background: '#fff' } },
React.createElement('div', { style: { fontSize: 12, color: '#6b7280' } }, label ?? ''),
React.createElement('div', { style: { fontSize: 24, fontWeight: 700, margin: '4px 0' } }, String(value ?? '-')),
delta ? React.createElement('div', { style: { fontSize: 12, color: delta.startsWith('-') ? '#dc2626' : '#16a34a' } }, delta) : null,
)
}
/** 指标格子容器(dashboard 布局的内容区 demo 用) */
export function StatGrid({ stats = [] }: { stats?: Array<{ label?: string; value?: unknown; delta?: string }> }): React.ReactElement {
return React.createElement(
'div',
{ style: { display: 'grid', gridTemplateColumns: 'repeat(auto-fit, minmax(160px, 1fr))', gap: 12 } },
...(stats as Array<{ label?: string; value?: unknown; delta?: string }>).map((s, i) =>
React.createElement(StatCard, { key: i, label: s.label, value: s.value, delta: s.delta }),
),
)
}