Add `ui::ComponentPreview` (#20319)
The `ComponentPreview` trait enables rendering storybook-like previews
of components inside of Zed.

This initial version will work for any component that doesn't return a
view.
Example impl:
```rust
impl ComponentPreview for Checkbox {
fn description() -> impl Into<Option<&'static str>> {
"A checkbox lets people choose between opposing..."
}
fn examples() -> Vec<ComponentExampleGroup<Self>> {
vec![
example_group(
"Default",
vec![
single_example(
"Unselected",
Checkbox::new("checkbox_unselected", Selection::Unselected),
),
// ... more examples
],
),
// ... more examples
]
}
}
```
Example usage:
```rust
fn render_components_page(&self, cx: &ViewContext<Self>) -> impl IntoElement {
v_flex()
.gap_2()
.child(Checkbox::render_component_previews(cx))
.child(Icon::render_component_previews(cx))
}
}
```
Release Notes:
- N/A N
Nate Butler committed
f6fbf662b4da903bcf56112cb5dc565b51a56309
Parent: a409123
Committed by GitHub <noreply@github.com>
on 11/6/2024, 9:54:18 PM