Update README.md with project details, features, requirements, architecture, and data management for PLib video library manager.

This commit is contained in:
Leonid Pershin
2026-08-08 07:08:43 +03:00
parent e767e4a48c
commit ac05ea6b7f
59 changed files with 3010 additions and 0 deletions
+121
View File
@@ -0,0 +1,121 @@
<Styles xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<!-- ============================ Card ============================ -->
<!--
The card is a Button so that keyboard focus, Enter/Space and the pointer all activate it
for free. Its template is reduced to a single surface Border because the Semi button
chrome would fight the artwork.
-->
<Style Selector="Button.card">
<Setter Property="Padding" Value="0" />
<Setter Property="Background" Value="Transparent" />
<!-- Without these the card keeps its desired size inside the grid cell the layout
hands it, which leaves the cards small and the grid full of gaps. -->
<Setter Property="HorizontalAlignment" Value="Stretch" />
<Setter Property="VerticalAlignment" Value="Stretch" />
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
<Setter Property="VerticalContentAlignment" Value="Stretch" />
<Setter Property="Cursor" Value="Hand" />
<Setter Property="RenderTransform" Value="none" />
<Setter Property="Transitions">
<Transitions>
<TransformOperationsTransition Property="RenderTransform" Duration="0:0:0.16" Easing="CubicEaseOut" />
</Transitions>
</Setter>
<Setter Property="Template">
<ControlTemplate>
<Border Name="PART_Surface"
Background="{DynamicResource CardBackgroundBrush}"
BorderBrush="{DynamicResource CardBorderBrush}"
BorderThickness="1"
CornerRadius="14"
Padding="8,8,8,10">
<Border.Transitions>
<Transitions>
<BrushTransition Property="BorderBrush" Duration="0:0:0.16" />
</Transitions>
</Border.Transitions>
<ContentPresenter Content="{TemplateBinding Content}"
ContentTemplate="{TemplateBinding ContentTemplate}"
HorizontalContentAlignment="Stretch"
VerticalContentAlignment="Stretch" />
</Border>
</ControlTemplate>
</Setter>
</Style>
<Style Selector="Button.card:pointerover">
<Setter Property="RenderTransform" Value="scale(1.025)" />
</Style>
<Style Selector="Button.card:pointerover /template/ Border#PART_Surface">
<Setter Property="BorderBrush" Value="{DynamicResource CardHoverBorderBrush}" />
</Style>
<Style Selector="Button.card:pressed">
<Setter Property="RenderTransform" Value="scale(0.99)" />
</Style>
<Style Selector="Button.card:focus-visible /template/ Border#PART_Surface">
<Setter Property="BorderBrush" Value="{DynamicResource AccentBrush}" />
</Style>
<!-- Play affordance: invisible until the pointer is over the card. -->
<Style Selector="Border.playOverlay">
<Setter Property="Opacity" Value="0" />
<Setter Property="Transitions">
<Transitions>
<DoubleTransition Property="Opacity" Duration="0:0:0.16" Easing="CubicEaseOut" />
</Transitions>
</Setter>
</Style>
<Style Selector="Button.card:pointerover Border.playOverlay">
<Setter Property="Opacity" Value="1" />
</Style>
<!-- ============================ Text ============================ -->
<Style Selector="TextBlock.cardTitle">
<Setter Property="Foreground" Value="{DynamicResource TextPrimaryBrush}" />
<Setter Property="FontSize" Value="13" />
<Setter Property="FontWeight" Value="SemiBold" />
<Setter Property="LineHeight" Value="18" />
<Setter Property="MaxLines" Value="2" />
<Setter Property="TextWrapping" Value="Wrap" />
<Setter Property="TextTrimming" Value="CharacterEllipsis" />
</Style>
<Style Selector="TextBlock.cardMeta">
<Setter Property="Foreground" Value="{DynamicResource TextTertiaryBrush}" />
<Setter Property="FontSize" Value="11.5" />
</Style>
<Style Selector="TextBlock.sectionTitle">
<Setter Property="Foreground" Value="{DynamicResource TextPrimaryBrush}" />
<Setter Property="FontSize" Value="17" />
<Setter Property="FontWeight" Value="Bold" />
</Style>
<Style Selector="TextBlock.subtle">
<Setter Property="Foreground" Value="{DynamicResource TextSecondaryBrush}" />
<Setter Property="FontSize" Value="12.5" />
</Style>
<!-- ============================ Badge ============================ -->
<Style Selector="Border.badge">
<Setter Property="Background" Value="{DynamicResource BadgeBackgroundBrush}" />
<Setter Property="CornerRadius" Value="6" />
<Setter Property="Padding" Value="6,2" />
</Style>
<Style Selector="Border.badge > TextBlock">
<Setter Property="Foreground" Value="{DynamicResource BadgeForegroundBrush}" />
<Setter Property="FontSize" Value="11" />
<Setter Property="FontWeight" Value="SemiBold" />
</Style>
</Styles>