use ratatui_core::{buffer::Buffer, layout::{Margin, Rect}, style::Styled, widgets::Widget};
use ratatui_widgets::{block::Block, borders::Borders};
use yazi_config::THEME;
use yazi_core::Core;

pub(crate) struct Body<'a> {
	core:   &'a Core,
	border: bool,
}

impl<'a> Body<'a> {
	pub(crate) fn new(core: &'a Core, border: bool) -> Self { Self { core, border } }
}

impl Widget for Body<'_> {
	fn render(self, area: Rect, buf: &mut Buffer) {
		let confirm = &self.core.confirm;

		// Inner area
		let inner = area.inner(Margin::new(1, 0));

		// Border
		let block = if self.border {
			Block::new().borders(Borders::BOTTOM).border_style(THEME.confirm.border.get())
		} else {
			Block::new()
		};

		confirm
			.body
			.clone()
			.alignment(ratatui_core::layout::Alignment::Center)
			.block(block)
			.style(THEME.confirm.body.get().derive(Styled::style(&confirm.body)))
			.render(inner, buf);
	}
}
