```tsx import { pattern, computed, UI, VNode } from 'commontools'; interface Input { items: Array<{ done: boolean, title: string }> } interface Output { [UI]: VNode } export default pattern(({ items }) => { const stats = computed(() => ({ total: items.length, completed: items.filter(item => item.done).length, pending: items.filter(item => !item.done).length, completionRate: items.length > 0 ? (items.filter(item => item.done).length / items.length) * 100 : 0, })); return { [UI]:
Total: {stats.total}
Done: {stats.completed}
Remaining: {stats.pending}
Progress: {stats.completionRate.toFixed(1)}%
} }) ```