Added playlists view. Added messaging service. Added logic for adding and deleting playlists.

This commit is contained in:
2026-07-28 00:20:41 -04:00
parent 7cfcbf26cc
commit 62e53a29d4
13 changed files with 353 additions and 5 deletions

View File

@@ -141,5 +141,11 @@
M3 9.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m5 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m5 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3
</x:String>
<x:String x:Key="MusicNoteList">
M12 13c0 1.105-1.12 2-2.5 2S7 14.105 7 13s1.12-2 2.5-2 2.5.895 2.5 2
M12 3v10h-1V3z
M11 2.82a1 1 0 0 1 .804-.98l3-.6A1 1 0 0 1 16 2.22V4l-5 1z
M0 11.5a.5.5 0 0 1 .5-.5H4a.5.5 0 0 1 0 1H.5a.5.5 0 0 1-.5-.5m0-4A.5.5 0 0 1 .5 7H8a.5.5 0 0 1 0 1H.5a.5.5 0 0 1-.5-.5m0-4A.5.5 0 0 1 .5 3H8a.5.5 0 0 1 0 1H.5a.5.5 0 0 1-.5-.5
</x:String>
</ResourceDictionary>

View File

@@ -20,6 +20,139 @@
<Setter Property="FontFamily" Value="Lexend,Noto Sans JP" />
</Style>
<!-- Premium Palette (from Harmonia icon set) -->
<LinearGradientBrush x:Key="PremiumGoldGradient" StartPoint="0,0" EndPoint="0,1">
<GradientStop Color="#E9CFA3" Offset="0"/>
<GradientStop Color="#C7A468" Offset="0.5"/>
<GradientStop Color="#8A6D42" Offset="1"/>
</LinearGradientBrush>
<LinearGradientBrush x:Key="PremiumTileGradient" StartPoint="0,0" EndPoint="0,1">
<GradientStop Color="#2B2830" Offset="0"/>
<GradientStop Color="#1E1B22" Offset="1"/>
</LinearGradientBrush>
<SolidColorBrush x:Key="PremiumForegroundBrush" Color="#E9CFA3"/>
<!-- Accent: Teal (Shuffle / Repeat) -->
<LinearGradientBrush x:Key="PremiumTealGradient" StartPoint="0,0" EndPoint="0,1">
<GradientStop Color="#A8DFD3" Offset="0"/>
<GradientStop Color="#6FBFAE" Offset="0.5"/>
<GradientStop Color="#3E7A6C" Offset="1"/>
</LinearGradientBrush>
<LinearGradientBrush x:Key="PremiumTealTileGradient" StartPoint="0,0" EndPoint="0,1">
<GradientStop Color="#26302D" Offset="0"/>
<GradientStop Color="#1A211F" Offset="1"/>
</LinearGradientBrush>
<SolidColorBrush x:Key="PremiumTealForegroundBrush" Color="#A8DFD3"/>
<!-- Accent: Lavender (Previous / Next) -->
<LinearGradientBrush x:Key="PremiumLavenderGradient" StartPoint="0,0" EndPoint="0,1">
<GradientStop Color="#CBB8EF" Offset="0"/>
<GradientStop Color="#A78FD6" Offset="0.5"/>
<GradientStop Color="#6C5799" Offset="1"/>
</LinearGradientBrush>
<LinearGradientBrush x:Key="PremiumLavenderTileGradient" StartPoint="0,0" EndPoint="0,1">
<GradientStop Color="#2A2733" Offset="0"/>
<GradientStop Color="#1D1B24" Offset="1"/>
</LinearGradientBrush>
<SolidColorBrush x:Key="PremiumLavenderForegroundBrush" Color="#CBB8EF"/>
<!-- Accent: Pink (Radio / Podcasts) -->
<LinearGradientBrush x:Key="PremiumPinkGradient" StartPoint="0,0" EndPoint="0,1">
<GradientStop Color="#EFB8C8" Offset="0"/>
<GradientStop Color="#D68FA8" Offset="0.5"/>
<GradientStop Color="#99576E" Offset="1"/>
</LinearGradientBrush>
<LinearGradientBrush x:Key="PremiumPinkTileGradient" StartPoint="0,0" EndPoint="0,1">
<GradientStop Color="#332730" Offset="0"/>
<GradientStop Color="#241B21" Offset="1"/>
</LinearGradientBrush>
<SolidColorBrush x:Key="PremiumPinkForegroundBrush" Color="#EFB8C8"/>
<!-- Premium Button -->
<Style x:Key="PremiumButton" TargetType="Button">
<Setter Property="Foreground" Value="{StaticResource PremiumForegroundBrush}"/>
<Setter Property="BorderBrush" Value="{StaticResource PremiumGoldGradient}"/>
<Setter Property="Background" Value="{StaticResource PremiumTileGradient}"/>
<Setter Property="Padding" Value="14,8"/>
<Setter Property="CornerRadius" Value="12"/>
<Setter Property="FontFamily" Value="Lexend,Noto Sans JP"/>
<Setter Property="HorizontalContentAlignment" Value="Center"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<!-- Outer gradient acts as the border ring -->
<Grid x:Name="Root"
Background="{TemplateBinding BorderBrush}"
CornerRadius="{TemplateBinding CornerRadius}"
Padding="1.5">
<Grid x:Name="Inner"
Background="{TemplateBinding Background}"
CornerRadius="10">
<ContentPresenter x:Name="ContentPresenter"
Content="{TemplateBinding Content}"
ContentTemplate="{TemplateBinding ContentTemplate}"
Padding="{TemplateBinding Padding}"
Foreground="{TemplateBinding Foreground}"
HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"
VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"/>
</Grid>
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="CommonStates">
<VisualState x:Name="Normal"/>
<VisualState x:Name="PointerOver">
<VisualState.Setters>
<Setter Target="Inner.Opacity" Value="0.88"/>
</VisualState.Setters>
</VisualState>
<VisualState x:Name="Pressed">
<VisualState.Setters>
<Setter Target="Inner.Opacity" Value="0.75"/>
<Setter Target="Root.Opacity" Value="0.9"/>
</VisualState.Setters>
</VisualState>
<VisualState x:Name="Disabled">
<VisualState.Setters>
<Setter Target="Root.Opacity" Value="0.4"/>
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<!-- Premium Button (Teal) -->
<Style x:Key="PremiumButton-Teal" TargetType="Button" BasedOn="{StaticResource PremiumButton}">
<Setter Property="Foreground" Value="{StaticResource PremiumTealForegroundBrush}"/>
<Setter Property="BorderBrush" Value="{StaticResource PremiumTealGradient}"/>
<Setter Property="Background" Value="{StaticResource PremiumTealTileGradient}"/>
</Style>
<!-- Premium Button (Lavender) -->
<Style x:Key="PremiumButton-Lavender" TargetType="Button" BasedOn="{StaticResource PremiumButton}">
<Setter Property="Foreground" Value="{StaticResource PremiumLavenderForegroundBrush}"/>
<Setter Property="BorderBrush" Value="{StaticResource PremiumLavenderGradient}"/>
<Setter Property="Background" Value="{StaticResource PremiumLavenderTileGradient}"/>
</Style>
<!-- Premium Button (Pink) -->
<Style x:Key="PremiumButton-Pink" TargetType="Button" BasedOn="{StaticResource PremiumButton}">
<Setter Property="Foreground" Value="{StaticResource PremiumPinkForegroundBrush}"/>
<Setter Property="BorderBrush" Value="{StaticResource PremiumPinkGradient}"/>
<Setter Property="Background" Value="{StaticResource PremiumPinkTileGradient}"/>
</Style>
<!-- Flat Button -->
<Style x:Key="FlatButton" TargetType="Button">
<Setter Property="Padding" Value="10"/>