1use bevy_asset::prelude::*;
2use bevy_color::prelude::*;
3use bevy_ecs::prelude::*;
4use bevy_image::prelude::*;
5use bevy_ui::prelude::*;
6
7use crate::View;
8
9pub trait BackgroundView: View {
11 fn background_node(&mut self) -> &mut BackgroundStyle;
13
14 fn background_color(mut self, color: impl Into<Color>) -> Self {
16 self.background_node().color = BackgroundColor(color.into());
17 self
18 }
19
20 fn background_image(mut self, image: Handle<Image>) -> Self {
22 self.background_node().image = ImageNode {
23 image,
24 ..Default::default()
25 };
26 self
27 }
28}
29
30#[derive(Bundle, Debug, Clone, Default)]
32pub struct BackgroundStyle {
33 color: BackgroundColor,
35 image: ImageNode,
37}
38
39impl BackgroundStyle {
40 pub fn button() -> Self {
41 Self {
42 color: BackgroundColor(Srgba::WHITE.into()),
43 image: ImageNode::default(),
44 }
45 }
46}