# egui-theme-lerp Crates version Downloads [![Docs](https://img.shields.io/docsrs/egui-theme-lerp/latest)](https://docs.rs/egui-theme-lerp) A simple library for [egui](https://github.com/emilk/egui) to smoothly animate theme transitions by interpolating between any two visuals/themes. It works with any set of visuals, allowing transitions between light/dark modes or custom themes. [](https://github.com/user-attachments/assets/5ea94394-f60b-4b62-bd3f-38497d89b984) ## Installation Add the following to your `Cargo.toml`: ```toml [dependencies] egui-theme-lerp = "0.1.0" ``` ## Usage ```rust use egui_theme_lerp::ThemeAnimator; use egui::Visuals; pub struct MainWindow { theme_animator: ThemeAnimator, } impl MainWindow { pub fn new() -> Self { Self { theme_animator: ThemeAnimator::new(Visuals::light(), Visuals::dark()), } } } impl eframe::App for MainWindow { fn update(&mut self, ctx: &eframe::egui::Context, _frame: &mut eframe::Frame) { egui::CentralPanel::default().show(ctx, |ui| { if self.theme_animator.anim_id.is_none() { self.theme_animator.create_id(ui); } else { self.theme_animator.animate(ctx); } ui.vertical_centered(|ui| { if ui.button("Switch Theme".to_string()).clicked() { self.theme_animator.start(); } }); }); } } ``` ## Run Demo The demo is accessible online via [this link](https://therustypickle.github.io/egui-theme-lerp/) - Clone the repository `git clone https://github.com/TheRustyPickle/egui-theme-lerp` - Move into the demo folder `cd egui-theme-lerp/demo` - To run natively `cargo run --release` or - To run in wasm locally install the required target with `rustup target add wasm32-unknown-unknown` - Install Trunk with `cargo install --locked trunk` - `trunk serve` to run and visit `http://127.0.0.1:8080/` ## Contributing Contributions, issues, and feature requests are welcome! If you'd like to contribute, please open a pull request. ## License This project is licensed under the MIT License.