package main

import (
	"bytes"
	"context"

	"git.dev.alexdunmow.com/block/core/blocks"
)

// StatsBlockMeta defines metadata for the stats counter block.
// Stats uses a schema-defined items array, not child blocks.
var StatsBlockMeta = blocks.BlockMeta{
	Key:         "stats",
	Title:       "Stats Counter",
	Description: "Display statistics with labels and values",
	Source:      "gotham",
}

// StatsBlock renders a stats counter grid from content.items array.
func StatsBlock(ctx context.Context, content map[string]any) string {
	items := getSlice(content, "items")
	if len(items) == 0 {
		// Empty state - show placeholder
		var buf bytes.Buffer
		_ = statsEmptyComponent().Render(ctx, &buf)
		return buf.String()
	}

	var stats []StatItem
	for _, item := range items {
		stats = append(stats, StatItem{
			Value: getString(item, "value"),
			Label: getString(item, "label"),
			Icon:  getString(item, "icon"),
		})
	}

	var buf bytes.Buffer
	_ = statsComponent(stats).Render(ctx, &buf)
	return buf.String()
}

// StatItem represents a single statistic.
type StatItem struct {
	Value string
	Label string
	Icon  string
}
