package main import ( "bytes" "context" "git.dev.alexdunmow.com/block/core/blocks" ) // NumbersCounterBlockMeta defines metadata for the numbers counter block. var NumbersCounterBlockMeta = blocks.BlockMeta{ Key: "numbers_counter", Title: "Numbers Counter", Description: "Big circular numeral badges for stats (e.g. '12 teachers').", Category: blocks.CategoryContent, Source: "kindergarten", } // NumberItem is a single numeral + label pair. type NumberItem struct { Number int Label string } // NumbersData is the renderer input. type NumbersData struct { Items []NumberItem } // NumbersCounterBlock renders the round numeral grid. // Content shape: {items:[{number,label}]}. func NumbersCounterBlock(ctx context.Context, content map[string]any) string { raw := getSlice(content, "items") items := make([]NumberItem, 0, len(raw)) for _, m := range raw { items = append(items, NumberItem{ Number: getInt(m, "number", 0), Label: getString(m, "label"), }) } data := NumbersData{Items: items} var buf bytes.Buffer _ = numbersCounterComponent(data).Render(ctx, &buf) return buf.String() }