769 lines
44 KiB
XML
769 lines
44 KiB
XML
<ResourceDictionary
|
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
xmlns:system="clr-namespace:System;assembly=System.Runtime"
|
|
xmlns:ui="http://schemas.lepo.co/wpfui/2022/xaml">
|
|
|
|
<!-- Windows 11 Flagship Acrylic & Neo Glass Backgrounds -->
|
|
<SolidColorBrush x:Key="FsBgBase" Color="#D80A0C10"/>
|
|
<SolidColorBrush x:Key="FsBgPanel" Color="#E211141D"/>
|
|
<SolidColorBrush x:Key="FsBgSurface" Color="#171B26"/>
|
|
<SolidColorBrush x:Key="FsBgSurfaceHover" Color="#222738"/>
|
|
<SolidColorBrush x:Key="FsBgInput" Color="#0C0E14"/>
|
|
|
|
<!-- Neo Glass Rimlight Gradients -->
|
|
<LinearGradientBrush x:Key="FsGlassBorderBrush" StartPoint="0,0" EndPoint="0,1">
|
|
<GradientStop Color="#2EFFFFFF" Offset="0.0"/>
|
|
<GradientStop Color="#0EFFFFFF" Offset="1.0"/>
|
|
</LinearGradientBrush>
|
|
|
|
<LinearGradientBrush x:Key="FsGlassBorderBrushHover" StartPoint="0,0" EndPoint="0,1">
|
|
<GradientStop Color="#6606B6D4" Offset="0.0"/>
|
|
<GradientStop Color="#2206B6D4" Offset="1.0"/>
|
|
</LinearGradientBrush>
|
|
|
|
<!-- Borders -->
|
|
<SolidColorBrush x:Key="FsBorderSubtle" Color="#232733"/>
|
|
<SolidColorBrush x:Key="FsBorderStrong" Color="#3B4254"/>
|
|
|
|
<!-- Text -->
|
|
<SolidColorBrush x:Key="FsTextPrimary" Color="#F8FAFC"/>
|
|
<SolidColorBrush x:Key="FsTextSecondary" Color="#94A3B8"/>
|
|
<SolidColorBrush x:Key="FsTextTertiary" Color="#64748B"/>
|
|
|
|
<!-- Accents (Cybernetic Neon Cyan + Glowing Rims) -->
|
|
<SolidColorBrush x:Key="FsAccentBlue" Color="#06B6D4"/>
|
|
<SolidColorBrush x:Key="FsAccentCyan" Color="#06B6D4"/>
|
|
<SolidColorBrush x:Key="FsAccentCyanHover" Color="#22D3EE"/>
|
|
<SolidColorBrush x:Key="FsAccentCyanBg" Color="#083344"/>
|
|
<SolidColorBrush x:Key="FsAccentGreen" Color="#10B981"/>
|
|
<SolidColorBrush x:Key="FsAccentAmber" Color="#F59E0B"/>
|
|
<SolidColorBrush x:Key="FsAccentRed" Color="#EF4444"/>
|
|
|
|
<!-- Format pills -->
|
|
<SolidColorBrush x:Key="FsFmtPdf" Color="#E53E3E"/>
|
|
<SolidColorBrush x:Key="FsFmtPng" Color="#805AD5"/>
|
|
<SolidColorBrush x:Key="FsFmtHeic" Color="#D69E2E"/>
|
|
<SolidColorBrush x:Key="FsFmtJpg" Color="#3182CE"/>
|
|
<SolidColorBrush x:Key="FsFmtDocx" Color="#2B6CB0"/>
|
|
<SolidColorBrush x:Key="FsFmtHtml" Color="#DD6B20"/>
|
|
<SolidColorBrush x:Key="FsFmtRaw" Color="#319795"/>
|
|
<SolidColorBrush x:Key="FsFmtGif" Color="#9F7AEA"/>
|
|
<SolidColorBrush x:Key="FsFmtTiff" Color="#38B2AC"/>
|
|
<SolidColorBrush x:Key="FsFmtWebp" Color="#48BB78"/>
|
|
<SolidColorBrush x:Key="FsFmtBmp" Color="#718096"/>
|
|
<SolidColorBrush x:Key="FsFmtAvif" Color="#ED64A6"/>
|
|
<SolidColorBrush x:Key="FsFmtHwp" Color="#9B2C2C"/>
|
|
<SolidColorBrush x:Key="FsFmtOther" Color="#4A5568"/>
|
|
|
|
<!-- Format pills (신규: 데이터/벡터/영상/오디오 카테고리) -->
|
|
<!-- 출처: VS Code Material Icon Theme + Seti UI(Solarized) + GitHub Linguist 의 hue 컨벤션을
|
|
차용하되, 채도/명도는 기존 Chakra/Tailwind 500 솔리드 톤(흰 텍스트 위 대비)에 맞춰 재조정.
|
|
Linear OKLCH 균일 명도 원칙(다크 #090A0C~#1C1E22 배경에서 한 칩만 튀지 않게)을 적용. -->
|
|
<!-- 데이터/표 = 그린 (Material table=#8BC34A, Seti green, Excel 브랜드 그린) -->
|
|
<SolidColorBrush x:Key="FsFmtCsv" Color="#68A063"/>
|
|
<SolidColorBrush x:Key="FsFmtXlsx" Color="#38A169"/>
|
|
<!-- 데이터/구조 = 골드 (Material json=#F9A825, Seti yellow); 기존 HEIC(#D69E2E)보다 노랑쪽 -->
|
|
<SolidColorBrush x:Key="FsFmtJson" Color="#E3B341"/>
|
|
<!-- 벡터 = 핑크-마젠타 (Seti svg=purple/css=pink); 노랑 JSON과 즉시 구분 -->
|
|
<SolidColorBrush x:Key="FsFmtSvg" Color="#E05A9C"/>
|
|
<!-- 영상 = 코랄/오렌지레드 (Material video=#FF9800, 통념 영상=난색); 기존 PDF(#E53E3E)와 구분 -->
|
|
<SolidColorBrush x:Key="FsFmtVideo" Color="#FF7043"/>
|
|
<!-- 오디오 = 라이트 퍼플 (Seti audio=purple, 통념 오디오=보라); 기존 PNG/GIF보다 라이트 -->
|
|
<SolidColorBrush x:Key="FsFmtAudio" Color="#B794F4"/>
|
|
|
|
<!-- 포맷 카테고리별 시그니처 뱃지 브러시 (designpaca Dark Instrument) -->
|
|
<SolidColorBrush x:Key="FsBadgeImageBrush" Color="#06B6D4"/>
|
|
<SolidColorBrush x:Key="FsBadgeImageBg" Color="#083344"/>
|
|
<SolidColorBrush x:Key="FsBadgeDocBrush" Color="#10B981"/>
|
|
<SolidColorBrush x:Key="FsBadgeDocBg" Color="#064E3B"/>
|
|
<SolidColorBrush x:Key="FsBadgeVideoBrush" Color="#F59E0B"/>
|
|
<SolidColorBrush x:Key="FsBadgeVideoBg" Color="#451A03"/>
|
|
<SolidColorBrush x:Key="FsBadgeAudioBrush" Color="#A855F7"/>
|
|
<SolidColorBrush x:Key="FsBadgeAudioBg" Color="#3B0764"/>
|
|
<SolidColorBrush x:Key="FsBadgeArchiveBrush" Color="#EC4899"/>
|
|
<SolidColorBrush x:Key="FsBadgeArchiveBg" Color="#500724"/>
|
|
|
|
<!-- Dark Instrument 정밀 계측기 랙마운트 카드 스타일 -->
|
|
<Style x:Key="FsInstrumentCardStyle" TargetType="Border">
|
|
<Setter Property="Background" Value="{StaticResource FsBgSurface}"/>
|
|
<Setter Property="BorderBrush" Value="{StaticResource FsBorderHairline}"/>
|
|
<Setter Property="BorderThickness" Value="1"/>
|
|
<Setter Property="CornerRadius" Value="8"/>
|
|
<Setter Property="Padding" Value="12,10"/>
|
|
</Style>
|
|
|
|
<!-- 손실 등급 토큰 (Radix dark; Container는 중립 회색 — 사용자 결정) -->
|
|
<SolidColorBrush x:Key="FsLossLosslessDot" Color="#30A46C"/>
|
|
<SolidColorBrush x:Key="FsLossLosslessText" Color="#3DD68C"/>
|
|
<SolidColorBrush x:Key="FsLossLosslessBg" Color="#132D21"/>
|
|
<SolidColorBrush x:Key="FsLossContainerDot" Color="#717784"/>
|
|
<SolidColorBrush x:Key="FsLossContainerText" Color="#A6ADC8"/>
|
|
<SolidColorBrush x:Key="FsLossContainerBg" Color="#23252A"/>
|
|
<SolidColorBrush x:Key="FsLossRecodeDot" Color="#FFC53D"/>
|
|
<SolidColorBrush x:Key="FsLossRecodeText" Color="#FFCA16"/>
|
|
<SolidColorBrush x:Key="FsLossRecodeBg" Color="#302008"/>
|
|
<SolidColorBrush x:Key="FsLossRasterizeDot" Color="#E5484D"/>
|
|
<SolidColorBrush x:Key="FsLossRasterizeText" Color="#FF9592"/>
|
|
<SolidColorBrush x:Key="FsLossRasterizeBg" Color="#3B1219"/>
|
|
|
|
<!-- 상태 시맨틱 토큰 (Radix dark scales) -->
|
|
<SolidColorBrush x:Key="FsStatusSuccess" Color="#30A46C"/>
|
|
<SolidColorBrush x:Key="FsStatusSuccessText" Color="#3DD68C"/>
|
|
<SolidColorBrush x:Key="FsStatusSuccessBg" Color="#132D21"/>
|
|
<SolidColorBrush x:Key="FsStatusWarn" Color="#FFC53D"/>
|
|
<SolidColorBrush x:Key="FsStatusWarnText" Color="#FFCA16"/>
|
|
<SolidColorBrush x:Key="FsStatusWarnBg" Color="#302008"/>
|
|
<SolidColorBrush x:Key="FsStatusDanger" Color="#E5484D"/>
|
|
<SolidColorBrush x:Key="FsStatusDangerText" Color="#FF9592"/>
|
|
<SolidColorBrush x:Key="FsStatusDangerBg" Color="#3B1219"/>
|
|
<SolidColorBrush x:Key="FsStatusInfo" Color="#0090FF"/>
|
|
<SolidColorBrush x:Key="FsStatusInfoText" Color="#70B8FF"/>
|
|
<SolidColorBrush x:Key="FsStatusInfoBg" Color="#0D2847"/>
|
|
|
|
<!-- Geist식 8% 투명 보더 -->
|
|
<SolidColorBrush x:Key="FsBorderHairline" Color="#14FFFFFF"/>
|
|
|
|
<!-- Font families -->
|
|
<FontFamily x:Key="FsFontSans">Inter, Segoe UI Variable Text, Segoe UI</FontFamily>
|
|
<FontFamily x:Key="FsFontMono">JetBrains Mono, Cascadia Mono, Consolas</FontFamily>
|
|
|
|
<!-- Typography styles -->
|
|
<Style x:Key="FsLabelStyle" TargetType="TextBlock">
|
|
<Setter Property="FontFamily" Value="{StaticResource FsFontSans}"/>
|
|
<Setter Property="FontSize" Value="11"/>
|
|
<Setter Property="FontWeight" Value="SemiBold"/>
|
|
<Setter Property="Foreground" Value="{StaticResource FsTextSecondary}"/>
|
|
<Setter Property="TextOptions.TextFormattingMode" Value="Display"/>
|
|
</Style>
|
|
|
|
<Style x:Key="FsCaptionStyle" TargetType="TextBlock">
|
|
<Setter Property="FontFamily" Value="{StaticResource FsFontSans}"/>
|
|
<Setter Property="FontSize" Value="11"/>
|
|
<Setter Property="Foreground" Value="{StaticResource FsTextTertiary}"/>
|
|
</Style>
|
|
|
|
<Style x:Key="FsBodyStyle" TargetType="TextBlock">
|
|
<Setter Property="FontFamily" Value="{StaticResource FsFontSans}"/>
|
|
<Setter Property="FontSize" Value="13"/>
|
|
<Setter Property="Foreground" Value="{StaticResource FsTextPrimary}"/>
|
|
</Style>
|
|
|
|
<Style x:Key="FsMonoStyle" TargetType="TextBlock">
|
|
<Setter Property="FontFamily" Value="{StaticResource FsFontMono}"/>
|
|
<Setter Property="FontSize" Value="12"/>
|
|
<Setter Property="Foreground" Value="{StaticResource FsTextSecondary}"/>
|
|
</Style>
|
|
|
|
<!-- Fluent typography aliases (Used across dialogs) -->
|
|
<Style x:Key="TextSubtitle" TargetType="TextBlock" BasedOn="{StaticResource FsBodyStyle}">
|
|
<Setter Property="FontSize" Value="16"/>
|
|
<Setter Property="FontWeight" Value="SemiBold"/>
|
|
</Style>
|
|
<Style x:Key="TextCaption" TargetType="TextBlock" BasedOn="{StaticResource FsCaptionStyle}"/>
|
|
<Style x:Key="TextBody" TargetType="TextBlock" BasedOn="{StaticResource FsBodyStyle}"/>
|
|
<Style x:Key="TextBodyStrong" TargetType="TextBlock" BasedOn="{StaticResource FsBodyStyle}">
|
|
<Setter Property="FontWeight" Value="SemiBold"/>
|
|
</Style>
|
|
|
|
<!-- Slider style: 2px track, 14px round thumb, blue fill up to value -->
|
|
<Style x:Key="FsSliderStyle" TargetType="Slider">
|
|
<Setter Property="Background" Value="Transparent"/>
|
|
<Setter Property="Foreground" Value="{StaticResource FsAccentBlue}"/>
|
|
<Setter Property="MinHeight" Value="20"/>
|
|
<Setter Property="VerticalAlignment" Value="Center"/>
|
|
<Setter Property="IsMoveToPointEnabled" Value="True"/>
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="Slider">
|
|
<Grid>
|
|
<Border Height="2" CornerRadius="1"
|
|
Background="{StaticResource FsBorderStrong}"
|
|
VerticalAlignment="Center"/>
|
|
<Track x:Name="PART_Track">
|
|
<Track.DecreaseRepeatButton>
|
|
<RepeatButton Command="Slider.DecreaseLarge">
|
|
<RepeatButton.Template>
|
|
<ControlTemplate TargetType="RepeatButton">
|
|
<Border Height="2" CornerRadius="1"
|
|
Background="{StaticResource FsAccentBlue}"
|
|
VerticalAlignment="Center"/>
|
|
</ControlTemplate>
|
|
</RepeatButton.Template>
|
|
</RepeatButton>
|
|
</Track.DecreaseRepeatButton>
|
|
<Track.Thumb>
|
|
<Thumb>
|
|
<Thumb.Template>
|
|
<ControlTemplate TargetType="Thumb">
|
|
<Ellipse Width="14" Height="14"
|
|
Fill="{StaticResource FsTextPrimary}"/>
|
|
</ControlTemplate>
|
|
</Thumb.Template>
|
|
</Thumb>
|
|
</Track.Thumb>
|
|
<Track.IncreaseRepeatButton>
|
|
<RepeatButton Command="Slider.IncreaseLarge">
|
|
<RepeatButton.Template>
|
|
<ControlTemplate TargetType="RepeatButton">
|
|
<Border Background="Transparent"/>
|
|
</ControlTemplate>
|
|
</RepeatButton.Template>
|
|
</RepeatButton>
|
|
</Track.IncreaseRepeatButton>
|
|
</Track>
|
|
</Grid>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
|
|
<!-- Tab pill style (Refined Segmented Control) -->
|
|
<Style x:Key="FsTabPillStyle" TargetType="ToggleButton">
|
|
<Setter Property="Background" Value="Transparent"/>
|
|
<Setter Property="Foreground" Value="{StaticResource FsTextSecondary}"/>
|
|
<Setter Property="BorderThickness" Value="0"/>
|
|
<Setter Property="Padding" Value="12,5"/>
|
|
<Setter Property="FontSize" Value="12"/>
|
|
<Setter Property="FontWeight" Value="Medium"/>
|
|
<Setter Property="Cursor" Value="Hand"/>
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="ToggleButton">
|
|
<Border x:Name="PART_Bd" CornerRadius="6"
|
|
Padding="{TemplateBinding Padding}"
|
|
Background="{TemplateBinding Background}"
|
|
BorderThickness="{TemplateBinding BorderThickness}"
|
|
BorderBrush="{TemplateBinding BorderBrush}">
|
|
<ContentPresenter HorizontalAlignment="Center"
|
|
VerticalAlignment="Center"
|
|
TextElement.Foreground="{TemplateBinding Foreground}"/>
|
|
</Border>
|
|
<ControlTemplate.Triggers>
|
|
<Trigger Property="IsChecked" Value="True">
|
|
<Setter TargetName="PART_Bd" Property="Background" Value="#23262E"/>
|
|
<Setter TargetName="PART_Bd" Property="BorderBrush" Value="{StaticResource FsBorderHairline}"/>
|
|
<Setter TargetName="PART_Bd" Property="BorderThickness" Value="1"/>
|
|
<Setter Property="Foreground" Value="{StaticResource FsTextPrimary}"/>
|
|
<Setter Property="FontWeight" Value="SemiBold"/>
|
|
</Trigger>
|
|
<Trigger Property="IsMouseOver" Value="True">
|
|
<Setter TargetName="PART_Bd" Property="Background" Value="{StaticResource FsBgSurfaceHover}"/>
|
|
<Setter Property="Foreground" Value="{StaticResource FsTextPrimary}"/>
|
|
</Trigger>
|
|
<MultiTrigger>
|
|
<MultiTrigger.Conditions>
|
|
<Condition Property="IsChecked" Value="True"/>
|
|
<Condition Property="IsMouseOver" Value="True"/>
|
|
</MultiTrigger.Conditions>
|
|
<Setter TargetName="PART_Bd" Property="Background" Value="#2A2E38"/>
|
|
<Setter TargetName="PART_Bd" Property="BorderBrush" Value="{StaticResource FsBorderSubtle}"/>
|
|
</MultiTrigger>
|
|
</ControlTemplate.Triggers>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
|
|
<!-- Segment button style (Skip / Rename / Replace) -->
|
|
<Style x:Key="FsSegmentStyle" TargetType="ToggleButton">
|
|
<Setter Property="Background" Value="Transparent"/>
|
|
<Setter Property="Foreground" Value="{StaticResource FsTextSecondary}"/>
|
|
<Setter Property="BorderThickness" Value="0"/>
|
|
<Setter Property="FontSize" Value="12"/>
|
|
<Setter Property="FontWeight" Value="Medium"/>
|
|
<Setter Property="Cursor" Value="Hand"/>
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="ToggleButton">
|
|
<Border x:Name="PART_Bd" CornerRadius="4" Padding="0,6">
|
|
<ContentPresenter HorizontalAlignment="Center"
|
|
VerticalAlignment="Center"
|
|
TextElement.Foreground="{TemplateBinding Foreground}"/>
|
|
</Border>
|
|
<ControlTemplate.Triggers>
|
|
<Trigger Property="IsChecked" Value="True">
|
|
<Setter TargetName="PART_Bd" Property="Background" Value="{StaticResource FsBgSurface}"/>
|
|
<Setter Property="Foreground" Value="{StaticResource FsTextPrimary}"/>
|
|
</Trigger>
|
|
</ControlTemplate.Triggers>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
|
|
<!-- Primary button (Processing Queue / Run) -->
|
|
<Style x:Key="FsPrimaryButtonStyle" TargetType="Button">
|
|
<Setter Property="Background" Value="{StaticResource FsAccentCyan}"/>
|
|
<Setter Property="Foreground" Value="#090A0C"/>
|
|
<Setter Property="BorderThickness" Value="0"/>
|
|
<Setter Property="Padding" Value="12"/>
|
|
<Setter Property="FontSize" Value="13"/>
|
|
<Setter Property="FontWeight" Value="SemiBold"/>
|
|
<Setter Property="Cursor" Value="Hand"/>
|
|
<Setter Property="HorizontalContentAlignment" Value="Center"/>
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="Button">
|
|
<Border x:Name="PART_Bd"
|
|
Background="{TemplateBinding Background}"
|
|
CornerRadius="6"
|
|
Padding="{TemplateBinding Padding}">
|
|
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"
|
|
TextElement.Foreground="{TemplateBinding Foreground}"
|
|
TextElement.FontSize="{TemplateBinding FontSize}"
|
|
TextElement.FontWeight="{TemplateBinding FontWeight}"/>
|
|
</Border>
|
|
<ControlTemplate.Triggers>
|
|
<Trigger Property="IsEnabled" Value="False">
|
|
<Setter TargetName="PART_Bd" Property="Opacity" Value="0.4"/>
|
|
<Setter Property="Cursor" Value="Arrow"/>
|
|
</Trigger>
|
|
<Trigger Property="IsMouseOver" Value="True">
|
|
<Setter TargetName="PART_Bd" Property="Background" Value="{StaticResource FsAccentCyanHover}"/>
|
|
</Trigger>
|
|
</ControlTemplate.Triggers>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
|
|
<!-- Secondary button -->
|
|
<Style x:Key="FsSecondaryButtonStyle" TargetType="Button">
|
|
<Setter Property="Background" Value="{StaticResource FsBgSurface}"/>
|
|
<Setter Property="Foreground" Value="{StaticResource FsTextPrimary}"/>
|
|
<Setter Property="BorderBrush" Value="{StaticResource FsBorderSubtle}"/>
|
|
<Setter Property="BorderThickness" Value="1"/>
|
|
<Setter Property="Padding" Value="12,6"/>
|
|
<Setter Property="FontSize" Value="12"/>
|
|
<Setter Property="FontWeight" Value="Medium"/>
|
|
<Setter Property="Cursor" Value="Hand"/>
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="Button">
|
|
<Border x:Name="PART_Bd"
|
|
Background="{TemplateBinding Background}"
|
|
BorderBrush="{TemplateBinding BorderBrush}"
|
|
BorderThickness="{TemplateBinding BorderThickness}"
|
|
CornerRadius="6"
|
|
Padding="{TemplateBinding Padding}">
|
|
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"
|
|
TextElement.Foreground="{TemplateBinding Foreground}"
|
|
TextElement.FontSize="{TemplateBinding FontSize}"
|
|
TextElement.FontWeight="{TemplateBinding FontWeight}"/>
|
|
</Border>
|
|
<ControlTemplate.Triggers>
|
|
<Trigger Property="IsMouseOver" Value="True">
|
|
<Setter TargetName="PART_Bd" Property="Background" Value="{StaticResource FsBgSurfaceHover}"/>
|
|
</Trigger>
|
|
</ControlTemplate.Triggers>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
|
|
<!-- Tab badge (Refined micro badge) -->
|
|
<Style x:Key="FsTabBadgeStyle" TargetType="Border">
|
|
<Setter Property="CornerRadius" Value="4"/>
|
|
<Setter Property="Padding" Value="5,1"/>
|
|
<Setter Property="Background" Value="#14FFFFFF"/>
|
|
</Style>
|
|
|
|
<!-- Path input box -->
|
|
<Style x:Key="FsPathInputStyle" TargetType="TextBox">
|
|
<Setter Property="Background" Value="{StaticResource FsBgInput}"/>
|
|
<Setter Property="Foreground" Value="{StaticResource FsTextSecondary}"/>
|
|
<Setter Property="BorderBrush" Value="{StaticResource FsBorderSubtle}"/>
|
|
<Setter Property="BorderThickness" Value="1"/>
|
|
<Setter Property="Padding" Value="10,8"/>
|
|
<Setter Property="FontFamily" Value="{StaticResource FsFontMono}"/>
|
|
<Setter Property="FontSize" Value="11"/>
|
|
<Setter Property="CaretBrush" Value="{StaticResource FsTextPrimary}"/>
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="TextBox">
|
|
<Border Background="{TemplateBinding Background}"
|
|
BorderBrush="{TemplateBinding BorderBrush}"
|
|
BorderThickness="{TemplateBinding BorderThickness}"
|
|
CornerRadius="6"
|
|
Padding="{TemplateBinding Padding}">
|
|
<ScrollViewer x:Name="PART_ContentHost"/>
|
|
</Border>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
|
|
<!-- PasswordBox (API 키 입력) -->
|
|
<Style x:Key="FsPasswordInputStyle" TargetType="PasswordBox">
|
|
<Setter Property="Background" Value="{StaticResource FsBgInput}"/>
|
|
<Setter Property="Foreground" Value="{StaticResource FsTextPrimary}"/>
|
|
<Setter Property="BorderBrush" Value="{StaticResource FsBorderSubtle}"/>
|
|
<Setter Property="BorderThickness" Value="1"/>
|
|
<Setter Property="Padding" Value="10,8"/>
|
|
<Setter Property="FontFamily" Value="{StaticResource FsFontMono}"/>
|
|
<Setter Property="FontSize" Value="12"/>
|
|
<Setter Property="CaretBrush" Value="{StaticResource FsTextPrimary}"/>
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="PasswordBox">
|
|
<Border Background="{TemplateBinding Background}"
|
|
BorderBrush="{TemplateBinding BorderBrush}"
|
|
BorderThickness="{TemplateBinding BorderThickness}"
|
|
CornerRadius="6"
|
|
Padding="{TemplateBinding Padding}">
|
|
<ScrollViewer x:Name="PART_ContentHost"/>
|
|
</Border>
|
|
<ControlTemplate.Triggers>
|
|
<Trigger Property="IsFocused" Value="True">
|
|
<Setter Property="BorderBrush" Value="{StaticResource FsAccentBlue}"/>
|
|
</Trigger>
|
|
</ControlTemplate.Triggers>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
|
|
<!-- 손실 등급 dot (8px 원) -->
|
|
<Style x:Key="FsLossDotStyle" TargetType="Ellipse">
|
|
<Setter Property="Width" Value="8"/>
|
|
<Setter Property="Height" Value="8"/>
|
|
<Setter Property="VerticalAlignment" Value="Center"/>
|
|
</Style>
|
|
|
|
<!-- ============================================================
|
|
UX polish 스타일 (단계 1) — Linear/Geist 영감, 절제된 확장
|
|
============================================================ -->
|
|
|
|
<!-- 숫자/통계용: 모노 + tabular 숫자 정렬(자리 흔들림 방지) -->
|
|
<Style x:Key="FsNumStyle" TargetType="TextBlock" BasedOn="{StaticResource FsMonoStyle}">
|
|
<Setter Property="Typography.NumeralAlignment" Value="Tabular"/>
|
|
<Setter Property="Typography.NumeralStyle" Value="Lining"/>
|
|
<Setter Property="Foreground" Value="{StaticResource FsTextSecondary}"/>
|
|
<Setter Property="TextOptions.TextFormattingMode" Value="Display"/>
|
|
</Style>
|
|
|
|
<!-- 손실 등급 pill: Background는 코드에서 FsLoss*Bg 주입 -->
|
|
<Style x:Key="FsLossPillStyle" TargetType="Border">
|
|
<Setter Property="CornerRadius" Value="4"/>
|
|
<Setter Property="Padding" Value="6,1"/>
|
|
<Setter Property="VerticalAlignment" Value="Center"/>
|
|
</Style>
|
|
|
|
<!-- 큐/이력 row 글래스 카드: Neo Glass + 림라이트 보더 + 부드러운 호버 글로우 -->
|
|
<Style x:Key="FsListRowStyle" TargetType="Border">
|
|
<Setter Property="Background" Value="{StaticResource FsBgSurface}"/>
|
|
<Setter Property="CornerRadius" Value="10"/>
|
|
<Setter Property="BorderThickness" Value="1"/>
|
|
<Setter Property="BorderBrush" Value="{StaticResource FsGlassBorderBrush}"/>
|
|
<Setter Property="Margin" Value="0,0,0,8"/>
|
|
<Setter Property="Padding" Value="12,10"/>
|
|
<Style.Triggers>
|
|
<Trigger Property="IsMouseOver" Value="True">
|
|
<Setter Property="Background" Value="{StaticResource FsBgSurfaceHover}"/>
|
|
<Setter Property="BorderBrush" Value="{StaticResource FsGlassBorderBrushHover}"/>
|
|
<Trigger.EnterActions>
|
|
<BeginStoryboard>
|
|
<Storyboard>
|
|
<DoubleAnimation Storyboard.TargetProperty="Opacity"
|
|
From="0.88" To="1" Duration="0:0:0.12"/>
|
|
</Storyboard>
|
|
</BeginStoryboard>
|
|
</Trigger.EnterActions>
|
|
</Trigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
|
|
<!-- 32x32 아이콘 버튼(설정, 삭제): 투명 → hover surface, radius 6 -->
|
|
<Style x:Key="FsIconButtonStyle" TargetType="Button">
|
|
<Setter Property="Width" Value="32"/>
|
|
<Setter Property="Height" Value="32"/>
|
|
<Setter Property="Background" Value="Transparent"/>
|
|
<Setter Property="Foreground" Value="{StaticResource FsTextSecondary}"/>
|
|
<Setter Property="BorderThickness" Value="0"/>
|
|
<Setter Property="FontSize" Value="15"/>
|
|
<Setter Property="Cursor" Value="Hand"/>
|
|
<Setter Property="HorizontalContentAlignment" Value="Center"/>
|
|
<Setter Property="VerticalContentAlignment" Value="Center"/>
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="Button">
|
|
<Border x:Name="PART_Bd"
|
|
Background="{TemplateBinding Background}"
|
|
CornerRadius="6">
|
|
<ContentPresenter HorizontalAlignment="Center"
|
|
VerticalAlignment="Center"
|
|
TextElement.Foreground="{TemplateBinding Foreground}"
|
|
TextElement.FontSize="{TemplateBinding FontSize}"/>
|
|
</Border>
|
|
<ControlTemplate.Triggers>
|
|
<Trigger Property="IsMouseOver" Value="True">
|
|
<Setter TargetName="PART_Bd" Property="Background" Value="{StaticResource FsBgSurfaceHover}"/>
|
|
<Setter Property="Foreground" Value="{StaticResource FsTextPrimary}"/>
|
|
</Trigger>
|
|
<Trigger Property="IsEnabled" Value="False">
|
|
<Setter TargetName="PART_Bd" Property="Opacity" Value="0.4"/>
|
|
<Setter Property="Cursor" Value="Arrow"/>
|
|
</Trigger>
|
|
</ControlTemplate.Triggers>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
|
|
<!-- Neo Glass Card Shell (Windows 11 Fluent 2 Acrylic, radius 12, 림라이트 보더) -->
|
|
<Style x:Key="FsCardStyle" TargetType="Border">
|
|
<Setter Property="Background" Value="{StaticResource FsBgSurface}"/>
|
|
<Setter Property="BorderBrush" Value="{StaticResource FsGlassBorderBrush}"/>
|
|
<Setter Property="BorderThickness" Value="1"/>
|
|
<Setter Property="CornerRadius" Value="12"/>
|
|
<Setter Property="Padding" Value="16"/>
|
|
<Setter Property="Margin" Value="0,0,0,16"/>
|
|
</Style>
|
|
|
|
<!-- Double-Bezel (Doppelrand) Machine-Hardware Container Styles (high-end-visual-design Section 4) -->
|
|
<Style x:Key="FsDoubleBezelShellStyle" TargetType="Border">
|
|
<Setter Property="Background" Value="#10131B"/>
|
|
<Setter Property="BorderBrush" Value="{StaticResource FsBorderHairline}"/>
|
|
<Setter Property="BorderThickness" Value="1"/>
|
|
<Setter Property="CornerRadius" Value="14"/>
|
|
<Setter Property="Padding" Value="4"/>
|
|
<Setter Property="Margin" Value="0,0,0,16"/>
|
|
</Style>
|
|
|
|
<Style x:Key="FsDoubleBezelCoreStyle" TargetType="Border">
|
|
<Setter Property="Background" Value="{StaticResource FsBgSurface}"/>
|
|
<Setter Property="BorderBrush" Value="{StaticResource FsGlassBorderBrush}"/>
|
|
<Setter Property="BorderThickness" Value="1"/>
|
|
<Setter Property="CornerRadius" Value="10"/>
|
|
<Setter Property="Padding" Value="14"/>
|
|
</Style>
|
|
|
|
<!-- Physical <kbd> Keycap Shortcut Style (minimalist-ui Section 5) -->
|
|
<Style x:Key="FsKbdStyle" TargetType="Border">
|
|
<Setter Property="Background" Value="{StaticResource FsBgInput}"/>
|
|
<Setter Property="BorderBrush" Value="{StaticResource FsBorderStrong}"/>
|
|
<Setter Property="BorderThickness" Value="1,1,2,1"/>
|
|
<Setter Property="CornerRadius" Value="4"/>
|
|
<Setter Property="Padding" Value="6,2"/>
|
|
<Setter Property="Margin" Value="0,0,4,0"/>
|
|
<Setter Property="VerticalAlignment" Value="Center"/>
|
|
</Style>
|
|
|
|
<!-- Island Button-in-Button Primary Launch CTA Style (high-end-visual-design Section 4.B) -->
|
|
<LinearGradientBrush x:Key="FsIslandButtonGlow" StartPoint="0,0" EndPoint="1,1">
|
|
<GradientStop Color="#0284C7" Offset="0.0"/>
|
|
<GradientStop Color="#0369A1" Offset="1.0"/>
|
|
</LinearGradientBrush>
|
|
<LinearGradientBrush x:Key="FsIslandButtonGlowHover" StartPoint="0,0" EndPoint="1,1">
|
|
<GradientStop Color="#0EA5E9" Offset="0.0"/>
|
|
<GradientStop Color="#0284C7" Offset="1.0"/>
|
|
</LinearGradientBrush>
|
|
|
|
<Style x:Key="FsIslandPrimaryButtonStyle" TargetType="Button">
|
|
<Setter Property="Background" Value="{StaticResource FsIslandButtonGlow}"/>
|
|
<Setter Property="Foreground" Value="#FFFFFF"/>
|
|
<Setter Property="BorderBrush" Value="#4038BDF8"/>
|
|
<Setter Property="BorderThickness" Value="1"/>
|
|
<Setter Property="Height" Value="44"/>
|
|
<Setter Property="Padding" Value="16,0,10,0"/>
|
|
<Setter Property="FontSize" Value="13"/>
|
|
<Setter Property="FontWeight" Value="SemiBold"/>
|
|
<Setter Property="Cursor" Value="Hand"/>
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="Button">
|
|
<Border x:Name="PART_Bd"
|
|
Background="{TemplateBinding Background}"
|
|
BorderBrush="{TemplateBinding BorderBrush}"
|
|
BorderThickness="{TemplateBinding BorderThickness}"
|
|
CornerRadius="10"
|
|
Padding="{TemplateBinding Padding}">
|
|
<Grid VerticalAlignment="Center">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="*"/>
|
|
<ColumnDefinition Width="Auto"/>
|
|
</Grid.ColumnDefinitions>
|
|
<ContentPresenter Grid.Column="0"
|
|
HorizontalAlignment="Center"
|
|
VerticalAlignment="Center"
|
|
TextElement.Foreground="{TemplateBinding Foreground}"
|
|
TextElement.FontSize="{TemplateBinding FontSize}"
|
|
TextElement.FontWeight="{TemplateBinding FontWeight}"/>
|
|
<Border Grid.Column="1" Margin="8,0,0,0"
|
|
Width="26" Height="26" CornerRadius="13"
|
|
Background="#22FFFFFF"
|
|
VerticalAlignment="Center" HorizontalAlignment="Right">
|
|
<ui:SymbolIcon Symbol="ArrowRight24" FontSize="13"
|
|
Foreground="#FFFFFF"
|
|
HorizontalAlignment="Center" VerticalAlignment="Center"/>
|
|
</Border>
|
|
</Grid>
|
|
</Border>
|
|
<ControlTemplate.Triggers>
|
|
<Trigger Property="IsEnabled" Value="False">
|
|
<Setter TargetName="PART_Bd" Property="Opacity" Value="0.45"/>
|
|
<Setter Property="Cursor" Value="Arrow"/>
|
|
</Trigger>
|
|
<Trigger Property="IsMouseOver" Value="True">
|
|
<Setter TargetName="PART_Bd" Property="Background" Value="{StaticResource FsIslandButtonGlowHover}"/>
|
|
<Setter TargetName="PART_Bd" Property="BorderBrush" Value="#8038BDF8"/>
|
|
</Trigger>
|
|
</ControlTemplate.Triggers>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
|
|
<!-- 실시간 기술 스펙 칩 (Live Spec Chip) 캡슐 스타일 -->
|
|
<Style x:Key="FsSpecChipStyle" TargetType="Border">
|
|
<Setter Property="Background" Value="{StaticResource FsAccentCyanBg}"/>
|
|
<Setter Property="BorderBrush" Value="{StaticResource FsAccentCyan}"/>
|
|
<Setter Property="BorderThickness" Value="1"/>
|
|
<Setter Property="CornerRadius" Value="6"/>
|
|
<Setter Property="Padding" Value="8,3"/>
|
|
<Setter Property="Margin" Value="0,0,6,6"/>
|
|
<Setter Property="VerticalAlignment" Value="Center"/>
|
|
</Style>
|
|
|
|
<!-- Standard Toolbar Button (Height 32px, unified icon+text vertical alignment) -->
|
|
<Style x:Key="FsToolbarButtonStyle" TargetType="Button">
|
|
<Setter Property="Background" Value="{StaticResource FsBgSurface}"/>
|
|
<Setter Property="Foreground" Value="{StaticResource FsTextPrimary}"/>
|
|
<Setter Property="BorderBrush" Value="{StaticResource FsGlassBorderBrush}"/>
|
|
<Setter Property="BorderThickness" Value="1"/>
|
|
<Setter Property="Height" Value="32"/>
|
|
<Setter Property="Padding" Value="12,0"/>
|
|
<Setter Property="FontSize" Value="12"/>
|
|
<Setter Property="FontWeight" Value="Medium"/>
|
|
<Setter Property="Cursor" Value="Hand"/>
|
|
<Setter Property="VerticalAlignment" Value="Center"/>
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="Button">
|
|
<Border x:Name="PART_Bd"
|
|
Background="{TemplateBinding Background}"
|
|
BorderBrush="{TemplateBinding BorderBrush}"
|
|
BorderThickness="{TemplateBinding BorderThickness}"
|
|
CornerRadius="8"
|
|
Padding="{TemplateBinding Padding}">
|
|
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"
|
|
TextElement.Foreground="{TemplateBinding Foreground}"
|
|
TextElement.FontSize="{TemplateBinding FontSize}"
|
|
TextElement.FontWeight="{TemplateBinding FontWeight}"/>
|
|
</Border>
|
|
<ControlTemplate.Triggers>
|
|
<Trigger Property="IsMouseOver" Value="True">
|
|
<Setter TargetName="PART_Bd" Property="Background" Value="{StaticResource FsBgSurfaceHover}"/>
|
|
<Setter TargetName="PART_Bd" Property="BorderBrush" Value="{StaticResource FsGlassBorderBrushHover}"/>
|
|
</Trigger>
|
|
<Trigger Property="IsEnabled" Value="False">
|
|
<Setter TargetName="PART_Bd" Property="Opacity" Value="0.4"/>
|
|
</Trigger>
|
|
</ControlTemplate.Triggers>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
|
|
<!-- Windows 11 Fluent 2 Unified TitleBar Style (Zero Vertical Misalignment & True Caption Centering) -->
|
|
<Style TargetType="{x:Type ui:TitleBar}">
|
|
<Setter Property="Height" Value="42"/>
|
|
<Setter Property="Background" Value="Transparent"/>
|
|
<Setter Property="Foreground" Value="{StaticResource FsTextPrimary}"/>
|
|
<Setter Property="FontFamily" Value="{StaticResource FsFontSans}"/>
|
|
<Setter Property="FontSize" Value="12"/>
|
|
<Setter Property="FontWeight" Value="SemiBold"/>
|
|
<Setter Property="ButtonsForeground" Value="#D0D5DD"/>
|
|
<Setter Property="ButtonsBackground" Value="Transparent"/>
|
|
<Setter Property="VerticalAlignment" Value="Stretch"/>
|
|
<Setter Property="HorizontalAlignment" Value="Stretch"/>
|
|
<Setter Property="VerticalContentAlignment" Value="Stretch"/>
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="{x:Type ui:TitleBar}">
|
|
<Grid Background="{TemplateBinding Background}" Name="PART_MainGrid"
|
|
HorizontalAlignment="{TemplateBinding HorizontalAlignment}"
|
|
VerticalAlignment="Stretch">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="Auto"/>
|
|
<ColumnDefinition Width="*"/>
|
|
</Grid.ColumnDefinitions>
|
|
|
|
<!-- Left Icon Area -->
|
|
<Grid Name="TitleGrid" Margin="{TemplateBinding Padding}" HorizontalAlignment="Left" VerticalAlignment="Center" Grid.Column="0">
|
|
<ContentPresenter Content="{TemplateBinding Icon}" Name="PART_Icon" Height="18" Width="18"
|
|
VerticalAlignment="Center" Focusable="False"
|
|
RenderOptions.BitmapScalingMode="HighQuality"
|
|
AutomationProperties.AutomationId="TitleBarIcon"/>
|
|
</Grid>
|
|
|
|
<Grid Grid.Column="1">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="Auto"/>
|
|
<ColumnDefinition Width="*"/>
|
|
<ColumnDefinition Width="Auto"/>
|
|
<ColumnDefinition Width="Auto"/>
|
|
</Grid.ColumnDefinitions>
|
|
|
|
<!-- Header (Tabs + Telemetry) or Title (when Header is string or TextBlock) -->
|
|
<ContentPresenter Content="{TemplateBinding Header}"
|
|
Margin="16,0,0,0"
|
|
HorizontalAlignment="Left"
|
|
VerticalAlignment="Center"
|
|
Grid.Column="0"/>
|
|
|
|
<!-- CenterContent (Wide Native Drag Area) -->
|
|
<ContentPresenter Content="{TemplateBinding CenterContent}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="Center" Grid.Column="1"/>
|
|
|
|
<!-- TrailingContent (Action Buttons) -->
|
|
<ContentPresenter Content="{TemplateBinding TrailingContent}" HorizontalAlignment="Right" VerticalAlignment="Center" Grid.Column="2"/>
|
|
|
|
<!-- Window Control Buttons: Stretch full height, icons centered on exact same centerline -->
|
|
<Grid HorizontalAlignment="Right" VerticalAlignment="Stretch" Grid.Column="3">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="Auto"/>
|
|
<ColumnDefinition Width="Auto"/>
|
|
<ColumnDefinition Width="Auto"/>
|
|
<ColumnDefinition Width="Auto"/>
|
|
<ColumnDefinition Width="Auto"/>
|
|
</Grid.ColumnDefinitions>
|
|
<ui:TitleBarButton ButtonType="Help" Name="PART_HelpButton" AutomationProperties.AutomationId="TitleBarHelpButton" Grid.Column="0" VerticalAlignment="Stretch" Height="Auto" Width="46" Background="Transparent" Foreground="{TemplateBinding ButtonsForeground}" ButtonsForeground="{TemplateBinding ButtonsForeground}"/>
|
|
<ui:TitleBarButton ButtonType="Minimize" Name="PART_MinimizeButton" AutomationProperties.AutomationId="TitleBarMinimizeButton" Grid.Column="1" VerticalAlignment="Stretch" Height="Auto" Width="46" Background="Transparent" Foreground="{TemplateBinding ButtonsForeground}" ButtonsForeground="{TemplateBinding ButtonsForeground}"/>
|
|
<ui:TitleBarButton ButtonType="Maximize" Name="PART_MaximizeButton" IsHitTestVisible="True" AutomationProperties.AutomationId="TitleBarMaximizeButton" Grid.Column="2" VerticalAlignment="Stretch" Height="Auto" Width="46" Background="Transparent" Foreground="{TemplateBinding ButtonsForeground}" ButtonsForeground="{TemplateBinding ButtonsForeground}"/>
|
|
<ui:TitleBarButton ButtonType="Close" MouseOverButtonsForeground="#FFFFFFFF" MouseOverBackground="#E81123" Name="PART_CloseButton" AutomationProperties.AutomationId="TitleBarCloseButton" Grid.Column="4" VerticalAlignment="Stretch" Height="Auto" Width="46" Background="Transparent" Foreground="{TemplateBinding ButtonsForeground}" ButtonsForeground="{TemplateBinding ButtonsForeground}"/>
|
|
|
|
</Grid>
|
|
</Grid>
|
|
</Grid>
|
|
|
|
<ControlTemplate.Triggers>
|
|
<Trigger Property="Icon" Value="{x:Null}">
|
|
<Setter TargetName="TitleGrid" Property="Visibility" Value="Collapsed"/>
|
|
</Trigger>
|
|
<MultiTrigger>
|
|
<MultiTrigger.Conditions>
|
|
<Condition Property="ShowMaximize" Value="True"/>
|
|
<Condition Property="IsMaximized" Value="True"/>
|
|
</MultiTrigger.Conditions>
|
|
<Setter TargetName="PART_MaximizeButton" Property="ButtonType" Value="Restore"/>
|
|
</MultiTrigger>
|
|
<Trigger Property="ShowHelp" Value="False">
|
|
<Setter TargetName="PART_HelpButton" Property="Visibility" Value="Collapsed"/>
|
|
</Trigger>
|
|
<Trigger Property="ShowMinimize" Value="False">
|
|
<Setter TargetName="PART_MinimizeButton" Property="Visibility" Value="Collapsed"/>
|
|
</Trigger>
|
|
<Trigger Property="ShowMaximize" Value="False">
|
|
<Setter TargetName="PART_MaximizeButton" Property="Visibility" Value="Collapsed"/>
|
|
</Trigger>
|
|
<Trigger Property="ShowClose" Value="False">
|
|
<Setter TargetName="PART_CloseButton" Property="Visibility" Value="Collapsed"/>
|
|
</Trigger>
|
|
</ControlTemplate.Triggers>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
</ResourceDictionary>
|
|
|