Biblioteka · 77 widgetów
Widgety libLuny
Wszystko, co można narysować i obsłużyć, w jednym miejscu: od Button i Entry po NavigationView, HeaderBar i dialogi. Podglądy nie są makietami — pochodzą z prawdziwego renderera libLuny w jasnym i ciemnym motywie.
Wspólny kontrakt
Każdy widget respektuje ten sam rytm: paint rysuje, hit sprawdza trafienie, a click_at lub inna metoda *_at zwraca wynik interakcji. Stan prezentacji (hover, pressed, wartość, kursor) należy do struktury widgetu albo do aplikacji.
let mut widget = Button::new("Zapisz");
// 1. rysowanie — bez zmiany stanu
let mut ctx = PaintCtx::new(scene, &theme, text);
widget.paint(&mut ctx, rect);
// 2. trafienie i reakcja — decyzja po stronie aplikacji
if widget.click_at(rect, pointer) {
save();
}
Niektóre widgety przyjmują dodatkowo &Theme lub &TextEngine (np. SplitButton::rects, TabBar::click_at). Pełne sygnatury są w indeksie API i w rustdoc.
Aliasy w duchu GTK4 / libadwaita
Jeśli przychodzisz z GTK, część nazw będzie znajoma. Aliasy wskazują na te same typy — nie ma dwóch implementacji.
Cała galeria naraz
Ten sam ekran jest dostępny w demo aplikacji (cargo run --manifest-path apps/luna-demo/Cargo.toml --bin gallery) i jako zrzut offline.
Gdzie szukać szczegółów
Indeks API
Sygnatury wszystkich publicznych typów i metod, z linkami do źródeł.
Otwórz API →Motywy
Jak tokeny zmieniają kolory i geometrię widgetów bez ich przepisywania.
Tokeny →Model immediate
Dlaczego widget nie jest węzłem drzewa i co to znaczy dla stanu.
Koncepcje →Źródła
Każdy widget to jeden plik Rust z testami. Czytaj i kopiuj bez obaw.
GitHub →