use serde::{Deserialize, Serialize};
use crate::stela::{Image, Motion};
use super::Section;
#[derive(bon::Builder, Debug, Deserialize, Serialize)]
pub struct SectionTiles {
pub tiles: Vec<Tile>,
pub layout: TilesLayout,
}
impl From<SectionTiles> for Section {
fn from(value: SectionTiles) -> Self {
Section::Tiles(value.into())
}
}
#[derive(bon::Builder, Debug, Deserialize, Serialize)]
pub struct Tile {
pub header: Option<String>,
pub subheader: Option<String>,
pub motion: Option<Motion>,
pub image: Option<Image>,
pub body_text: Option<String>,
}
#[derive(Clone, Copy, Debug, Default, Deserialize, Serialize, PartialEq, Eq)]
pub enum TilesLayout {
HorizontalList,
VerticalList,
Grid,
#[default]
#[serde(other)]
Unknown,
}