use gpui::{ div, prelude::*, px, rgb, size, uniform_list, App, AppContext, Bounds, ViewContext, WindowBounds, WindowOptions, }; struct UniformListExample {} impl Render for UniformListExample { fn render(&mut self, cx: &mut ViewContext) -> impl IntoElement { div().size_full().bg(rgb(0xffffff)).child( uniform_list(cx.view().clone(), "entries", 50, |_this, range, _cx| { let mut items = Vec::new(); for ix in range { let item = ix + 1; items.push( div() .id(ix) .px_2() .cursor_pointer() .on_click(move |_event, _cx| { println!("clicked Item {item:?}"); }) .child(format!("Item {item}")), ); } items }) .h_full(), ) } } fn main() { App::new().run(|cx: &mut AppContext| { let bounds = Bounds::centered(None, size(px(300.0), px(300.0)), cx); cx.open_window( WindowOptions { window_bounds: Some(WindowBounds::Windowed(bounds)), ..Default::default() }, |cx| cx.new_view(|_cx| UniformListExample {}), ) .unwrap(); }); }