server-list
Builds DescriptionList List ServerList Timeline Toggle ToggleGroup


The code that drew it
A still frame holds a repeating animation at its first frame and a one-shot at its last, because a still of a moving thing is not reproducible. Run the gallery to review motion.
fn server_list(_window: &mut Window, cx: &mut App) -> AnyElement {
let theme = cx.theme().clone();
stack(&theme)
.w(px(560.0))
.child(
// Only the one with a catalogue is opened. Expanding the two empty
// ones as well pushed disconnected, failed, and disabled out of
// the captured screen, and a state no image shows is a state no
// image guards.
ServerList::new("scene.servers")
.expanded_ids(&["workspace"])
.selected("workspace")
.servers([
ServerEntry::new("workspace", "Workspace tools")
.detail("Running beside this window")
.state(ServerState::Connected)
.offers([
Offering::tool("read", "Read a file")
.summary("Returns the contents of one file")
.qualifier("path, max_bytes"),
Offering::tool("write", "Write a file")
.summary("Replaces the contents of one file"),
Offering::skill("review", "Review a change")
.summary("Reads a diff and reports what it finds"),
Offering::resource("changelog", "Changelog")
.qualifier("workspace:/CHANGELOG.md"),
]),
ServerEntry::new("index", "Search index")
.detail("Answered, and the answer was empty")
.state(ServerState::Connected)
.offers([]),
ServerEntry::new("archive", "Archive")
.detail("Nobody has asked it anything yet")
.state(ServerState::Connected),
ServerEntry::new("build", "Build runner")
.state(ServerState::Connecting)
.catalog(Catalog::Asking),
ServerEntry::new("notes", "Notes").state(ServerState::Disconnected),
ServerEntry::new("deploy", "Deployment").state(ServerState::Failed {
reason: "The connection was refused after three attempts.".into(),
}),
ServerEntry::new("telemetry", "Telemetry").state(ServerState::Disabled {
reason: Some("You turned this one off.".into()),
}),
])
.on_select(|_, _, _| {})
.on_retry(|_, _, _| {})
.on_toggle(|_, _, _, _| {}),
)
.into_any_element()
}