Files
Barış Keser 83be058d23 feat: Athena v2 — Discord auth, AthenaCore mod, cross-platform launcher, CI
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.
2026-06-13 23:45:21 +03:00

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>