Every page and scripted state was shot with gpui 0.2.2 and with the port, light and dark, full width and at 280px, judged pair by pair by agents with skeptics, and every page's log diffed. What differed is fixed, each with a test that fails without it where the test platform can show it: - The gallery's harness takes posted mouse moves (gpui_macos listens to a tracking area), posts each drag move twice (it no longer replays a held drag), and waits three frames before each shot. - Rolling digits: a block column, so taffy 0.13 lends the cell no baseline, and a line of whole device pixels, since gpui snaps each length on its own. DescriptionList's row aligns ends. - Margins that taffy 0.13 collapses through a plain block: the drawer's pull and snap, the stagger and transition rise, the dialog and palette rises, the fullscreen dialog's slide. - An Input keeps room to type in a squeezed row; the field rows drop w_full, whose reason was taffy 0.9's. AGENTS.md's rules that named gpui 0.2.2 or taffy 0.9 were re-tested against both sources and rewritten, and new ones say what the port changed. TASKS.md's tags follow: what the new gpui makes possible is prove. Captions, doc comments and README say what holds now.
1.6 KiB
1.6 KiB
Ely GPUI Component
A component library for GPUI, the Rust UI framework behind Zed. Every component ships in light and dark. The palette is warm and quiet. Color carries meaning, not decoration.
Status: early. TASKS.md tracks every component, chapter by chapter.
Use
[dependencies]
ely-gpui-component = { git = "https://github.com/ZacharyZhang-NY/Ely-GPUI-Components" }
gpui = { git = "https://github.com/zed-industries/zed", rev = "1a28cff4b409169bac058bca40dfbfeb7621d19b" }
gpui_platform = { git = "https://github.com/zed-industries/zed", rev = "1a28cff4b409169bac058bca40dfbfeb7621d19b", features = ["font-kit"] }
use ely_gpui_component::{Assets, theme::{Mode, Theme}};
use gpui::App;
fn main() {
gpui_platform::application().with_assets(Assets).run(|cx: &mut App| {
ely_gpui_component::init(cx);
Theme::set_mode(Mode::Dark, cx);
});
}
init registers the fonts and the theme. It panics if Assets is not wired into the application.
Gallery
cargo run --example gallery
cargo run --example gallery -- --page buttons
cargo run --example gallery -- --capture shots # macOS: PNG of every page, light and dark
Build notes
- gpui compiles its Metal shaders at runtime here (
runtime_shaders, on by default), so a full Xcode install is not required. gpui_platform needsfont-kit, or macOS draws no text. - Tested on macOS only. The capture tool needs macOS.
License
MIT or Apache-2.0, at your option. Lucide icons: ISC. Inter and JetBrains Mono: SIL Open Font License 1.1.
The gallery photos in examples/gallery/assets were generated for this project with gpt-image-2.