REAL SHOWCASE SOURCEbox-panel-model
1 个文件 · 20 行 · TypeScript
// ===== showcase/src/examples/components/box_panel.ts ===== import { RenderBorder, RenderButton, RenderPageHeader, RenderStackPanel, RenderText, RenderWrapPanel } from 'ds-ui' export function createBoxPanelExample(): RenderStackPanel { const status = new RenderText('RenderBox 提供尺寸、边距和对齐;RenderPanel 在此基础上增加 padding 与子项管理。', { role: 'secondary' }) const specimen = new RenderBorder({ background: 'selected', padding: 16, width: 300, height: 120, margin: 16, horizontalAlignment: 'center', child: new RenderText('width 300 · height 120\nmargin 16 · padding 16', { role: 'title', weight: 'semibold' }) }) const frame = new RenderBorder({ background: 'muted', padding: 12, child: specimen }) const actions = new RenderWrapPanel({ spacing: 8 }) actions.addChild(new RenderButton({ label: '左对齐', onClick: () => { specimen.horizontalAlignment = 'start'; status.text = 'horizontalAlignment = start' } })) actions.addChild(new RenderButton({ label: '居中', variant: 'primary', onClick: () => { specimen.horizontalAlignment = 'center'; status.text = 'horizontalAlignment = center' } })) actions.addChild(new RenderButton({ label: '右对齐', onClick: () => { specimen.horizontalAlignment = 'end'; status.text = 'horizontalAlignment = end' } })) const panel = new RenderStackPanel({ orientation: 'vertical', spacing: 14, crossAxisAlignment: 'stretch' }) panel.addChild(new RenderPageHeader({ title: 'Box / Panel 统一盒模型', description: '所有布局与控件共享同一套尺寸、边距、对齐和内边距语义。' })) panel.addChild(actions) panel.addChild(frame) panel.addChild(status) panel.padding = 24 return panel}