Ziya/ui/index.slint
2025-06-27 07:27:24 +07:00

75 lines
2.2 KiB
Text

// Main Entry Point - Following Feature-Sliced Design
// This is the root file that main.rs imports
// Following the pattern from moonlogs: index -> app -> pages/widgets/entities/shared
import { App } from "app/index.slint";
import { Theme } from "shared/design-system/index.slint";
export component MainWindow inherits Window {
// Window properties
preferred-width: 1280px;
preferred-height: 1024px;
min-width: 1080px;
min-height: 800px;
no-frame: true;
background: Theme.background;
// Properties
in-out property <string> current-page: "Dashboard";
in-out property <string> user-initials: "JD";
// Callbacks that will be handled by main.rs
callback navigation-changed(string);
callback theme-toggle-clicked();
callback logout-clicked();
callback buy-clicked();
callback sell-clicked();
callback start-drag-window();
callback minimize-window();
callback maximize-window();
callback close-window();
// Public function that can be called from Rust to toggle theme
public function toggle_theme() {
Theme.is-dark-mode = !Theme.is-dark-mode;
debug("Theme toggled from Rust. New state: " + (Theme.is-dark-mode ? "dark" : "light"));
}
// App component handles all the UI following FSD layers
App {
width: 100%;
height: 100%;
current-page: root.current-page;
user-initials: root.user-initials;
// Forward all callbacks to main.rs
navigation-changed(page) => {
root.current-page = page;
root.navigation-changed(page);
}
theme-toggle-clicked => {
root.theme-toggle-clicked();
}
logout-clicked => {
root.logout-clicked();
}
buy-clicked => {
root.buy-clicked();
}
sell-clicked => {
root.sell-clicked();
}
start-drag-window => {
root.start-drag-window();
}
minimize-window => {
root.minimize-window();
}
maximize-window => {
root.maximize-window();
}
close-window => {
root.close-window();
}
}
}