package util

import "encoding/json"

type Card struct {
	Config   CardConfig    `json:"config"`
	Header   CardHeader    `json:"header"`
	Elements []CardElement `json:"elements"`
}

type CardConfig struct {
	WideScreenMode bool `json:"wide_screen_mode"`
}

type CardHeader struct {
	Title       CardText      `json:"title"`
	TextTagList []CardTextTag `json:"text_tag_list"`
	Template    string        `json:"template"`
}

type CardText struct {
	Tag     string `json:"tag"`
	Content string `json:"content"`
}

type CardTextTag struct {
	Tag   string   `json:"tag"`
	Text  CardText `json:"text"`
	Color string   `json:"color"`
}

type CardElement = any

type CardMarkdownElement struct {
	Tag     string `json:"tag"`
	Content string `json:"content"`
}

type CardCollapsiblePanelElement struct {
	Tag      string            `json:"tag"`
	Expanded bool              `json:"expanded"`
	Header   CardElementHeader `json:"header"`
	Elements []CardElement     `json:"elements"`
}

type CardElementHeader struct {
	Title CardText `json:"title"`
}

func RenderCard(card Card) (string, error) {
	data, err := json.Marshal(card)
	if err != nil {
		return "", err
	}
	return string(data), nil
}
