elfisa-pharmacy/src/Elfisa.Avalonia/Views/LoginView.axaml
Exest f6a1012e9b Avalonia кросс-платформенный клиент: фундамент + раздел «Отчёты»
Порт десктопа с WinForms на Avalonia (.NET 8, Win/macOS/Linux).

- Elfisa.Core: переносимая логика (ApiClient: логин/отчёт/ИИ, DTO, Session)
- Дизайн-система в бирюзе #0F766E (свет/тьма, кнопки/поля/карточки/таблица/сайдбар)
- Экран входа (реальный /auth/login), шелл с сайдбар-навигацией
- «Отчёты»: 4 типа + авто-загрузка + ИИ-запрос -> Word/Excel, динамические колонки
- Заглушки остальных разделов + README с дорожной картой портирования

Проверено запуском: логин, живые данные покупателя, тема, таблица (скриншот).
dev-автологин по ELF_DEV_USER/ELF_DEV_PASS.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-07 18:21:10 +03:00

40 lines
2.0 KiB
XML

<UserControl xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:vm="using:Elfisa.Avalonia.ViewModels"
xmlns:conv="using:Avalonia.Data.Converters"
x:Class="Elfisa.Avalonia.Views.LoginView"
x:DataType="vm:LoginViewModel">
<Grid Background="{DynamicResource Bg}">
<Border Classes="card" Width="390" Padding="30"
HorizontalAlignment="Center" VerticalAlignment="Center">
<StackPanel Spacing="16">
<StackPanel Spacing="2" Margin="0,0,0,6">
<TextBlock Text="ЭльФиСА" FontSize="28" FontWeight="Bold"
Foreground="{DynamicResource Accent}" HorizontalAlignment="Center"/>
<TextBlock Text="Электронная Фармация" Classes="muted" HorizontalAlignment="Center"/>
</StackPanel>
<StackPanel Spacing="6">
<TextBlock Text="Логин" Classes="label"/>
<TextBox Text="{Binding Username}" Watermark="e-mail или логин"/>
</StackPanel>
<StackPanel Spacing="6">
<TextBlock Text="Пароль" Classes="label"/>
<TextBox Text="{Binding Password}" PasswordChar="●" Watermark="пароль"/>
</StackPanel>
<Border Background="#1FDC2626" CornerRadius="6" Padding="10,7"
IsVisible="{Binding Error, Converter={x:Static conv:ObjectConverters.IsNotNull}}">
<TextBlock Text="{Binding Error}" Foreground="#DC2626" TextWrapping="Wrap" FontSize="12.5"/>
</Border>
<Button Classes="primary" Content="Войти" IsDefault="True"
HorizontalAlignment="Stretch" Margin="0,4,0,0"
Command="{Binding LoginCommand}" IsEnabled="{Binding !Busy}"/>
</StackPanel>
</Border>
</Grid>
</UserControl>