T00 foundation: theme, motion, assets, icon, buttons, gallery
Theme tokens in light and dark with high contrast, a palette cross-fade, motion curves and a damped spring, embedded Lucide icons with Inter and JetBrains Mono, Icon, Button, IconButton, and a gallery that captures its own window. Reviewed by codex gpt-6-astra (max): PASS in round 3.
This commit is contained in:
258 files changed
+16908
No files matched your search
@@ -0,0 +1,45 @@
|
||||
# Ely GPUI Component
|
||||
|
||||
A component library for [GPUI](https://www.gpui.rs), 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
|
||||
|
||||
```toml
|
||||
[dependencies]
|
||||
ely-gpui-component = { git = "https://github.com/ZacharyZhang-NY/Ely-GPUI-Components" }
|
||||
gpui = "0.2.2"
|
||||
```
|
||||
|
||||
```rust
|
||||
use ely_gpui_component::{Assets, theme::{Mode, Theme}};
|
||||
use gpui::{App, Application};
|
||||
|
||||
fn main() {
|
||||
Application::new().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
|
||||
|
||||
```sh
|
||||
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 0.2.2 compiles its Metal shaders at runtime here (`runtime_shaders`, on by default), so a full Xcode install is not required.
|
||||
- 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.
|
||||
Reference in new issue
Block a user