mirror of
https://github.com/RoyalnetworkTR/simple-launcher.git
synced 2026-09-25 00:59:49 +03:00
Backend (PHP+SQLite): Discord OAuth2 + JWT, coklu hesap (1 Discord = 3-5), tek-kullanimlik join token (/api/join/prepare+verify), custom skin yukleme/sunma, hesap/Discord/HWID ban, admin paneli kartlari; deterministik offline UUID (PHP<->C# paritesi dogrulandi). 25 entegrasyon testi gecti. AthenaCore (Forge 1.12.2): tek client+server mod — join token dogrulama + kick, grace-gate, custom skin uygulama. Sunucu offline-mode kalir (UUID/dunya verisi korunur). Masaustu: WPF -> Avalonia (Windows+Linux), Discord giris/hesap/skin/oyna; WMI/DPAPI yerine cross-platform (machine-id HWID, AES-GCM secret store). Derlenir + calisir. CI: athenacore-mod.yml (JDK8), desktop-release.yml (Win+Linux self-contained). Deploy: deploy.sh (.env uretimi, php-gd, nginx Authorization gecisi) + HANDOFF.md. Android: backend hazir; entegrasyon spec'i ANDROID_INTEGRATION.md.
359 lines
19 KiB
XML
359 lines
19 KiB
XML
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
xmlns:sys="clr-namespace:System;assembly=mscorlib">
|
|
|
|
<!-- ===================== Brand palette ===================== -->
|
|
<Color x:Key="BgColor">#FF0E1116</Color>
|
|
<Color x:Key="SurfaceColor">#FF161B22</Color>
|
|
<Color x:Key="Surface2Color">#FF1C2230</Color>
|
|
<Color x:Key="BorderColor">#FF2A3140</Color>
|
|
<Color x:Key="AccentColor">#FF2F81F7</Color>
|
|
<Color x:Key="AccentColor2">#FF1B4DA8</Color>
|
|
<Color x:Key="AccentGlow">#FF58A6FF</Color>
|
|
<Color x:Key="TextColor">#FFE6EDF3</Color>
|
|
<Color x:Key="TextMutedColor">#FF8B98A9</Color>
|
|
<Color x:Key="SuccessColor">#FF3FB950</Color>
|
|
<Color x:Key="DangerColor">#FFF85149</Color>
|
|
<Color x:Key="WarnColor">#FFD29922</Color>
|
|
|
|
<SolidColorBrush x:Key="BgBrush" Color="{StaticResource BgColor}"/>
|
|
<SolidColorBrush x:Key="SurfaceBrush" Color="{StaticResource SurfaceColor}"/>
|
|
<SolidColorBrush x:Key="Surface2Brush" Color="{StaticResource Surface2Color}"/>
|
|
<SolidColorBrush x:Key="BorderBrush" Color="{StaticResource BorderColor}"/>
|
|
<SolidColorBrush x:Key="AccentBrush" Color="{StaticResource AccentColor}"/>
|
|
<SolidColorBrush x:Key="AccentGlowBrush" Color="{StaticResource AccentGlow}"/>
|
|
<SolidColorBrush x:Key="TextBrush" Color="{StaticResource TextColor}"/>
|
|
<SolidColorBrush x:Key="TextMutedBrush" Color="{StaticResource TextMutedColor}"/>
|
|
<SolidColorBrush x:Key="SuccessBrush" Color="{StaticResource SuccessColor}"/>
|
|
<SolidColorBrush x:Key="DangerBrush" Color="{StaticResource DangerColor}"/>
|
|
<SolidColorBrush x:Key="WarnBrush" Color="{StaticResource WarnColor}"/>
|
|
|
|
<LinearGradientBrush x:Key="AccentGradient" StartPoint="0,0" EndPoint="1,1">
|
|
<GradientStop Color="{StaticResource AccentColor}" Offset="0"/>
|
|
<GradientStop Color="{StaticResource AccentColor2}" Offset="1"/>
|
|
</LinearGradientBrush>
|
|
|
|
<LinearGradientBrush x:Key="HeroGradient" StartPoint="0,0" EndPoint="1,1">
|
|
<GradientStop Color="#FF13294B" Offset="0"/>
|
|
<GradientStop Color="#FF0E1116" Offset="0.6"/>
|
|
<GradientStop Color="#FF0B0E13" Offset="1"/>
|
|
</LinearGradientBrush>
|
|
|
|
<LinearGradientBrush x:Key="SidebarGradient" StartPoint="0,0" EndPoint="0,1">
|
|
<GradientStop Color="#FF121822" Offset="0"/>
|
|
<GradientStop Color="#FF0D1117" Offset="1"/>
|
|
</LinearGradientBrush>
|
|
|
|
<FontFamily x:Key="UiFont">Segoe UI</FontFamily>
|
|
|
|
<!-- ===================== Accent (primary) button ===================== -->
|
|
<Style x:Key="AccentButton" TargetType="Button">
|
|
<Setter Property="Foreground" Value="White"/>
|
|
<Setter Property="FontFamily" Value="{StaticResource UiFont}"/>
|
|
<Setter Property="FontWeight" Value="SemiBold"/>
|
|
<Setter Property="FontSize" Value="14"/>
|
|
<Setter Property="Cursor" Value="Hand"/>
|
|
<Setter Property="SnapsToDevicePixels" Value="True"/>
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="Button">
|
|
<Border x:Name="bd" CornerRadius="10" Background="{StaticResource AccentGradient}"
|
|
Padding="{TemplateBinding Padding}">
|
|
<Border.Effect>
|
|
<DropShadowEffect x:Name="glow" Color="{StaticResource AccentColor}" BlurRadius="18" ShadowDepth="0" Opacity="0.0"/>
|
|
</Border.Effect>
|
|
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
|
|
</Border>
|
|
<ControlTemplate.Triggers>
|
|
<Trigger Property="IsMouseOver" Value="True">
|
|
<Trigger.EnterActions>
|
|
<BeginStoryboard>
|
|
<Storyboard>
|
|
<DoubleAnimation Storyboard.TargetName="glow" Storyboard.TargetProperty="Opacity" To="0.6" Duration="0:0:0.18"/>
|
|
</Storyboard>
|
|
</BeginStoryboard>
|
|
</Trigger.EnterActions>
|
|
<Trigger.ExitActions>
|
|
<BeginStoryboard>
|
|
<Storyboard>
|
|
<DoubleAnimation Storyboard.TargetName="glow" Storyboard.TargetProperty="Opacity" To="0.0" Duration="0:0:0.25"/>
|
|
</Storyboard>
|
|
</BeginStoryboard>
|
|
</Trigger.ExitActions>
|
|
</Trigger>
|
|
<Trigger Property="IsPressed" Value="True">
|
|
<Setter TargetName="bd" Property="RenderTransform">
|
|
<Setter.Value><ScaleTransform ScaleX="0.98" ScaleY="0.98" CenterX="0" CenterY="0"/></Setter.Value>
|
|
</Setter>
|
|
</Trigger>
|
|
<Trigger Property="IsEnabled" Value="False">
|
|
<Setter TargetName="bd" Property="Background" Value="{StaticResource Surface2Brush}"/>
|
|
<Setter Property="Foreground" Value="{StaticResource TextMutedBrush}"/>
|
|
</Trigger>
|
|
</ControlTemplate.Triggers>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
|
|
<!-- ===================== Ghost / secondary button ===================== -->
|
|
<Style x:Key="GhostButton" TargetType="Button">
|
|
<Setter Property="Foreground" Value="{StaticResource TextBrush}"/>
|
|
<Setter Property="FontFamily" Value="{StaticResource UiFont}"/>
|
|
<Setter Property="FontSize" Value="13"/>
|
|
<Setter Property="Cursor" Value="Hand"/>
|
|
<Setter Property="Padding" Value="14,8"/>
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="Button">
|
|
<Border x:Name="bd" CornerRadius="8" Background="{StaticResource Surface2Brush}"
|
|
BorderBrush="{StaticResource BorderBrush}" BorderThickness="1"
|
|
Padding="{TemplateBinding Padding}">
|
|
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
|
|
</Border>
|
|
<ControlTemplate.Triggers>
|
|
<Trigger Property="IsMouseOver" Value="True">
|
|
<Setter TargetName="bd" Property="BorderBrush" Value="{StaticResource AccentBrush}"/>
|
|
<Setter TargetName="bd" Property="Background" Value="#FF222C3D"/>
|
|
</Trigger>
|
|
<Trigger Property="IsEnabled" Value="False">
|
|
<Setter Property="Foreground" Value="{StaticResource TextMutedBrush}"/>
|
|
<Setter TargetName="bd" Property="Opacity" Value="0.6"/>
|
|
</Trigger>
|
|
</ControlTemplate.Triggers>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
|
|
<!-- ===================== Nav (sidebar) button ===================== -->
|
|
<Style x:Key="NavButton" TargetType="RadioButton">
|
|
<Setter Property="Foreground" Value="{StaticResource TextMutedBrush}"/>
|
|
<Setter Property="FontFamily" Value="{StaticResource UiFont}"/>
|
|
<Setter Property="FontSize" Value="14"/>
|
|
<Setter Property="Cursor" Value="Hand"/>
|
|
<Setter Property="Margin" Value="10,3"/>
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="RadioButton">
|
|
<Border x:Name="bd" CornerRadius="10" Background="Transparent" Padding="14,11">
|
|
<Grid>
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="Auto"/>
|
|
<ColumnDefinition Width="*"/>
|
|
</Grid.ColumnDefinitions>
|
|
<Rectangle x:Name="bar" Width="3" Height="18" RadiusX="2" RadiusY="2" HorizontalAlignment="Left"
|
|
Fill="{StaticResource AccentBrush}" Opacity="0" Margin="-6,0,11,0"/>
|
|
<ContentPresenter Grid.Column="1" VerticalAlignment="Center"/>
|
|
</Grid>
|
|
</Border>
|
|
<ControlTemplate.Triggers>
|
|
<Trigger Property="IsMouseOver" Value="True">
|
|
<Setter TargetName="bd" Property="Background" Value="#22FFFFFF"/>
|
|
<Setter Property="Foreground" Value="{StaticResource TextBrush}"/>
|
|
</Trigger>
|
|
<Trigger Property="IsChecked" Value="True">
|
|
<Setter TargetName="bd" Property="Background" Value="#332F81F7"/>
|
|
<Setter TargetName="bar" Property="Opacity" Value="1"/>
|
|
<Setter Property="Foreground" Value="White"/>
|
|
<Setter Property="FontWeight" Value="SemiBold"/>
|
|
</Trigger>
|
|
</ControlTemplate.Triggers>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
|
|
<!-- ===================== Window control button (titlebar) ===================== -->
|
|
<Style x:Key="CaptionButton" TargetType="Button">
|
|
<Setter Property="Foreground" Value="{StaticResource TextMutedBrush}"/>
|
|
<Setter Property="Width" Value="44"/>
|
|
<Setter Property="Height" Value="32"/>
|
|
<Setter Property="Cursor" Value="Hand"/>
|
|
<Setter Property="FontFamily" Value="Segoe MDL2 Assets"/>
|
|
<Setter Property="FontSize" Value="11"/>
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="Button">
|
|
<Border x:Name="bd" Background="Transparent">
|
|
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
|
|
</Border>
|
|
<ControlTemplate.Triggers>
|
|
<Trigger Property="IsMouseOver" Value="True">
|
|
<Setter TargetName="bd" Property="Background" Value="#22FFFFFF"/>
|
|
<Setter Property="Foreground" Value="White"/>
|
|
</Trigger>
|
|
</ControlTemplate.Triggers>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
|
|
<Style x:Key="CloseButton" TargetType="Button" BasedOn="{StaticResource CaptionButton}">
|
|
<Style.Triggers>
|
|
<Trigger Property="IsMouseOver" Value="True">
|
|
<Setter Property="Foreground" Value="White"/>
|
|
</Trigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
|
|
<!-- ===================== TextBox ===================== -->
|
|
<Style x:Key="BrandTextBox" TargetType="TextBox">
|
|
<Setter Property="Foreground" Value="{StaticResource TextBrush}"/>
|
|
<Setter Property="CaretBrush" Value="{StaticResource AccentBrush}"/>
|
|
<Setter Property="FontFamily" Value="{StaticResource UiFont}"/>
|
|
<Setter Property="FontSize" Value="14"/>
|
|
<Setter Property="Padding" Value="12,9"/>
|
|
<Setter Property="BorderThickness" Value="1"/>
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="TextBox">
|
|
<Border x:Name="bd" CornerRadius="9" Background="{StaticResource BgBrush}"
|
|
BorderBrush="{StaticResource BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}">
|
|
<ScrollViewer x:Name="PART_ContentHost" Margin="{TemplateBinding Padding}" VerticalAlignment="Center"/>
|
|
</Border>
|
|
<ControlTemplate.Triggers>
|
|
<Trigger Property="IsKeyboardFocused" Value="True">
|
|
<Setter TargetName="bd" Property="BorderBrush" Value="{StaticResource AccentBrush}"/>
|
|
</Trigger>
|
|
</ControlTemplate.Triggers>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
|
|
<!-- ===================== Card border ===================== -->
|
|
<Style x:Key="Card" TargetType="Border">
|
|
<Setter Property="Background" Value="{StaticResource SurfaceBrush}"/>
|
|
<Setter Property="BorderBrush" Value="{StaticResource BorderBrush}"/>
|
|
<Setter Property="BorderThickness" Value="1"/>
|
|
<Setter Property="CornerRadius" Value="14"/>
|
|
<Setter Property="Padding" Value="18"/>
|
|
</Style>
|
|
|
|
<!-- ===================== ProgressBar ===================== -->
|
|
<Style x:Key="BrandProgress" TargetType="ProgressBar">
|
|
<Setter Property="Height" Value="8"/>
|
|
<Setter Property="Foreground" Value="{StaticResource AccentBrush}"/>
|
|
<Setter Property="Background" Value="{StaticResource Surface2Brush}"/>
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="ProgressBar">
|
|
<Border CornerRadius="4" Background="{TemplateBinding Background}" ClipToBounds="True">
|
|
<Grid>
|
|
<Border x:Name="PART_Track"/>
|
|
<Border x:Name="PART_Indicator" HorizontalAlignment="Left" CornerRadius="4" Background="{StaticResource AccentGradient}"/>
|
|
</Grid>
|
|
</Border>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
|
|
<!-- ===================== Toggle (mod on/off) ===================== -->
|
|
<Style x:Key="BrandToggle" TargetType="CheckBox">
|
|
<Setter Property="Cursor" Value="Hand"/>
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="CheckBox">
|
|
<Border x:Name="track" Width="44" Height="24" CornerRadius="12" Background="{StaticResource Surface2Brush}"
|
|
BorderBrush="{StaticResource BorderBrush}" BorderThickness="1">
|
|
<Ellipse x:Name="thumb" Width="16" Height="16" Fill="{StaticResource TextMutedBrush}"
|
|
HorizontalAlignment="Left" Margin="4,0,0,0"/>
|
|
</Border>
|
|
<ControlTemplate.Triggers>
|
|
<Trigger Property="IsChecked" Value="True">
|
|
<Setter TargetName="track" Property="Background" Value="{StaticResource AccentBrush}"/>
|
|
<Setter TargetName="track" Property="BorderBrush" Value="{StaticResource AccentBrush}"/>
|
|
<Setter TargetName="thumb" Property="Fill" Value="White"/>
|
|
<Setter TargetName="thumb" Property="HorizontalAlignment" Value="Right"/>
|
|
<Setter TargetName="thumb" Property="Margin" Value="0,0,4,0"/>
|
|
</Trigger>
|
|
</ControlTemplate.Triggers>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
|
|
<!-- ===================== Slider ===================== -->
|
|
<Style x:Key="BrandSlider" TargetType="Slider">
|
|
<Setter Property="Foreground" Value="{StaticResource AccentBrush}"/>
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="Slider">
|
|
<Grid VerticalAlignment="Center" Height="24">
|
|
<Border Height="6" CornerRadius="3" Background="{StaticResource Surface2Brush}"/>
|
|
<Track x:Name="PART_Track">
|
|
<Track.DecreaseRepeatButton>
|
|
<RepeatButton Command="Slider.DecreaseLarge">
|
|
<RepeatButton.Template>
|
|
<ControlTemplate TargetType="RepeatButton">
|
|
<Border Height="6" CornerRadius="3" Background="{StaticResource AccentGradient}"/>
|
|
</ControlTemplate>
|
|
</RepeatButton.Template>
|
|
</RepeatButton>
|
|
</Track.DecreaseRepeatButton>
|
|
<Track.IncreaseRepeatButton>
|
|
<RepeatButton Command="Slider.IncreaseLarge">
|
|
<RepeatButton.Template>
|
|
<ControlTemplate TargetType="RepeatButton"><Border Background="Transparent"/></ControlTemplate>
|
|
</RepeatButton.Template>
|
|
</RepeatButton>
|
|
</Track.IncreaseRepeatButton>
|
|
<Track.Thumb>
|
|
<Thumb>
|
|
<Thumb.Template>
|
|
<ControlTemplate TargetType="Thumb">
|
|
<Ellipse Width="18" Height="18" Fill="White">
|
|
<Ellipse.Effect><DropShadowEffect Color="{StaticResource AccentColor}" BlurRadius="10" ShadowDepth="0" Opacity="0.7"/></Ellipse.Effect>
|
|
</Ellipse>
|
|
</ControlTemplate>
|
|
</Thumb.Template>
|
|
</Thumb>
|
|
</Track.Thumb>
|
|
</Track>
|
|
</Grid>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
|
|
<!-- ===================== Slim ScrollBar ===================== -->
|
|
<Style TargetType="ScrollBar">
|
|
<Setter Property="Background" Value="Transparent"/>
|
|
<Setter Property="Width" Value="8"/>
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="ScrollBar">
|
|
<Grid Background="Transparent">
|
|
<Track x:Name="PART_Track" IsDirectionReversed="True">
|
|
<Track.Thumb>
|
|
<Thumb>
|
|
<Thumb.Template>
|
|
<ControlTemplate TargetType="Thumb">
|
|
<Border CornerRadius="4" Background="#55FFFFFF"/>
|
|
</ControlTemplate>
|
|
</Thumb.Template>
|
|
</Thumb>
|
|
</Track.Thumb>
|
|
<Track.IncreaseRepeatButton>
|
|
<RepeatButton Command="ScrollBar.PageDownCommand" Opacity="0" Focusable="False"/>
|
|
</Track.IncreaseRepeatButton>
|
|
<Track.DecreaseRepeatButton>
|
|
<RepeatButton Command="ScrollBar.PageUpCommand" Opacity="0" Focusable="False"/>
|
|
</Track.DecreaseRepeatButton>
|
|
</Track>
|
|
</Grid>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
|
|
<!-- Default TextBlock color -->
|
|
<Style TargetType="TextBlock">
|
|
<Setter Property="Foreground" Value="{StaticResource TextBrush}"/>
|
|
<Setter Property="FontFamily" Value="{StaticResource UiFont}"/>
|
|
</Style>
|
|
|
|
</ResourceDictionary>
|