package main

import (
	"bytes"
	"context"

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

// HeroBlockMeta defines metadata for the hero section block.
var HeroBlockMeta = blocks.BlockMeta{
	Key:             "hero",
	Title:           "Hero Section",
	Description:     "Large hero section with headline and optional CTA",
	Source: "gotham",
}

// HeroBlock renders a hero section.
// Content expects: {"headline": "...", "subheadline": "...", "background_url": "...", "cta_text": "...", "cta_url": "..."}
func HeroBlock(ctx context.Context, content map[string]any, _ []string) string {
	data := HeroData{
		Headline:      getString(content, "headline"),
		Subheadline:   getString(content, "subheadline"),
		BackgroundURL: getString(content, "background_url"),
		CTAText:       getString(content, "cta_text"),
		CTAURL:        getString(content, "cta_url"),
	}

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

// HeroData contains data for the hero component.
type HeroData struct {
	Headline      string
	Subheadline   string
	BackgroundURL string
	CTAText       string
	CTAURL        string
}
