Порт десктопа с 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>
40 lines
2.0 KiB
XML
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>
|