1use bevy_color::prelude::*;
2use bevy_ecs::prelude::*;
3use bevy_ui::prelude::*;
4
5use crate::View;
6
7pub trait BorderView: View {
9 fn border_node(&mut self) -> &mut BorderStyle;
11
12 fn border(mut self, border: UiRect) -> Self {
14 self.node_node().border = border;
15 self
16 }
17
18 fn border_color(mut self, border_color: impl Into<Color>) -> Self {
20 self.border_node().border_color.0 = border_color.into();
21 self
22 }
23
24 fn border_radius(mut self, border_radius: BorderRadius) -> Self {
26 self.border_node().border_radius = border_radius;
27 self
28 }
29}
30
31#[derive(Bundle, Debug, Clone)]
33pub struct BorderStyle {
34 border_radius: BorderRadius,
36 border_color: BorderColor,
38}
39
40impl BorderStyle {
41 pub fn button() -> Self {
42 Self {
43 border_radius: BorderRadius::all(Val::Px(10.0)),
44 border_color: BorderColor::default(),
45 }
46 }
47}
48
49impl Default for BorderStyle {
50 fn default() -> Self {
51 Self {
52 border_radius: BorderRadius::ZERO,
53 border_color: BorderColor(Srgba::NONE.into()),
54 }
55 }
56}