Files
OwnCord/Client/OwnCord.Client/Controls/CodeBlockControl.xaml
T
jevb c1c25ed26c feat: implement full client UI from mockup — 10 phases, 331 tests
Client UI:
- Design system: Colors, Typography, Controls resource dictionaries
- Message actions: reply compose bar, hover edit/delete/reply buttons
- Rich content: code blocks, attachments, system messages, content parser
- Server strip: 72px sidebar with server icons, home button, add server
- Status picker: popup for changing online/idle/dnd/invisible status
- ConnectPage: server health check dots with auto-refresh
- User popup: profile card with banner, avatar, roles, member since
- Emoji picker: 6 categories, search, grid of Unicode emojis
- Settings overlay: full-screen with sidebar navigation
- Friends/DM view: sidebar + friends list with tabs (online/all/pending)
- Toast notifications: auto-dismiss after 3s with fade animation

Models & services:
- Attachment model added to Message, ApiMessage, ChatMessagePayload
- EditMessageAsync, DeleteMessageAsync, SendStatusChangeAsync APIs
- MessageContentParser (code blocks, inline code, bold, italic)
- EmojiData, ToastService, HealthStatusToBrushConverter

Server (from prior session):
- Voice room management, SFU, speaker detection
- ACME/TLS support, config improvements
- Protocol and schema updates

Tests: 331 passing (61 converter + 24 voice service + 34 voice VM +
41 parser + 9 edit/delete + existing)
2026-03-15 11:42:25 +01:00

35 lines
1.4 KiB
XML

<UserControl x:Class="OwnCord.Client.Controls.CodeBlockControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Name="Root">
<Border Background="{StaticResource BgTertiary}"
BorderBrush="{StaticResource BorderBrush}"
BorderThickness="1"
CornerRadius="4"
Padding="12">
<Grid>
<!-- Language label in top-right corner -->
<TextBlock x:Name="LanguageLabel"
HorizontalAlignment="Right"
VerticalAlignment="Top"
FontFamily="{StaticResource FontBody}"
FontSize="11"
Foreground="{StaticResource TextMuted}"
Margin="0,-2,0,0"/>
<!-- Code content with horizontal scrolling -->
<ScrollViewer HorizontalScrollBarVisibility="Auto"
VerticalScrollBarVisibility="Disabled"
Margin="0,14,0,0">
<TextBlock x:Name="CodeText"
FontFamily="{StaticResource FontMono}"
FontSize="13"
Foreground="{StaticResource TextNormal}"
TextWrapping="NoWrap"
xml:space="preserve"/>
</ScrollViewer>
</Grid>
</Border>
</UserControl>