// DragonX Wallet - ImGui Edition // Copyright 2024-2026 The Hush Developers // Released under the GPLv3 #pragma once #include "effects/acrylic.h" #include "material/color_theme.h" #include namespace dragonx { namespace ui { // ============================================================================ // Acrylic Theme Presets // ============================================================================ /** * @brief Collection of acrylic parameters for different UI elements */ struct AcrylicTheme { effects::AcrylicParams sidebar; // Navigation sidebar effects::AcrylicParams popup; // Dialogs, modals effects::AcrylicParams card; // Cards, panels effects::AcrylicParams menu; // Context menus effects::AcrylicParams tooltip; // Tooltips }; /** * @brief Get the DragonX branded acrylic theme */ AcrylicTheme GetDragonXAcrylicTheme(); /** * @brief Get the dark acrylic theme */ AcrylicTheme GetDarkAcrylicTheme(); /** * @brief Get the light acrylic theme */ AcrylicTheme GetLightAcrylicTheme(); /** * @brief Get acrylic theme matching current ImGui theme */ const AcrylicTheme& GetCurrentAcrylicTheme(); /** * @brief Set the current acrylic theme */ void SetCurrentAcrylicTheme(const AcrylicTheme& theme); // ============================================================================ // ImGui Theme Functions // ============================================================================ /** * @brief Apply the DragonX Material Design theme * * Uses Material Design 2 color system with DragonX red primary color. * This is the recommended theme for DragonX wallet. */ void SetDragonXMaterialTheme(); /** * @brief Apply the DragonX legacy theme (deprecated) * * Legacy green-based theme. Use SetDragonXMaterialTheme() instead. */ void SetDragonXTheme(); /** * @brief Apply dark theme variant (Material Design) */ void SetDarkTheme(); /** * @brief Apply light theme variant (Material Design) */ void SetLightTheme(); /** * @brief Apply a theme by its ID (filename stem) * * Loads theme from res/themes/{id}.json. Falls back to dragonx theme if not found. * @param themeId Theme identifier like "dragonx", "dark", "light", "ocean-blue" * @return true if theme was loaded successfully */ bool SetThemeById(const std::string& themeId); } // namespace ui } // namespace dragonx