Skip to repository content

tenant.openagents/omega

No repository description is available.

OpenAgents Git authority 2026-07-28T05:04:20.511Z Public web read
NIP-34 coordinate30617:7649603503856e5148d571eac2766b288a8ff1e9e35d380337a1d2b0015b4f92:omega
MaintainersHidden in public view
References2 branches · 1 tag
Read-only clonegit clone https://openagents.com/git/tenant.openagents/omega.git
Browse files

kernel_list_item.rs

61 lines · 1.7 KB · rust
1use gpui::AnyElement;
2use ui::{Indicator, ListItem, prelude::*};
3
4use crate::KernelSpecification;
5
6#[derive(IntoElement)]
7pub struct KernelListItem {
8    kernel_specification: KernelSpecification,
9    status_color: Color,
10    buttons: Vec<AnyElement>,
11    children: Vec<AnyElement>,
12}
13
14impl KernelListItem {
15    pub fn new(kernel_specification: KernelSpecification) -> Self {
16        Self {
17            kernel_specification,
18            status_color: Color::Disabled,
19            buttons: Vec::new(),
20            children: Vec::new(),
21        }
22    }
23
24    pub fn status_color(mut self, color: Color) -> Self {
25        self.status_color = color;
26        self
27    }
28
29    pub fn button(mut self, button: impl IntoElement) -> Self {
30        self.buttons.push(button.into_any_element());
31        self
32    }
33
34    pub fn buttons(mut self, buttons: impl IntoIterator<Item = impl IntoElement>) -> Self {
35        self.buttons
36            .extend(buttons.into_iter().map(|button| button.into_any_element()));
37        self
38    }
39}
40
41impl ParentElement for KernelListItem {
42    fn extend(&mut self, elements: impl IntoIterator<Item = AnyElement>) {
43        self.children.extend(elements);
44    }
45}
46
47impl RenderOnce for KernelListItem {
48    fn render(self, _window: &mut Window, _cx: &mut App) -> impl IntoElement {
49        ListItem::new(self.kernel_specification.name())
50            .selectable(false)
51            .start_slot(
52                h_flex()
53                    .size_3()
54                    .justify_center()
55                    .child(Indicator::dot().color(self.status_color)),
56            )
57            .children(self.children)
58            .end_slot(h_flex().gap_2().children(self.buttons))
59    }
60}
61
Served at tenant.openagents/omega Member data and write actions are omitted.