UI-Entwurf umgesetzt, Rocket.Chat-Tool, Deploymentcenter 2.4
Sicherungspunkt vor dem Aufraeumen. Buendelt die Arbeit, die seit dem Abschluss der Avalonia-Portierung im Arbeitsverzeichnis lag. Oberflaeche - Entwurf aus Mockup/ umgesetzt: Theme.axaml (Farben je Thema, Barlow als mitgelieferte Schrift), Icons.axaml (Symbolgeometrien), Shell.axaml (eigene ControlThemes statt Fluent umzufaerben). - Neue Steuerelemente StrokeIcon und BlueprintFrame, Seiten fuer Token-Verbrauch und Agenten-Chats, Werkzeug-Einstellungen als Seite statt eigenem Fenster, Texteditor-Fenster. - ThemeManager mit hellem und dunklem Thema; die beiden Pinsel-Konverter entfallen, weil ein fester Farbwert den Themenwechsel nicht ueberlebt. Rocket.Chat - Neues Tool-Projekt (Client, Konfiguration, Workspace-Dateien) nach der Bauform des Telegram-Tools: rocketchat_poll als Tool-Job, geweckt wird nur, wenn wirklich etwas anliegt. - send_file ist freigabepflichtig, send_message bewusst nicht: Der Raum ist Arbeitsraum, der Schutz sitzt an der Raum-Allowlist. - Konzept-Doc um die Messung gegen die echte Instanz 8.7 ergaenzt; drei Annahmen waren falsch und sind korrigiert. Deploymentcenter - DC6 (Update anwenden) und DC7 (Erstinstallation ueber setup.json) erledigt, DC3 fuer win-x64/dev; deploy/publish.py als Release-Strecke. - AppHost.DisposeAsync gegen doppeltes Herunterfahren gesperrt - sonst ueberschreibt eine zweite Abmeldung den Wartungszustand am Watchdog. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
<ResourceDictionary xmlns="https://github.com/avaloniaui"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||
|
||||
<!--
|
||||
Die Symbole des Entwurfs, 1:1 aus dem Mockup übernommen (Lucide-Umrisse, viewBox
|
||||
0 0 24 24, Strichstärke 1.5). Gezeichnet werden sie von Controls/StrokeIcon.cs, das
|
||||
denselben Koordinatenraum voraussetzt — wer hier ein Symbol ergänzt, muss es also
|
||||
ebenfalls auf 24×24 bringen.
|
||||
|
||||
Kreise stehen als zwei Halbbögen da (a-Befehle): StreamGeometry kennt keine
|
||||
<Ellipse>, und ein Rechteck mit vollem Radius wäre nicht dasselbe.
|
||||
-->
|
||||
|
||||
<!-- ─── Marke ─── -->
|
||||
<StreamGeometry x:Key="IconLogo">M12 9c-1.5-2.5-4-3-5.5-1.5S5 11 7 12c-1 1-1.5 2-1.5 3.5S7 18 8.5 17c1-1 1.5-2 1.5-3 M12 9c1.5-2.5 4-3 5.5-1.5S19 11 17 12c1 1 1.5 2 1.5 3.5S15 18 13.5 17c-1-1-1.5-2-1.5-3 M12 9v3</StreamGeometry>
|
||||
|
||||
<!-- ─── Navigation ─── -->
|
||||
<StreamGeometry x:Key="IconChat">M21 11.5a8.38 8.38 0 0 1-.9 3.8 8.5 8.5 0 0 1-7.6 4.7 8.38 8.38 0 0 1-3.8-.9L3 21l1.9-5.7a8.38 8.38 0 0 1-.9-3.8 8.5 8.5 0 0 1 4.7-7.6 8.38 8.38 0 0 1 3.8-.9h.5a8.48 8.48 0 0 1 8 8v.5z</StreamGeometry>
|
||||
<StreamGeometry x:Key="IconAgents">M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2 M13 7a4 4 0 1 1-8 0 4 4 0 0 1 8 0 M23 21v-2a4 4 0 0 0-3-3.87 M16 3.13a4 4 0 0 1 0 7.75</StreamGeometry>
|
||||
<StreamGeometry x:Key="IconTasks">M3 17l2 2 4-4 M3 7l2 2 4-4 M13 6h8 M13 12h8 M13 18h8</StreamGeometry>
|
||||
<StreamGeometry x:Key="IconChart">M3 3v18h18 M7 15v4 M11 11v8 M15 7v12 M19 12v7</StreamGeometry>
|
||||
<StreamGeometry x:Key="IconAgentChats">M8 12h.01 M12 12h.01 M16 12h.01 M21 12c0 4.4-4 8-9 8-1.3 0-2.6-.2-3.7-.7L3 20l1-4.2C3.4 14.6 3 13.3 3 12c0-4.4 4-8 9-8s9 3.6 9 8Z</StreamGeometry>
|
||||
<StreamGeometry x:Key="IconBackup">M3 4h18a1 1 0 0 1 1 1v3a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1z M4 9v9a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9 M10 13h4</StreamGeometry>
|
||||
<StreamGeometry x:Key="IconLogs">M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z M14 2v6h6 M9 13h6 M9 17h6</StreamGeometry>
|
||||
<StreamGeometry x:Key="IconSettings">M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0 M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 1 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-4 0v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 1 1-2.83-2.83l.06-.06A1.65 1.65 0 0 0 4.6 15a1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1 0-4h.09A1.65 1.65 0 0 0 4.6 9c.13-.32.19-.66.18-1a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 1 1 2.83-2.83l.06.06c.51.5 1.24.66 1.82.33H9c.32-.13.66-.19 1-.18A1.65 1.65 0 0 0 11.51 3H12a2 2 0 0 1 4 0v.09c0 .34.06.68.18 1a1.65 1.65 0 0 0 1.82.33l.06-.06a2 2 0 1 1 2.83 2.83l-.06.06c-.51.5-.67 1.24-.33 1.82V9c.13.32.19.66.18 1H21a2 2 0 0 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1z</StreamGeometry>
|
||||
<StreamGeometry x:Key="IconInfo">M22 12a10 10 0 1 1-20 0 10 10 0 0 1 20 0 M12 16v-4 M12 8h.01</StreamGeometry>
|
||||
|
||||
<!-- ─── Kopfzeile ─── -->
|
||||
<StreamGeometry x:Key="IconSun">M16 12a4 4 0 1 1-8 0 4 4 0 0 1 8 0 M12 2v2 M12 20v2 M4.9 4.9l1.4 1.4 M17.7 17.7l1.4 1.4 M2 12h2 M20 12h2 M4.9 19.1l1.4-1.4 M17.7 6.3l1.4-1.4</StreamGeometry>
|
||||
<StreamGeometry x:Key="IconMoon">M21 12.8A9 9 0 1 1 11.2 3a7 7 0 0 0 9.8 9.8z</StreamGeometry>
|
||||
<StreamGeometry x:Key="IconChevronLeft">M15 18l-6-6 6-6</StreamGeometry>
|
||||
<StreamGeometry x:Key="IconChevronRight">M9 18l6-6-6-6</StreamGeometry>
|
||||
<StreamGeometry x:Key="IconChevronDown">M6 9l6 6 6-6</StreamGeometry>
|
||||
|
||||
<!-- ─── Meldungen ─── -->
|
||||
<StreamGeometry x:Key="IconAlert">M12 9v4 M12 17h.01 M10.3 3.9 1.8 18a2 2 0 0 0 1.7 3h17a2 2 0 0 0 1.7-3L13.7 3.9a2 2 0 0 0-3.4 0Z</StreamGeometry>
|
||||
<StreamGeometry x:Key="IconClose">M18 6L6 18 M6 6l12 12</StreamGeometry>
|
||||
|
||||
<!-- ─── Werkzeugleisten ─── -->
|
||||
<StreamGeometry x:Key="IconPlus">M12 5v14 M5 12h14</StreamGeometry>
|
||||
<StreamGeometry x:Key="IconMinus">M5 12h14</StreamGeometry>
|
||||
<StreamGeometry x:Key="IconPlay">M8 5v14l11-7z</StreamGeometry>
|
||||
<StreamGeometry x:Key="IconStop">M6 6h12v12H6z</StreamGeometry>
|
||||
<StreamGeometry x:Key="IconPencil">M12 20h9 M16.5 3.5a2.1 2.1 0 0 1 3 3L7 19l-4 1 1-4Z</StreamGeometry>
|
||||
<StreamGeometry x:Key="IconTrash">M3 6h18 M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2 M19 6l-1 14a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2L5 6</StreamGeometry>
|
||||
<StreamGeometry x:Key="IconFolder">M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2Z</StreamGeometry>
|
||||
<StreamGeometry x:Key="IconRefresh">M23 4v6h-6 M1 20v-6h6 M3.51 9a9 9 0 0 1 14.85-3.36L23 10 M20.49 15a9 9 0 0 1-14.85 3.36L1 14</StreamGeometry>
|
||||
<StreamGeometry x:Key="IconPower">M18.36 6.64a9 9 0 1 1-12.73 0 M12 2v10</StreamGeometry>
|
||||
<StreamGeometry x:Key="IconSave">M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z M17 21v-8H7v8 M7 3v5h8</StreamGeometry>
|
||||
|
||||
</ResourceDictionary>
|
||||
@@ -1,44 +1,862 @@
|
||||
<Styles xmlns="https://github.com/avaloniaui"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:ctrl="using:ClawdDotNet.Desktop.Controls">
|
||||
|
||||
<!--
|
||||
Gemeinsame Anmutung der Oberflaeche.
|
||||
Die gemeinsame Anmutung — Umsetzung des Entwurfs aus Mockup/.
|
||||
|
||||
Bewusst wenige, benannte Regeln statt Formatierung an jedem Steuerelement: Die
|
||||
WinForms-Fassung hatte Groessen, Abstaende und Schriften ueber 130 Stellen in den
|
||||
Designer-Dateien verteilt: Jede Aenderung war eine Suche.
|
||||
Warum eigene ControlTheme statt Fluent umzufärben: Avalonia 12 hat die Ressourcen des
|
||||
Fluent-Themas umgebaut. Die aus 11er-Anleitungen bekannten Schlüssel (ButtonBackground,
|
||||
TextControlBackground, ControlCornerRadius …) existieren nicht mehr; ein Setter darauf
|
||||
ist wirkungslos und fällt nicht auf, weil er weder Build noch Test bricht. Für die
|
||||
prägenden Steuerelemente steht die Vorlage deshalb hier vollständig. Fluent bleibt
|
||||
darunter als Grundlage für alles Übrige (Bildlaufleisten, Menüs, Popup-Rahmen).
|
||||
|
||||
Regel wie gehabt: keine festen Farbwerte. Alles über DynamicResource aus Theme.axaml,
|
||||
sonst überlebt es den Wechsel zwischen hell und dunkel nicht.
|
||||
-->
|
||||
|
||||
<Style Selector="TextBlock.heading">
|
||||
<Setter Property="FontSize" Value="16" />
|
||||
<Styles.Resources>
|
||||
<ResourceDictionary>
|
||||
|
||||
<ResourceDictionary.MergedDictionaries>
|
||||
<ResourceInclude Source="avares://ClawdDotNet/Styles/Theme.axaml" />
|
||||
<ResourceInclude Source="avares://ClawdDotNet/Styles/Icons.axaml" />
|
||||
</ResourceDictionary.MergedDictionaries>
|
||||
|
||||
<!-- ════════════════════════════ Schaltflächen ════════════════════════════
|
||||
|
||||
Grundform ist die sekundäre Schaltfläche des Entwurfs: durchsichtig, eine
|
||||
Haarlinie Rahmen, eckig. Die Spielarten kommen als Klasse dazu:
|
||||
.primary / .accent gefüllt in Akzentfarbe
|
||||
.toolbar kleiner, Fließtextschrift — für Werkzeugleisten
|
||||
.ghost ohne Rahmen, Akzentfarbe
|
||||
.flat ohne Rahmen, Textfarbe (Schließen, Einklappen)
|
||||
.icon quadratisch, ohne Innenabstand
|
||||
.accent bleibt neben .primary bestehen: Die noch nicht überarbeiteten Dialoge
|
||||
verwenden diesen Namen. -->
|
||||
<ControlTheme x:Key="{x:Type Button}" TargetType="Button">
|
||||
<Setter Property="Background" Value="Transparent" />
|
||||
<Setter Property="BorderBrush" Value="{DynamicResource DividerBrush}" />
|
||||
<Setter Property="BorderThickness" Value="1" />
|
||||
<Setter Property="CornerRadius" Value="0" />
|
||||
<Setter Property="Foreground" Value="{DynamicResource TextBrush}" />
|
||||
<Setter Property="FontFamily" Value="{DynamicResource HeadingFont}" />
|
||||
<Setter Property="FontWeight" Value="SemiBold" />
|
||||
<Setter Property="FontSize" Value="14" />
|
||||
<Setter Property="Padding" Value="12,7" />
|
||||
<Setter Property="HorizontalContentAlignment" Value="Center" />
|
||||
<Setter Property="VerticalContentAlignment" Value="Center" />
|
||||
<Setter Property="Cursor" Value="Hand" />
|
||||
<Setter Property="Template">
|
||||
<ControlTemplate>
|
||||
<ContentPresenter Name="PART_ContentPresenter"
|
||||
Background="{TemplateBinding Background}"
|
||||
BorderBrush="{TemplateBinding BorderBrush}"
|
||||
BorderThickness="{TemplateBinding BorderThickness}"
|
||||
CornerRadius="{TemplateBinding CornerRadius}"
|
||||
Padding="{TemplateBinding Padding}"
|
||||
Content="{TemplateBinding Content}"
|
||||
ContentTemplate="{TemplateBinding ContentTemplate}"
|
||||
HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"
|
||||
VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"
|
||||
RecognizesAccessKey="True" />
|
||||
</ControlTemplate>
|
||||
</Setter>
|
||||
|
||||
<Style Selector="^:pointerover /template/ ContentPresenter#PART_ContentPresenter">
|
||||
<Setter Property="Background" Value="{DynamicResource HoverBrush}" />
|
||||
</Style>
|
||||
<Style Selector="^:pressed /template/ ContentPresenter#PART_ContentPresenter">
|
||||
<Setter Property="Background" Value="{DynamicResource PressedBrush}" />
|
||||
</Style>
|
||||
<Style Selector="^:disabled">
|
||||
<Setter Property="Opacity" Value="0.45" />
|
||||
<Setter Property="Cursor" Value="Arrow" />
|
||||
</Style>
|
||||
|
||||
<Style Selector="^.primary, ^.accent">
|
||||
<Setter Property="Background" Value="{DynamicResource AccentBrush}" />
|
||||
<Setter Property="BorderBrush" Value="{DynamicResource AccentBrush}" />
|
||||
<Setter Property="Foreground" Value="{DynamicResource BgBrush}" />
|
||||
</Style>
|
||||
<Style Selector="^.primary:pointerover /template/ ContentPresenter#PART_ContentPresenter,
|
||||
^.accent:pointerover /template/ ContentPresenter#PART_ContentPresenter">
|
||||
<Setter Property="Background" Value="{DynamicResource Accent600Brush}" />
|
||||
</Style>
|
||||
<Style Selector="^.primary:pressed /template/ ContentPresenter#PART_ContentPresenter,
|
||||
^.accent:pressed /template/ ContentPresenter#PART_ContentPresenter">
|
||||
<Setter Property="Background" Value="{DynamicResource Accent700Brush}" />
|
||||
</Style>
|
||||
|
||||
<Style Selector="^.toolbar">
|
||||
<Setter Property="FontFamily" Value="{DynamicResource BodyFont}" />
|
||||
<Setter Property="FontWeight" Value="Normal" />
|
||||
<Setter Property="FontSize" Value="12.5" />
|
||||
<Setter Property="Padding" Value="10,6" />
|
||||
</Style>
|
||||
|
||||
<Style Selector="^.ghost">
|
||||
<Setter Property="BorderBrush" Value="Transparent" />
|
||||
<Setter Property="Foreground" Value="{DynamicResource AccentBrush}" />
|
||||
<Setter Property="Padding" Value="6,4" />
|
||||
</Style>
|
||||
|
||||
<Style Selector="^.flat">
|
||||
<Setter Property="BorderBrush" Value="Transparent" />
|
||||
<Setter Property="FontFamily" Value="{DynamicResource BodyFont}" />
|
||||
<Setter Property="FontWeight" Value="Normal" />
|
||||
<Setter Property="Padding" Value="6,4" />
|
||||
</Style>
|
||||
|
||||
<Style Selector="^.icon">
|
||||
<Setter Property="Width" Value="32" />
|
||||
<Setter Property="Height" Value="32" />
|
||||
<Setter Property="Padding" Value="0" />
|
||||
</Style>
|
||||
</ControlTheme>
|
||||
|
||||
<!-- Umschalt-Schaltfläche: dieselbe Form, plus ausgewählter Zustand.
|
||||
Trägt im Entwurf die Segmentleiste über den Aufgaben-Listen. -->
|
||||
<ControlTheme x:Key="{x:Type ToggleButton}" TargetType="ToggleButton">
|
||||
<Setter Property="Background" Value="Transparent" />
|
||||
<Setter Property="BorderBrush" Value="{DynamicResource DividerBrush}" />
|
||||
<Setter Property="BorderThickness" Value="1" />
|
||||
<Setter Property="CornerRadius" Value="0" />
|
||||
<Setter Property="Foreground" Value="{DynamicResource TextBrush}" />
|
||||
<Setter Property="FontFamily" Value="{DynamicResource BodyFont}" />
|
||||
<Setter Property="FontSize" Value="13" />
|
||||
<Setter Property="Padding" Value="14,7" />
|
||||
<Setter Property="HorizontalContentAlignment" Value="Center" />
|
||||
<Setter Property="VerticalContentAlignment" Value="Center" />
|
||||
<Setter Property="Cursor" Value="Hand" />
|
||||
<Setter Property="Template">
|
||||
<ControlTemplate>
|
||||
<ContentPresenter Name="PART_ContentPresenter"
|
||||
Background="{TemplateBinding Background}"
|
||||
BorderBrush="{TemplateBinding BorderBrush}"
|
||||
BorderThickness="{TemplateBinding BorderThickness}"
|
||||
CornerRadius="{TemplateBinding CornerRadius}"
|
||||
Padding="{TemplateBinding Padding}"
|
||||
Content="{TemplateBinding Content}"
|
||||
ContentTemplate="{TemplateBinding ContentTemplate}"
|
||||
HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"
|
||||
VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}" />
|
||||
</ControlTemplate>
|
||||
</Setter>
|
||||
|
||||
<Style Selector="^:pointerover /template/ ContentPresenter#PART_ContentPresenter">
|
||||
<Setter Property="Background" Value="{DynamicResource HoverBrush}" />
|
||||
</Style>
|
||||
<Style Selector="^:checked">
|
||||
<Setter Property="Foreground" Value="{DynamicResource BgBrush}" />
|
||||
</Style>
|
||||
<Style Selector="^:checked /template/ ContentPresenter#PART_ContentPresenter">
|
||||
<Setter Property="Background" Value="{DynamicResource AccentBrush}" />
|
||||
</Style>
|
||||
<Style Selector="^:disabled">
|
||||
<Setter Property="Opacity" Value="0.45" />
|
||||
</Style>
|
||||
</ControlTheme>
|
||||
|
||||
<!-- ════════════════════════════ Eingabefelder ════════════════════════════ -->
|
||||
<ControlTheme x:Key="{x:Type TextBox}" TargetType="TextBox">
|
||||
<Setter Property="Background" Value="{DynamicResource SurfaceBrush}" />
|
||||
<Setter Property="BorderBrush" Value="{DynamicResource DividerBrush}" />
|
||||
<Setter Property="BorderThickness" Value="1" />
|
||||
<Setter Property="CornerRadius" Value="0" />
|
||||
<Setter Property="Foreground" Value="{DynamicResource TextBrush}" />
|
||||
<Setter Property="CaretBrush" Value="{DynamicResource AccentBrush}" />
|
||||
<Setter Property="SelectionBrush" Value="{DynamicResource AccentSoftBrush}" />
|
||||
<Setter Property="SelectionForegroundBrush" Value="{DynamicResource TextBrush}" />
|
||||
<Setter Property="FontFamily" Value="{DynamicResource BodyFont}" />
|
||||
<Setter Property="FontSize" Value="14" />
|
||||
<Setter Property="MinHeight" Value="32" />
|
||||
<Setter Property="Padding" Value="9,5" />
|
||||
<Setter Property="VerticalContentAlignment" Value="Center" />
|
||||
<Setter Property="Template">
|
||||
<ControlTemplate>
|
||||
<Panel>
|
||||
<Border Name="PART_BorderElement"
|
||||
Background="{TemplateBinding Background}"
|
||||
BorderBrush="{TemplateBinding BorderBrush}"
|
||||
BorderThickness="{TemplateBinding BorderThickness}"
|
||||
CornerRadius="{TemplateBinding CornerRadius}"
|
||||
MinHeight="{TemplateBinding MinHeight}" />
|
||||
|
||||
<DockPanel Margin="{TemplateBinding Padding}">
|
||||
<ContentPresenter Content="{TemplateBinding InnerLeftContent}" DockPanel.Dock="Left" />
|
||||
<ContentPresenter Content="{TemplateBinding InnerRightContent}" DockPanel.Dock="Right" />
|
||||
|
||||
<ScrollViewer Name="PART_ScrollViewer"
|
||||
HorizontalScrollBarVisibility="{TemplateBinding (ScrollViewer.HorizontalScrollBarVisibility)}"
|
||||
VerticalScrollBarVisibility="{TemplateBinding (ScrollViewer.VerticalScrollBarVisibility)}">
|
||||
<Panel>
|
||||
<!-- Der Platzhalter verschwindet, sobald etwas im Feld steht. Über
|
||||
IsVisible statt Opacity, damit er keine Maus-Ereignisse abfängt. -->
|
||||
<TextBlock Name="PART_Watermark"
|
||||
Text="{TemplateBinding PlaceholderText}"
|
||||
Foreground="{DynamicResource TextGhostBrush}"
|
||||
TextAlignment="{TemplateBinding TextAlignment}"
|
||||
TextWrapping="{TemplateBinding TextWrapping}"
|
||||
IsVisible="{TemplateBinding Text, Converter={x:Static StringConverters.IsNullOrEmpty}}"
|
||||
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
|
||||
VerticalAlignment="{TemplateBinding VerticalContentAlignment}" />
|
||||
|
||||
<TextPresenter Name="PART_TextPresenter"
|
||||
Text="{TemplateBinding Text, Mode=TwoWay}"
|
||||
CaretIndex="{TemplateBinding CaretIndex}"
|
||||
SelectionStart="{TemplateBinding SelectionStart}"
|
||||
SelectionEnd="{TemplateBinding SelectionEnd}"
|
||||
TextAlignment="{TemplateBinding TextAlignment}"
|
||||
TextWrapping="{TemplateBinding TextWrapping}"
|
||||
PasswordChar="{TemplateBinding PasswordChar}"
|
||||
RevealPassword="{TemplateBinding RevealPassword}"
|
||||
SelectionBrush="{TemplateBinding SelectionBrush}"
|
||||
SelectionForegroundBrush="{TemplateBinding SelectionForegroundBrush}"
|
||||
CaretBrush="{TemplateBinding CaretBrush}"
|
||||
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
|
||||
VerticalAlignment="{TemplateBinding VerticalContentAlignment}" />
|
||||
</Panel>
|
||||
</ScrollViewer>
|
||||
</DockPanel>
|
||||
</Panel>
|
||||
</ControlTemplate>
|
||||
</Setter>
|
||||
|
||||
<Style Selector="^:pointerover /template/ Border#PART_BorderElement">
|
||||
<Setter Property="BorderBrush" Value="{DynamicResource TextGhostBrush}" />
|
||||
</Style>
|
||||
<Style Selector="^:focus /template/ Border#PART_BorderElement">
|
||||
<Setter Property="BorderBrush" Value="{DynamicResource AccentBrush}" />
|
||||
</Style>
|
||||
<Style Selector="^:disabled">
|
||||
<Setter Property="Opacity" Value="0.5" />
|
||||
</Style>
|
||||
|
||||
<!-- Mehrzeilig: Text oben beginnen lassen, nicht mittig. -->
|
||||
<Style Selector="^[AcceptsReturn=True]">
|
||||
<Setter Property="VerticalContentAlignment" Value="Top" />
|
||||
</Style>
|
||||
</ControlTheme>
|
||||
|
||||
<!-- ════════════════════════════ Auswahlfeld ════════════════════════════ -->
|
||||
<ControlTheme x:Key="{x:Type ComboBox}" TargetType="ComboBox">
|
||||
<Setter Property="Background" Value="{DynamicResource SurfaceBrush}" />
|
||||
<Setter Property="BorderBrush" Value="{DynamicResource DividerBrush}" />
|
||||
<Setter Property="BorderThickness" Value="1" />
|
||||
<Setter Property="CornerRadius" Value="0" />
|
||||
<Setter Property="Foreground" Value="{DynamicResource TextBrush}" />
|
||||
<Setter Property="FontFamily" Value="{DynamicResource BodyFont}" />
|
||||
<Setter Property="FontSize" Value="14" />
|
||||
<Setter Property="MinHeight" Value="32" />
|
||||
<Setter Property="Padding" Value="9,5" />
|
||||
<Setter Property="HorizontalContentAlignment" Value="Left" />
|
||||
<Setter Property="VerticalContentAlignment" Value="Center" />
|
||||
<Setter Property="Cursor" Value="Hand" />
|
||||
<Setter Property="PlaceholderForeground" Value="{DynamicResource TextGhostBrush}" />
|
||||
<Setter Property="Template">
|
||||
<ControlTemplate>
|
||||
<Grid ColumnDefinitions="*,Auto">
|
||||
<Border Name="Background" Grid.ColumnSpan="2"
|
||||
Background="{TemplateBinding Background}"
|
||||
BorderBrush="{TemplateBinding BorderBrush}"
|
||||
BorderThickness="{TemplateBinding BorderThickness}"
|
||||
CornerRadius="{TemplateBinding CornerRadius}"
|
||||
MinHeight="{TemplateBinding MinHeight}" />
|
||||
|
||||
<TextBlock Name="PlaceholderTextBlock" Grid.Column="0"
|
||||
Text="{TemplateBinding PlaceholderText}"
|
||||
Foreground="{TemplateBinding PlaceholderForeground}"
|
||||
Margin="{TemplateBinding Padding}"
|
||||
VerticalAlignment="Center"
|
||||
IsVisible="{TemplateBinding SelectionBoxItem, Converter={x:Static ObjectConverters.IsNull}}" />
|
||||
|
||||
<ContentControl Name="ContentPresenter" Grid.Column="0"
|
||||
Content="{TemplateBinding SelectionBoxItem}"
|
||||
ContentTemplate="{TemplateBinding ItemTemplate}"
|
||||
Margin="{TemplateBinding Padding}"
|
||||
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
|
||||
VerticalAlignment="Center" />
|
||||
|
||||
<ctrl:StrokeIcon Grid.Column="1" Data="{StaticResource IconChevronDown}"
|
||||
Width="12" Height="12" Margin="0,0,9,0"
|
||||
VerticalAlignment="Center" IsHitTestVisible="False" />
|
||||
|
||||
<Popup Name="PART_Popup"
|
||||
IsOpen="{TemplateBinding IsDropDownOpen, Mode=TwoWay}"
|
||||
MinWidth="{Binding Bounds.Width, RelativeSource={RelativeSource TemplatedParent}}"
|
||||
PlacementTarget="Background"
|
||||
IsLightDismissEnabled="True">
|
||||
<Border Background="{DynamicResource SurfaceBrush}"
|
||||
BorderBrush="{DynamicResource DividerBrush}"
|
||||
BorderThickness="1" CornerRadius="0" Padding="0,2">
|
||||
<ScrollViewer VerticalScrollBarVisibility="Auto" MaxHeight="320">
|
||||
<ItemsPresenter Name="PART_ItemsPresenter"
|
||||
ItemsPanel="{TemplateBinding ItemsPanel}" />
|
||||
</ScrollViewer>
|
||||
</Border>
|
||||
</Popup>
|
||||
</Grid>
|
||||
</ControlTemplate>
|
||||
</Setter>
|
||||
|
||||
<Style Selector="^:pointerover /template/ Border#Background">
|
||||
<Setter Property="BorderBrush" Value="{DynamicResource TextGhostBrush}" />
|
||||
</Style>
|
||||
<Style Selector="^:focus /template/ Border#Background">
|
||||
<Setter Property="BorderBrush" Value="{DynamicResource AccentBrush}" />
|
||||
</Style>
|
||||
<Style Selector="^:disabled">
|
||||
<Setter Property="Opacity" Value="0.5" />
|
||||
</Style>
|
||||
</ControlTheme>
|
||||
|
||||
<ControlTheme x:Key="{x:Type ComboBoxItem}" TargetType="ComboBoxItem">
|
||||
<Setter Property="Background" Value="Transparent" />
|
||||
<Setter Property="Foreground" Value="{DynamicResource TextBrush}" />
|
||||
<Setter Property="Padding" Value="10,6" />
|
||||
<Setter Property="HorizontalContentAlignment" Value="Left" />
|
||||
<Setter Property="Cursor" Value="Hand" />
|
||||
<Setter Property="Template">
|
||||
<ControlTemplate>
|
||||
<ContentPresenter Name="PART_ContentPresenter"
|
||||
Background="{TemplateBinding Background}"
|
||||
Padding="{TemplateBinding Padding}"
|
||||
Content="{TemplateBinding Content}"
|
||||
ContentTemplate="{TemplateBinding ContentTemplate}"
|
||||
HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"
|
||||
VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}" />
|
||||
</ControlTemplate>
|
||||
</Setter>
|
||||
<Style Selector="^:pointerover /template/ ContentPresenter#PART_ContentPresenter">
|
||||
<Setter Property="Background" Value="{DynamicResource HoverBrush}" />
|
||||
</Style>
|
||||
<Style Selector="^:selected /template/ ContentPresenter#PART_ContentPresenter">
|
||||
<Setter Property="Background" Value="{DynamicResource AccentSelectedBrush}" />
|
||||
</Style>
|
||||
</ControlTheme>
|
||||
|
||||
<!-- ════════════════════ Kontrollkästchen & Auswahlknopf ════════════════════
|
||||
|
||||
Beide teilen sich die Form aus dem Entwurf: 16 px Marke, 1.5 px Rand, im
|
||||
gewählten Zustand mit Akzent gefüllt. Unterschied ist allein die Rundung —
|
||||
eckig für Mehrfach-, rund für Einfachauswahl. -->
|
||||
<ControlTheme x:Key="{x:Type CheckBox}" TargetType="CheckBox">
|
||||
<Setter Property="Foreground" Value="{DynamicResource TextBrush}" />
|
||||
<Setter Property="FontFamily" Value="{DynamicResource BodyFont}" />
|
||||
<Setter Property="FontSize" Value="14" />
|
||||
<Setter Property="Cursor" Value="Hand" />
|
||||
<Setter Property="VerticalContentAlignment" Value="Center" />
|
||||
<Setter Property="Template">
|
||||
<ControlTemplate>
|
||||
<StackPanel Orientation="Horizontal" Spacing="8" Background="Transparent">
|
||||
<Border Name="Mark" Width="16" Height="16" CornerRadius="3"
|
||||
BorderBrush="{DynamicResource DividerBrush}" BorderThickness="1.5"
|
||||
Background="Transparent" VerticalAlignment="Center">
|
||||
<ctrl:StrokeIcon Name="Glyph" Width="12" Height="12" StrokeThickness="3"
|
||||
Foreground="{DynamicResource BgBrush}"
|
||||
Data="M4 12l5 5L20 6" IsVisible="False" />
|
||||
</Border>
|
||||
<ContentPresenter Name="PART_ContentPresenter"
|
||||
Content="{TemplateBinding Content}"
|
||||
ContentTemplate="{TemplateBinding ContentTemplate}"
|
||||
VerticalAlignment="Center" />
|
||||
</StackPanel>
|
||||
</ControlTemplate>
|
||||
</Setter>
|
||||
|
||||
<Style Selector="^:pointerover /template/ Border#Mark">
|
||||
<Setter Property="BorderBrush" Value="{DynamicResource AccentBrush}" />
|
||||
</Style>
|
||||
<Style Selector="^:checked /template/ Border#Mark">
|
||||
<Setter Property="Background" Value="{DynamicResource AccentBrush}" />
|
||||
<Setter Property="BorderBrush" Value="{DynamicResource AccentBrush}" />
|
||||
</Style>
|
||||
<Style Selector="^:checked /template/ ctrl|StrokeIcon#Glyph">
|
||||
<Setter Property="IsVisible" Value="True" />
|
||||
</Style>
|
||||
<Style Selector="^:indeterminate /template/ Border#Mark">
|
||||
<Setter Property="Background" Value="{DynamicResource AccentSoftBrush}" />
|
||||
<Setter Property="BorderBrush" Value="{DynamicResource AccentBrush}" />
|
||||
</Style>
|
||||
<Style Selector="^:disabled">
|
||||
<Setter Property="Opacity" Value="0.5" />
|
||||
</Style>
|
||||
</ControlTheme>
|
||||
|
||||
<ControlTheme x:Key="{x:Type RadioButton}" TargetType="RadioButton">
|
||||
<Setter Property="Foreground" Value="{DynamicResource TextBrush}" />
|
||||
<Setter Property="FontFamily" Value="{DynamicResource BodyFont}" />
|
||||
<Setter Property="FontSize" Value="14" />
|
||||
<Setter Property="Cursor" Value="Hand" />
|
||||
<Setter Property="VerticalContentAlignment" Value="Center" />
|
||||
<Setter Property="Template">
|
||||
<ControlTemplate>
|
||||
<StackPanel Orientation="Horizontal" Spacing="8" Background="Transparent">
|
||||
<Border Name="Mark" Width="16" Height="16" CornerRadius="8"
|
||||
BorderBrush="{DynamicResource DividerBrush}" BorderThickness="1.5"
|
||||
Background="Transparent" VerticalAlignment="Center">
|
||||
<!-- Der innere Punkt entsteht wie im Entwurf durch einen Ring in
|
||||
Hintergrundfarbe, nicht durch eine zweite Ellipse. -->
|
||||
<Border Name="Dot" CornerRadius="8" Margin="3"
|
||||
Background="{DynamicResource BgBrush}" IsVisible="False" />
|
||||
</Border>
|
||||
<ContentPresenter Name="PART_ContentPresenter"
|
||||
Content="{TemplateBinding Content}"
|
||||
ContentTemplate="{TemplateBinding ContentTemplate}"
|
||||
VerticalAlignment="Center" />
|
||||
</StackPanel>
|
||||
</ControlTemplate>
|
||||
</Setter>
|
||||
|
||||
<Style Selector="^:pointerover /template/ Border#Mark">
|
||||
<Setter Property="BorderBrush" Value="{DynamicResource AccentBrush}" />
|
||||
</Style>
|
||||
<Style Selector="^:checked /template/ Border#Mark">
|
||||
<Setter Property="Background" Value="{DynamicResource AccentBrush}" />
|
||||
<Setter Property="BorderBrush" Value="{DynamicResource AccentBrush}" />
|
||||
</Style>
|
||||
<Style Selector="^:checked /template/ Border#Dot">
|
||||
<Setter Property="IsVisible" Value="True" />
|
||||
</Style>
|
||||
<Style Selector="^:disabled">
|
||||
<Setter Property="Opacity" Value="0.5" />
|
||||
</Style>
|
||||
</ControlTheme>
|
||||
|
||||
<!-- ════════════════════════════ Listen ════════════════════════════ -->
|
||||
<ControlTheme x:Key="{x:Type ListBox}" TargetType="ListBox">
|
||||
<Setter Property="Background" Value="Transparent" />
|
||||
<Setter Property="BorderThickness" Value="0" />
|
||||
<Setter Property="Padding" Value="0" />
|
||||
<Setter Property="Foreground" Value="{DynamicResource TextBrush}" />
|
||||
<Setter Property="Template">
|
||||
<ControlTemplate>
|
||||
<Border Background="{TemplateBinding Background}"
|
||||
BorderBrush="{TemplateBinding BorderBrush}"
|
||||
BorderThickness="{TemplateBinding BorderThickness}">
|
||||
<ScrollViewer HorizontalScrollBarVisibility="{TemplateBinding (ScrollViewer.HorizontalScrollBarVisibility)}"
|
||||
VerticalScrollBarVisibility="{TemplateBinding (ScrollViewer.VerticalScrollBarVisibility)}">
|
||||
<ItemsPresenter Name="PART_ItemsPresenter"
|
||||
ItemsPanel="{TemplateBinding ItemsPanel}"
|
||||
Margin="{TemplateBinding Padding}" />
|
||||
</ScrollViewer>
|
||||
</Border>
|
||||
</ControlTemplate>
|
||||
</Setter>
|
||||
</ControlTheme>
|
||||
|
||||
<ControlTheme x:Key="{x:Type ListBoxItem}" TargetType="ListBoxItem">
|
||||
<Setter Property="Background" Value="Transparent" />
|
||||
<Setter Property="Foreground" Value="{DynamicResource TextBrush}" />
|
||||
<Setter Property="Padding" Value="7" />
|
||||
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
|
||||
<Setter Property="VerticalContentAlignment" Value="Center" />
|
||||
<Setter Property="Cursor" Value="Hand" />
|
||||
<Setter Property="Template">
|
||||
<ControlTemplate>
|
||||
<ContentPresenter Name="PART_ContentPresenter"
|
||||
Background="{TemplateBinding Background}"
|
||||
Padding="{TemplateBinding Padding}"
|
||||
Content="{TemplateBinding Content}"
|
||||
ContentTemplate="{TemplateBinding ContentTemplate}"
|
||||
HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"
|
||||
VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}" />
|
||||
</ControlTemplate>
|
||||
</Setter>
|
||||
<Style Selector="^:pointerover /template/ ContentPresenter#PART_ContentPresenter">
|
||||
<Setter Property="Background" Value="{DynamicResource RowHoverBrush}" />
|
||||
</Style>
|
||||
<Style Selector="^:selected /template/ ContentPresenter#PART_ContentPresenter">
|
||||
<Setter Property="Background" Value="{DynamicResource AccentRowBrush}" />
|
||||
</Style>
|
||||
<Style Selector="^:selected:pointerover /template/ ContentPresenter#PART_ContentPresenter">
|
||||
<Setter Property="Background" Value="{DynamicResource AccentSelectedBrush}" />
|
||||
</Style>
|
||||
</ControlTheme>
|
||||
|
||||
<!-- ════════════════════════════ Rahmen mit Eckmarken ════════════════════════════
|
||||
|
||||
Die vier Marken liegen halb außerhalb des Rahmens; sie sitzen deshalb in einem
|
||||
Grid über dem Rahmen und nicht in ihm. IsHitTestVisible=False, damit sie
|
||||
Klicks auf den Inhalt nicht abfangen. -->
|
||||
<ControlTheme x:Key="{x:Type ctrl:BlueprintFrame}" TargetType="ctrl:BlueprintFrame">
|
||||
<Setter Property="Background" Value="Transparent" />
|
||||
<Setter Property="BorderBrush" Value="{DynamicResource DividerBrush}" />
|
||||
<Setter Property="BorderThickness" Value="1" />
|
||||
<Setter Property="Padding" Value="14" />
|
||||
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
|
||||
<Setter Property="VerticalContentAlignment" Value="Stretch" />
|
||||
<Setter Property="Template">
|
||||
<ControlTemplate>
|
||||
<Grid>
|
||||
<Border Background="{TemplateBinding Background}"
|
||||
BorderBrush="{TemplateBinding BorderBrush}"
|
||||
BorderThickness="{TemplateBinding BorderThickness}"
|
||||
Padding="{TemplateBinding Padding}">
|
||||
<ContentPresenter Content="{TemplateBinding Content}"
|
||||
ContentTemplate="{TemplateBinding ContentTemplate}"
|
||||
HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"
|
||||
VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}" />
|
||||
</Border>
|
||||
|
||||
<Panel Width="11" Height="11" Margin="-6,-6,0,0" IsHitTestVisible="False"
|
||||
HorizontalAlignment="Left" VerticalAlignment="Top">
|
||||
<Rectangle Width="1" Height="11" Margin="5,0,0,0" HorizontalAlignment="Left"
|
||||
Fill="{DynamicResource TextFaintBrush}" />
|
||||
<Rectangle Width="11" Height="1" Margin="0,5,0,0" VerticalAlignment="Top"
|
||||
Fill="{DynamicResource TextFaintBrush}" />
|
||||
</Panel>
|
||||
<Panel Width="11" Height="11" Margin="0,-6,-6,0" IsHitTestVisible="False"
|
||||
HorizontalAlignment="Right" VerticalAlignment="Top">
|
||||
<Rectangle Width="1" Height="11" Margin="5,0,0,0" HorizontalAlignment="Left"
|
||||
Fill="{DynamicResource TextFaintBrush}" />
|
||||
<Rectangle Width="11" Height="1" Margin="0,5,0,0" VerticalAlignment="Top"
|
||||
Fill="{DynamicResource TextFaintBrush}" />
|
||||
</Panel>
|
||||
<Panel Width="11" Height="11" Margin="-6,0,0,-6" IsHitTestVisible="False"
|
||||
HorizontalAlignment="Left" VerticalAlignment="Bottom">
|
||||
<Rectangle Width="1" Height="11" Margin="5,0,0,0" HorizontalAlignment="Left"
|
||||
Fill="{DynamicResource TextFaintBrush}" />
|
||||
<Rectangle Width="11" Height="1" Margin="0,5,0,0" VerticalAlignment="Top"
|
||||
Fill="{DynamicResource TextFaintBrush}" />
|
||||
</Panel>
|
||||
<Panel Width="11" Height="11" Margin="0,0,-6,-6" IsHitTestVisible="False"
|
||||
HorizontalAlignment="Right" VerticalAlignment="Bottom">
|
||||
<Rectangle Width="1" Height="11" Margin="5,0,0,0" HorizontalAlignment="Left"
|
||||
Fill="{DynamicResource TextFaintBrush}" />
|
||||
<Rectangle Width="11" Height="1" Margin="0,5,0,0" VerticalAlignment="Top"
|
||||
Fill="{DynamicResource TextFaintBrush}" />
|
||||
</Panel>
|
||||
</Grid>
|
||||
</ControlTemplate>
|
||||
</Setter>
|
||||
</ControlTheme>
|
||||
|
||||
</ResourceDictionary>
|
||||
</Styles.Resources>
|
||||
|
||||
<!-- ══════════════════════════════════════════════════════════════════════════
|
||||
Grundlagen: Fenster, Schrift, Trenner
|
||||
══════════════════════════════════════════════════════════════════════ -->
|
||||
|
||||
<Style Selector="Window">
|
||||
<Setter Property="Background" Value="{DynamicResource BgBrush}" />
|
||||
<Setter Property="Foreground" Value="{DynamicResource TextBrush}" />
|
||||
<Setter Property="FontFamily" Value="{DynamicResource BodyFont}" />
|
||||
<Setter Property="FontSize" Value="14" />
|
||||
</Style>
|
||||
|
||||
<Style Selector="UserControl">
|
||||
<Setter Property="Foreground" Value="{DynamicResource TextBrush}" />
|
||||
<Setter Property="FontFamily" Value="{DynamicResource BodyFont}" />
|
||||
</Style>
|
||||
|
||||
<!-- Überschriften laufen in Barlow Condensed, Fließtext in Barlow — das ist der
|
||||
auffälligste Zug des Entwurfs und darf nirgends per Hand gesetzt werden. -->
|
||||
<Style Selector="TextBlock.h1">
|
||||
<Setter Property="FontFamily" Value="{DynamicResource HeadingFont}" />
|
||||
<Setter Property="FontWeight" Value="SemiBold" />
|
||||
<Setter Property="FontSize" Value="20" />
|
||||
</Style>
|
||||
|
||||
<Style Selector="TextBlock.h2">
|
||||
<Setter Property="FontFamily" Value="{DynamicResource HeadingFont}" />
|
||||
<Setter Property="FontWeight" Value="SemiBold" />
|
||||
<Setter Property="FontSize" Value="17" />
|
||||
</Style>
|
||||
|
||||
<!-- Bestandsname aus der ersten Portierung; die noch nicht überarbeiteten Dialoge
|
||||
binden darauf. -->
|
||||
<Style Selector="TextBlock.heading">
|
||||
<Setter Property="FontFamily" Value="{DynamicResource HeadingFont}" />
|
||||
<Setter Property="FontWeight" Value="SemiBold" />
|
||||
<Setter Property="FontSize" Value="17" />
|
||||
<Setter Property="Margin" Value="0,0,0,8" />
|
||||
</Style>
|
||||
|
||||
<Style Selector="TextBlock.caption">
|
||||
<Setter Property="Opacity" Value="0.7" />
|
||||
<Setter Property="FontSize" Value="12" />
|
||||
<!-- Die kleine Versalzeile über jedem Abschnitt — im Entwurf durchgehend in
|
||||
Akzentfarbe, 10 px, weit gesperrt. -->
|
||||
<Style Selector="TextBlock.kicker">
|
||||
<Setter Property="FontSize" Value="10" />
|
||||
<Setter Property="LetterSpacing" Value="1" />
|
||||
<Setter Property="Foreground" Value="{DynamicResource AccentBrush}" />
|
||||
<Setter Property="Margin" Value="0,0,0,4" />
|
||||
</Style>
|
||||
|
||||
<!-- Werkzeugleiste ueber einer Ansicht -->
|
||||
<Style Selector="TextBlock.caption">
|
||||
<Setter Property="FontSize" Value="12" />
|
||||
<Setter Property="Foreground" Value="{DynamicResource TextFaintBrush}" />
|
||||
</Style>
|
||||
|
||||
<Style Selector="TextBlock.muted">
|
||||
<Setter Property="Foreground" Value="{DynamicResource TextSubtleBrush}" />
|
||||
</Style>
|
||||
|
||||
<Style Selector="TextBlock.label">
|
||||
<Setter Property="FontSize" Value="12" />
|
||||
<Setter Property="Foreground" Value="{DynamicResource TextMutedBrush}" />
|
||||
<Setter Property="Margin" Value="0,0,0,4" />
|
||||
</Style>
|
||||
|
||||
<Style Selector="TextBlock.mono, SelectableTextBlock.mono">
|
||||
<Setter Property="FontFamily" Value="{DynamicResource MonoFont}" />
|
||||
<Setter Property="FontSize" Value="12.5" />
|
||||
</Style>
|
||||
|
||||
<Style Selector="SelectableTextBlock">
|
||||
<Setter Property="SelectionBrush" Value="{DynamicResource AccentSoftBrush}" />
|
||||
</Style>
|
||||
|
||||
<!-- Log-Stufen. Über Klassen statt über einen Pinsel aus einem Konverter, damit die
|
||||
Farben beim Wechsel auf Dunkel mitziehen. -->
|
||||
<Style Selector="SelectableTextBlock.warn">
|
||||
<Setter Property="Foreground" Value="{DynamicResource WarningBrush}" />
|
||||
</Style>
|
||||
|
||||
<Style Selector="SelectableTextBlock.err, SelectableTextBlock.ftl">
|
||||
<Setter Property="Foreground" Value="{DynamicResource DangerBrush}" />
|
||||
</Style>
|
||||
|
||||
<!-- ══════════════════════════════════════════════════════════════════════════
|
||||
Flächen
|
||||
══════════════════════════════════════════════════════════════════════ -->
|
||||
|
||||
<!-- Karte: eckig, Haarlinie, durchsichtig — der Entwurf setzt bewusst keine
|
||||
Füllfarbe, damit die Kästen als Zeichnung und nicht als Kacheln wirken. -->
|
||||
<Style Selector="Border.card">
|
||||
<Setter Property="BorderBrush" Value="{DynamicResource DividerBrush}" />
|
||||
<Setter Property="BorderThickness" Value="1" />
|
||||
<Setter Property="CornerRadius" Value="0" />
|
||||
<Setter Property="Padding" Value="10" />
|
||||
<Setter Property="Background" Value="Transparent" />
|
||||
</Style>
|
||||
|
||||
<!-- Karte in Akzent hinterlegt — eigene Chat-Nachrichten. -->
|
||||
<Style Selector="Border.card.accent">
|
||||
<Setter Property="Background" Value="{DynamicResource AccentSoftBrush}" />
|
||||
</Style>
|
||||
|
||||
<Style Selector="Border.surface">
|
||||
<Setter Property="Background" Value="{DynamicResource SurfaceBrush}" />
|
||||
</Style>
|
||||
|
||||
<Style Selector="Border.statusbar">
|
||||
<Setter Property="BorderBrush" Value="{DynamicResource DividerBrush}" />
|
||||
<Setter Property="BorderThickness" Value="0,1,0,0" />
|
||||
<Setter Property="Padding" Value="24,6" />
|
||||
</Style>
|
||||
|
||||
<Style Selector="Border.topbar">
|
||||
<Setter Property="BorderBrush" Value="{DynamicResource DividerBrush}" />
|
||||
<Setter Property="BorderThickness" Value="0,0,0,1" />
|
||||
<Setter Property="Padding" Value="24,14" />
|
||||
</Style>
|
||||
|
||||
<!-- Konsolenfläche der Log-Ansicht -->
|
||||
<Style Selector="Border.console">
|
||||
<Setter Property="Background" Value="{DynamicResource SurfaceBrush}" />
|
||||
<Setter Property="BorderBrush" Value="{DynamicResource DividerBrush}" />
|
||||
<Setter Property="BorderThickness" Value="1" />
|
||||
<Setter Property="Padding" Value="14" />
|
||||
</Style>
|
||||
|
||||
<!-- Senkrechter Strich zwischen Gruppen einer Werkzeugleiste -->
|
||||
<Style Selector="Border.sep">
|
||||
<Setter Property="Width" Value="1" />
|
||||
<Setter Property="Height" Value="20" />
|
||||
<Setter Property="Margin" Value="4,0" />
|
||||
<Setter Property="Background" Value="{DynamicResource DividerBrush}" />
|
||||
<Setter Property="VerticalAlignment" Value="Center" />
|
||||
</Style>
|
||||
|
||||
<Style Selector="Border.hr">
|
||||
<Setter Property="Height" Value="1" />
|
||||
<Setter Property="Background" Value="{DynamicResource DividerBrush}" />
|
||||
</Style>
|
||||
|
||||
<!-- ══════════════════════════════════════════════════════════════════════════
|
||||
Werkzeugleisten
|
||||
══════════════════════════════════════════════════════════════════════ -->
|
||||
|
||||
<Style Selector="StackPanel.toolbar">
|
||||
<Setter Property="Orientation" Value="Horizontal" />
|
||||
<Setter Property="Spacing" Value="6" />
|
||||
<Setter Property="Margin" Value="8" />
|
||||
<Setter Property="Margin" Value="0,0,0,10" />
|
||||
</Style>
|
||||
|
||||
<Style Selector="Border.card">
|
||||
<Setter Property="BorderBrush" Value="{DynamicResource SystemControlForegroundBaseLowBrush}" />
|
||||
<Setter Property="BorderThickness" Value="1" />
|
||||
<Setter Property="CornerRadius" Value="4" />
|
||||
<Setter Property="Padding" Value="12" />
|
||||
<Style Selector="WrapPanel.toolbar">
|
||||
<Setter Property="Orientation" Value="Horizontal" />
|
||||
<Setter Property="ItemSpacing" Value="6" />
|
||||
<Setter Property="LineSpacing" Value="6" />
|
||||
<Setter Property="Margin" Value="0,0,0,10" />
|
||||
</Style>
|
||||
|
||||
<!-- Statusleiste am unteren Rand -->
|
||||
<Style Selector="Border.statusbar">
|
||||
<Setter Property="BorderBrush" Value="{DynamicResource SystemControlForegroundBaseLowBrush}" />
|
||||
<Setter Property="BorderThickness" Value="0,1,0,0" />
|
||||
<Setter Property="Padding" Value="8,4" />
|
||||
<!-- ══════════════════════════════════════════════════════════════════════════
|
||||
Tabellen
|
||||
|
||||
Von Hand statt DataGrid: Der Entwurf zeigt eine Kopfzeile in Versalien und
|
||||
Zeilen mit Haarlinie darunter — mehr nicht, kein Sortieren, kein Spaltenziehen.
|
||||
Ein umgefärbtes DataGrid wäre hier deutlich mehr Aufwand als eine ListBox, und
|
||||
das Ergebnis säße am Ende doch nicht auf dem Raster des Entwurfs.
|
||||
══════════════════════════════════════════════════════════════════════ -->
|
||||
|
||||
<!-- Kopfzelle -->
|
||||
<Style Selector="TextBlock.th">
|
||||
<Setter Property="FontSize" Value="11" />
|
||||
<Setter Property="LetterSpacing" Value="0.9" />
|
||||
<Setter Property="Foreground" Value="{DynamicResource TextSubtleBrush}" />
|
||||
<Setter Property="VerticalAlignment" Value="Center" />
|
||||
</Style>
|
||||
|
||||
<!-- Kopfzeile: trägt die Linie, die die Spaltentitel vom Inhalt trennt -->
|
||||
<Style Selector="Border.thead">
|
||||
<Setter Property="BorderBrush" Value="{DynamicResource DividerBrush}" />
|
||||
<Setter Property="BorderThickness" Value="0,0,0,1" />
|
||||
<Setter Property="Padding" Value="7" />
|
||||
</Style>
|
||||
|
||||
<!-- Zeile: Haarlinie unten, schwächer als die der Kopfzeile -->
|
||||
<Style Selector="Border.tr">
|
||||
<Setter Property="BorderBrush" Value="{DynamicResource RowLineBrush}" />
|
||||
<Setter Property="BorderThickness" Value="0,0,0,1" />
|
||||
</Style>
|
||||
|
||||
<Style Selector="ListBox.table > ListBoxItem">
|
||||
<Setter Property="Padding" Value="0" />
|
||||
</Style>
|
||||
|
||||
<!-- Zelltext -->
|
||||
<Style Selector="TextBlock.td">
|
||||
<Setter Property="VerticalAlignment" Value="Center" />
|
||||
<Setter Property="TextTrimming" Value="CharacterEllipsis" />
|
||||
</Style>
|
||||
|
||||
<Style Selector="TextBlock.td.dim">
|
||||
<Setter Property="FontSize" Value="12" />
|
||||
<Setter Property="Foreground" Value="{DynamicResource TextSubtleBrush}" />
|
||||
</Style>
|
||||
|
||||
<!-- ══════════════════════════════════════════════════════════════════════════
|
||||
Etiketten (Status in Tabellen)
|
||||
══════════════════════════════════════════════════════════════════════ -->
|
||||
|
||||
<Style Selector="Border.tag">
|
||||
<Setter Property="Padding" Value="9,2" />
|
||||
<Setter Property="CornerRadius" Value="0" />
|
||||
<Setter Property="Background" Value="{DynamicResource Neutral100Brush}" />
|
||||
<Setter Property="HorizontalAlignment" Value="Left" />
|
||||
<Setter Property="VerticalAlignment" Value="Center" />
|
||||
</Style>
|
||||
|
||||
<Style Selector="Border.tag > TextBlock">
|
||||
<Setter Property="FontSize" Value="11" />
|
||||
<Setter Property="Foreground" Value="{DynamicResource Neutral800Brush}" />
|
||||
</Style>
|
||||
|
||||
<Style Selector="Border.tag.ok">
|
||||
<Setter Property="Background" Value="{DynamicResource AccentSoftBrush}" />
|
||||
</Style>
|
||||
<Style Selector="Border.tag.ok > TextBlock">
|
||||
<Setter Property="Foreground" Value="{DynamicResource Accent700Brush}" />
|
||||
</Style>
|
||||
|
||||
<Style Selector="Border.tag.bad">
|
||||
<Setter Property="Background" Value="{DynamicResource DangerSoftBrush}" />
|
||||
</Style>
|
||||
<Style Selector="Border.tag.bad > TextBlock">
|
||||
<Setter Property="Foreground" Value="{DynamicResource DangerTextBrush}" />
|
||||
</Style>
|
||||
|
||||
<!-- ══════════════════════════════════════════════════════════════════════════
|
||||
Seitenleiste
|
||||
══════════════════════════════════════════════════════════════════════ -->
|
||||
|
||||
<Style Selector="Border.sidebar">
|
||||
<Setter Property="Background" Value="{DynamicResource SurfaceBrush}" />
|
||||
<Setter Property="BorderBrush" Value="{DynamicResource DividerBrush}" />
|
||||
<Setter Property="BorderThickness" Value="0,0,1,0" />
|
||||
</Style>
|
||||
|
||||
<!-- Gruppentitel „Arbeiten“ / „Analyse“ / „System“ -->
|
||||
<Style Selector="TextBlock.navgroup">
|
||||
<Setter Property="FontSize" Value="10" />
|
||||
<Setter Property="LetterSpacing" Value="1.2" />
|
||||
<Setter Property="Foreground" Value="{DynamicResource TextGhostBrush}" />
|
||||
<Setter Property="Margin" Value="8,0,8,6" />
|
||||
</Style>
|
||||
|
||||
<!-- Navigationszeile: Grundzustand durchsichtig, gewählt mit Akzent hinterlegt.
|
||||
Als Button und nicht als ListBoxItem, damit Tastaturbedienung und Tooltip im
|
||||
eingeklappten Zustand ohne Zusatzarbeit funktionieren. -->
|
||||
<Style Selector="Button.nav">
|
||||
<Setter Property="Background" Value="Transparent" />
|
||||
<Setter Property="BorderThickness" Value="0" />
|
||||
<Setter Property="Foreground" Value="{DynamicResource TextBrush}" />
|
||||
<Setter Property="FontFamily" Value="{DynamicResource BodyFont}" />
|
||||
<Setter Property="FontSize" Value="13.5" />
|
||||
<Setter Property="FontWeight" Value="Normal" />
|
||||
<Setter Property="Padding" Value="10,9" />
|
||||
<Setter Property="HorizontalAlignment" Value="Stretch" />
|
||||
<Setter Property="HorizontalContentAlignment" Value="Left" />
|
||||
</Style>
|
||||
|
||||
<Style Selector="Button.nav.selected">
|
||||
<Setter Property="Background" Value="{DynamicResource AccentSelectedBrush}" />
|
||||
<Setter Property="Foreground" Value="{DynamicResource AccentBrush}" />
|
||||
<Setter Property="FontWeight" Value="SemiBold" />
|
||||
</Style>
|
||||
|
||||
<!-- Eingeklappt: nur das Symbol, mittig -->
|
||||
<Style Selector="Button.nav.collapsed">
|
||||
<Setter Property="Padding" Value="9" />
|
||||
<Setter Property="HorizontalContentAlignment" Value="Center" />
|
||||
</Style>
|
||||
|
||||
<!-- Instanz-Schalter oben in der Seitenleiste — einziger Knopf mit Akzentrahmen -->
|
||||
<Style Selector="Button.instance">
|
||||
<Setter Property="BorderBrush" Value="{DynamicResource AccentBrush}" />
|
||||
<Setter Property="Background" Value="Transparent" />
|
||||
<Setter Property="Foreground" Value="{DynamicResource TextBrush}" />
|
||||
<Setter Property="FontFamily" Value="{DynamicResource BodyFont}" />
|
||||
<Setter Property="FontWeight" Value="Normal" />
|
||||
<Setter Property="Padding" Value="10,9" />
|
||||
<Setter Property="HorizontalAlignment" Value="Stretch" />
|
||||
<Setter Property="HorizontalContentAlignment" Value="Left" />
|
||||
</Style>
|
||||
|
||||
<!-- ══════════════════════════════════════════════════════════════════════════
|
||||
Teiler zwischen den Bereichen der Agenten-Seite
|
||||
══════════════════════════════════════════════════════════════════════ -->
|
||||
|
||||
<Style Selector="GridSplitter">
|
||||
<Setter Property="Background" Value="Transparent" />
|
||||
<Setter Property="MinWidth" Value="0" />
|
||||
<Setter Property="MinHeight" Value="0" />
|
||||
</Style>
|
||||
|
||||
<!-- Waagerechter Teiler: eine sichtbare Leiste mit Griffstrich, wie im Entwurf -->
|
||||
<Style Selector="GridSplitter.horizontal">
|
||||
<Setter Property="Height" Value="10" />
|
||||
<Setter Property="Background" Value="{DynamicResource SurfaceBrush}" />
|
||||
<Setter Property="Cursor" Value="SizeNorthSouth" />
|
||||
<Setter Property="Template">
|
||||
<ControlTemplate>
|
||||
<Border Background="{TemplateBinding Background}"
|
||||
BorderBrush="{DynamicResource DividerBrush}"
|
||||
BorderThickness="0,1">
|
||||
<Rectangle Width="36" Height="2" Fill="{DynamicResource DividerBrush}"
|
||||
HorizontalAlignment="Center" VerticalAlignment="Center" />
|
||||
</Border>
|
||||
</ControlTemplate>
|
||||
</Setter>
|
||||
</Style>
|
||||
|
||||
<!-- Senkrechter Teiler: unsichtbar bis auf den Mauszeiger, wie im Entwurf -->
|
||||
<Style Selector="GridSplitter.vertical">
|
||||
<Setter Property="Width" Value="10" />
|
||||
<Setter Property="Cursor" Value="SizeWestEast" />
|
||||
</Style>
|
||||
|
||||
</Styles>
|
||||
|
||||
@@ -0,0 +1,157 @@
|
||||
<ResourceDictionary xmlns="https://github.com/avaloniaui"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||
|
||||
<!--
|
||||
Farbwerte des Entwurfs (Mockup/…/ClawdDotNet-UI-Mockup.dc.html, Konstanten LIGHT/DARK).
|
||||
|
||||
Warum ThemeDictionaries und nicht zwei Dateien: Avalonia tauscht den passenden Block
|
||||
aus, sobald die ThemeVariant wechselt. Jede Ansicht bindet mit DynamicResource auf
|
||||
einen Namen — der Umschalter in der Kopfzeile ist damit eine einzige Zuweisung und
|
||||
kein Neuaufbau der Oberflaeche.
|
||||
|
||||
Deckkraft-Abstufungen stehen als eigene Buerste da, nicht als Opacity am
|
||||
Steuerelement: Opacity blasst auch alle Kindelemente aus, eine halbdurchsichtige
|
||||
Farbe nur sich selbst.
|
||||
-->
|
||||
<ResourceDictionary.ThemeDictionaries>
|
||||
|
||||
<!-- ══════════════════════════════ HELL ══════════════════════════════ -->
|
||||
<ResourceDictionary x:Key="Light">
|
||||
|
||||
<!-- Grundflaechen -->
|
||||
<SolidColorBrush x:Key="BgBrush" Color="#f2f2f3" />
|
||||
<SolidColorBrush x:Key="SurfaceBrush" Color="#e9e9ea" />
|
||||
<SolidColorBrush x:Key="TextBrush" Color="#1d1f20" />
|
||||
<SolidColorBrush x:Key="AccentBrush" Color="#5980a6" />
|
||||
<SolidColorBrush x:Key="Accent2Brush" Color="#728fab" />
|
||||
<SolidColorBrush x:Key="DividerBrush" Color="#291d1f20" />
|
||||
|
||||
<Color x:Key="BgColor">#f2f2f3</Color>
|
||||
<Color x:Key="SurfaceColor">#e9e9ea</Color>
|
||||
<Color x:Key="TextColor">#1d1f20</Color>
|
||||
<Color x:Key="AccentColor">#5980a6</Color>
|
||||
|
||||
<!-- Text in Abstufungen: 70 % / 60 % / 55 % / 50 % Deckkraft -->
|
||||
<SolidColorBrush x:Key="TextMutedBrush" Color="#b31d1f20" />
|
||||
<SolidColorBrush x:Key="TextSubtleBrush" Color="#991d1f20" />
|
||||
<SolidColorBrush x:Key="TextFaintBrush" Color="#8c1d1f20" />
|
||||
<SolidColorBrush x:Key="TextGhostBrush" Color="#801d1f20" />
|
||||
|
||||
<!-- Zustaende: aus der Textfarbe abgeleitet, damit sie auf jedem Grund sitzen -->
|
||||
<SolidColorBrush x:Key="HoverBrush" Color="#121d1f20" />
|
||||
<SolidColorBrush x:Key="PressedBrush" Color="#241d1f20" />
|
||||
<SolidColorBrush x:Key="RowHoverBrush" Color="#0a1d1f20" />
|
||||
<SolidColorBrush x:Key="RowLineBrush" Color="#141d1f20" />
|
||||
|
||||
<!-- Akzent, hinterlegt -->
|
||||
<SolidColorBrush x:Key="AccentSoftBrush" Color="#265980a6" />
|
||||
<SolidColorBrush x:Key="AccentSelectedBrush" Color="#295980a6" />
|
||||
<SolidColorBrush x:Key="AccentRowBrush" Color="#1f5980a6" />
|
||||
|
||||
<!-- Neutrale Rampe -->
|
||||
<SolidColorBrush x:Key="Neutral100Brush" Color="#f5f5f8" />
|
||||
<SolidColorBrush x:Key="Neutral200Brush" Color="#e7e7ea" />
|
||||
<SolidColorBrush x:Key="Neutral300Brush" Color="#d4d4d7" />
|
||||
<SolidColorBrush x:Key="Neutral400Brush" Color="#b7b7ba" />
|
||||
<SolidColorBrush x:Key="Neutral500Brush" Color="#98989b" />
|
||||
<SolidColorBrush x:Key="Neutral600Brush" Color="#7a7a7d" />
|
||||
<SolidColorBrush x:Key="Neutral700Brush" Color="#5d5d60" />
|
||||
<SolidColorBrush x:Key="Neutral800Brush" Color="#424244" />
|
||||
<SolidColorBrush x:Key="Neutral900Brush" Color="#2b2b2d" />
|
||||
|
||||
<!-- Akzent-Rampe -->
|
||||
<SolidColorBrush x:Key="Accent100Brush" Color="#eef6ff" />
|
||||
<SolidColorBrush x:Key="Accent200Brush" Color="#d6ebff" />
|
||||
<SolidColorBrush x:Key="Accent300Brush" Color="#b5d9fd" />
|
||||
<SolidColorBrush x:Key="Accent400Brush" Color="#94bce3" />
|
||||
<SolidColorBrush x:Key="Accent500Brush" Color="#749dc4" />
|
||||
<SolidColorBrush x:Key="Accent600Brush" Color="#597ea3" />
|
||||
<SolidColorBrush x:Key="Accent700Brush" Color="#416180" />
|
||||
<SolidColorBrush x:Key="Accent800Brush" Color="#2c455d" />
|
||||
<SolidColorBrush x:Key="Accent900Brush" Color="#1d2d3d" />
|
||||
|
||||
<!-- Zustandsfarben: Statuspunkt, Meldungsleiste, Tabellen-Etiketten -->
|
||||
<SolidColorBrush x:Key="SuccessBrush" Color="#3f8f5c" />
|
||||
<SolidColorBrush x:Key="WarningBrush" Color="#b5822a" />
|
||||
<SolidColorBrush x:Key="DangerBrush" Color="#c0392b" />
|
||||
<SolidColorBrush x:Key="DangerSoftBrush" Color="#2eb3453b" />
|
||||
<SolidColorBrush x:Key="DangerTextBrush" Color="#7a2c25" />
|
||||
<SolidColorBrush x:Key="WarningSoftBrush" Color="#1ab5822a" />
|
||||
<SolidColorBrush x:Key="DangerBarBrush" Color="#1ac0392b" />
|
||||
|
||||
</ResourceDictionary>
|
||||
|
||||
<!-- ══════════════════════════════ DUNKEL ══════════════════════════════ -->
|
||||
<ResourceDictionary x:Key="Dark">
|
||||
|
||||
<SolidColorBrush x:Key="BgBrush" Color="#1a1c1e" />
|
||||
<SolidColorBrush x:Key="SurfaceBrush" Color="#232527" />
|
||||
<SolidColorBrush x:Key="TextBrush" Color="#eef0f1" />
|
||||
<SolidColorBrush x:Key="AccentBrush" Color="#7ea3c6" />
|
||||
<SolidColorBrush x:Key="Accent2Brush" Color="#8fa8c2" />
|
||||
<SolidColorBrush x:Key="DividerBrush" Color="#29eef0f1" />
|
||||
|
||||
<Color x:Key="BgColor">#1a1c1e</Color>
|
||||
<Color x:Key="SurfaceColor">#232527</Color>
|
||||
<Color x:Key="TextColor">#eef0f1</Color>
|
||||
<Color x:Key="AccentColor">#7ea3c6</Color>
|
||||
|
||||
<SolidColorBrush x:Key="TextMutedBrush" Color="#b3eef0f1" />
|
||||
<SolidColorBrush x:Key="TextSubtleBrush" Color="#99eef0f1" />
|
||||
<SolidColorBrush x:Key="TextFaintBrush" Color="#8ceef0f1" />
|
||||
<SolidColorBrush x:Key="TextGhostBrush" Color="#80eef0f1" />
|
||||
|
||||
<SolidColorBrush x:Key="HoverBrush" Color="#12eef0f1" />
|
||||
<SolidColorBrush x:Key="PressedBrush" Color="#24eef0f1" />
|
||||
<SolidColorBrush x:Key="RowHoverBrush" Color="#0aeef0f1" />
|
||||
<SolidColorBrush x:Key="RowLineBrush" Color="#14eef0f1" />
|
||||
|
||||
<SolidColorBrush x:Key="AccentSoftBrush" Color="#267ea3c6" />
|
||||
<SolidColorBrush x:Key="AccentSelectedBrush" Color="#297ea3c6" />
|
||||
<SolidColorBrush x:Key="AccentRowBrush" Color="#1f7ea3c6" />
|
||||
|
||||
<!-- Rampen gespiegelt: 100 ist im Dunkeln die dunkelste Stufe -->
|
||||
<SolidColorBrush x:Key="Neutral100Brush" Color="#2b2b2d" />
|
||||
<SolidColorBrush x:Key="Neutral200Brush" Color="#424244" />
|
||||
<SolidColorBrush x:Key="Neutral300Brush" Color="#5d5d60" />
|
||||
<SolidColorBrush x:Key="Neutral400Brush" Color="#7a7a7d" />
|
||||
<SolidColorBrush x:Key="Neutral500Brush" Color="#98989b" />
|
||||
<SolidColorBrush x:Key="Neutral600Brush" Color="#b7b7ba" />
|
||||
<SolidColorBrush x:Key="Neutral700Brush" Color="#d4d4d7" />
|
||||
<SolidColorBrush x:Key="Neutral800Brush" Color="#e7e7ea" />
|
||||
<SolidColorBrush x:Key="Neutral900Brush" Color="#f5f5f8" />
|
||||
|
||||
<SolidColorBrush x:Key="Accent100Brush" Color="#1d2d3d" />
|
||||
<SolidColorBrush x:Key="Accent200Brush" Color="#2c455d" />
|
||||
<SolidColorBrush x:Key="Accent300Brush" Color="#416180" />
|
||||
<SolidColorBrush x:Key="Accent400Brush" Color="#597ea3" />
|
||||
<SolidColorBrush x:Key="Accent500Brush" Color="#749dc4" />
|
||||
<SolidColorBrush x:Key="Accent600Brush" Color="#94bce3" />
|
||||
<SolidColorBrush x:Key="Accent700Brush" Color="#b5d9fd" />
|
||||
<SolidColorBrush x:Key="Accent800Brush" Color="#d6ebff" />
|
||||
<SolidColorBrush x:Key="Accent900Brush" Color="#eef6ff" />
|
||||
|
||||
<SolidColorBrush x:Key="SuccessBrush" Color="#5fb37e" />
|
||||
<SolidColorBrush x:Key="WarningBrush" Color="#d1a153" />
|
||||
<SolidColorBrush x:Key="DangerBrush" Color="#e0685a" />
|
||||
<SolidColorBrush x:Key="DangerSoftBrush" Color="#2ee0685a" />
|
||||
<SolidColorBrush x:Key="DangerTextBrush" Color="#f0a79c" />
|
||||
<SolidColorBrush x:Key="WarningSoftBrush" Color="#1ad1a153" />
|
||||
<SolidColorBrush x:Key="DangerBarBrush" Color="#1ae0685a" />
|
||||
|
||||
</ResourceDictionary>
|
||||
|
||||
</ResourceDictionary.ThemeDictionaries>
|
||||
|
||||
<!-- ══════════════════ Themenunabhaengig ══════════════════ -->
|
||||
|
||||
<!--
|
||||
Barlow Condensed ueber Barlow, beide mitgeliefert statt per Systemname referenziert:
|
||||
Barlow Condensed liegt auf keinem Windows und auf keinem schlanken Linux-Abbild, und
|
||||
ohne die Schrift faellt der halbe Entwurf in sich zusammen.
|
||||
-->
|
||||
<FontFamily x:Key="HeadingFont">avares://ClawdDotNet/Assets/Fonts#Barlow Condensed</FontFamily>
|
||||
<FontFamily x:Key="BodyFont">avares://ClawdDotNet/Assets/Fonts#Barlow</FontFamily>
|
||||
<FontFamily x:Key="MonoFont">Cascadia Mono,Consolas,Menlo,DejaVu Sans Mono,monospace</FontFamily>
|
||||
|
||||
</ResourceDictionary>
|
||||
Reference in New Issue
Block a user