From bdf52e82afb84ea6823435e67f4dcde67cc1549e Mon Sep 17 00:00:00 2001 From: Nouredeen06 Date: Wed, 1 Apr 2026 21:34:36 +0300 Subject: [PATCH] Added Budgets Create/Update/Delete, Account Create/Update/Delete, and fully added settings tab, and refactored a lot of the data logic --- .gitignore | 3 +- Clario.Android/Clario.Android.csproj | 3 + Clario.Browser/Clario.Browser.csproj | 17 +- Clario.Desktop/Clario.Desktop.csproj | 3 + Clario.Desktop/Clario.Desktop.parcel | 36 ++ Clario.iOS/Clario.iOS.csproj | 3 + Clario/App.axaml | 3 + Clario/App.axaml.cs | 5 +- Clario/Assets/Icons/circle-check.svg | 1 + Clario/Assets/Icons/log-out.svg | 1 + Clario/Assets/Icons/refresh-cw.svg | 1 + Clario/Assets/Icons/upload.svg | 1 + Clario/Assets/Icons/wallet-cards.svg | 1 + Clario/Clario.csproj | 5 + Clario/Converters/BoolToStringConverter.cs | 20 + Clario/Converters/CreditAmountConverter.cs | 19 + Clario/Converters/HexToColorConverter.cs | 15 +- Clario/CustomControls/DateRangePicker.axaml | 110 +++- Clario/CustomControls/DateRangePicker.cs | 53 +- Clario/Data/GeneralDataRepo.cs | 353 +++++++++-- Clario/MobileViews/BudgetViewMobile.axaml | 11 +- Clario/Models/Account.cs | 4 +- Clario/Models/Budget.cs | 4 +- Clario/Models/Profile.cs | 4 + Clario/Models/Transaction.cs | 14 +- Clario/Services/AvatarService.cs | 78 +++ Clario/Services/FilePickerService.cs | 39 ++ Clario/Services/FileSessionStorage.cs | 8 +- Clario/Theme/AppTheme.axaml | 54 +- Clario/Theme/Styles/ColorPickerStyles.axaml | 210 ++++++ Clario/Theme/Styles/SliderStyles.axaml | 116 ++++ Clario/ViewModels/AccountFormViewModel.cs | 210 ++++++ Clario/ViewModels/AccountsViewModel.cs | 69 +- Clario/ViewModels/AuthViewModel.cs | 13 +- Clario/ViewModels/BudgetCardMenuViewModel.cs | 6 - Clario/ViewModels/BudgetFormViewModel.cs | 206 +++++- Clario/ViewModels/BudgetViewModel.cs | 66 +- Clario/ViewModels/DashboardViewModel.cs | 122 ++-- .../DeleteAccountDialogViewModel.cs | 154 +++++ Clario/ViewModels/MainViewModel.cs | 272 ++++---- Clario/ViewModels/SettingsViewModel.cs | 418 ++++++++++++ Clario/ViewModels/TransactionFormViewModel.cs | 32 +- Clario/ViewModels/TransactionsViewModel.cs | 96 ++- Clario/Views/AccountFormView.axaml | 328 ++++++++++ Clario/Views/AccountFormView.axaml.cs | 13 + Clario/Views/AccountsView.axaml | 31 +- Clario/Views/AuthView.axaml | 4 +- Clario/Views/BudgetCardMenuView.axaml | 85 --- Clario/Views/BudgetCardMenuView.axaml.cs | 11 - Clario/Views/BudgetFormView.axaml | 596 ++++++++++++------ Clario/Views/BudgetFormView.axaml.cs | 4 +- Clario/Views/BudgetView.axaml | 60 +- Clario/Views/DashboardView.axaml | 8 +- Clario/Views/DeleteAccountDialogView.axaml | 495 +++++++++++++++ Clario/Views/DeleteAccountDialogView.axaml.cs | 13 + Clario/Views/MainView.axaml | 40 +- Clario/Views/SettingsView.axaml | 531 ++++++++++++++++ Clario/Views/SettingsView.axaml.cs | 13 + Clario/Views/TransactionFormView.axaml | 1 + Clario/Views/TransactionsView.axaml | 2 +- Directory.Packages.props | 2 + 61 files changed, 4377 insertions(+), 719 deletions(-) create mode 100644 Clario.Desktop/Clario.Desktop.parcel create mode 100644 Clario/Assets/Icons/circle-check.svg create mode 100644 Clario/Assets/Icons/log-out.svg create mode 100644 Clario/Assets/Icons/refresh-cw.svg create mode 100644 Clario/Assets/Icons/upload.svg create mode 100644 Clario/Assets/Icons/wallet-cards.svg create mode 100644 Clario/Converters/BoolToStringConverter.cs create mode 100644 Clario/Converters/CreditAmountConverter.cs create mode 100644 Clario/Services/AvatarService.cs create mode 100644 Clario/Services/FilePickerService.cs create mode 100644 Clario/Theme/Styles/ColorPickerStyles.axaml create mode 100644 Clario/Theme/Styles/SliderStyles.axaml create mode 100644 Clario/ViewModels/AccountFormViewModel.cs delete mode 100644 Clario/ViewModels/BudgetCardMenuViewModel.cs create mode 100644 Clario/ViewModels/DeleteAccountDialogViewModel.cs create mode 100644 Clario/ViewModels/SettingsViewModel.cs create mode 100644 Clario/Views/AccountFormView.axaml create mode 100644 Clario/Views/AccountFormView.axaml.cs delete mode 100644 Clario/Views/BudgetCardMenuView.axaml delete mode 100644 Clario/Views/BudgetCardMenuView.axaml.cs create mode 100644 Clario/Views/DeleteAccountDialogView.axaml create mode 100644 Clario/Views/DeleteAccountDialogView.axaml.cs create mode 100644 Clario/Views/SettingsView.axaml create mode 100644 Clario/Views/SettingsView.axaml.cs diff --git a/.gitignore b/.gitignore index 017d140..5592f77 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,5 @@ obj/ .vs/ .idea/ *.user -*.suo \ No newline at end of file +*.suo +./Clario/CLAUDE_CONTEXT.md \ No newline at end of file diff --git a/Clario.Android/Clario.Android.csproj b/Clario.Android/Clario.Android.csproj index bd7e303..a97e0a7 100644 --- a/Clario.Android/Clario.Android.csproj +++ b/Clario.Android/Clario.Android.csproj @@ -15,10 +15,13 @@ + + + diff --git a/Clario.Browser/Clario.Browser.csproj b/Clario.Browser/Clario.Browser.csproj index 9a83c58..49cb37a 100644 --- a/Clario.Browser/Clario.Browser.csproj +++ b/Clario.Browser/Clario.Browser.csproj @@ -8,15 +8,18 @@ - - - - - - + + + + + + + + + - + diff --git a/Clario.Desktop/Clario.Desktop.csproj b/Clario.Desktop/Clario.Desktop.csproj index 484e86d..41f803f 100644 --- a/Clario.Desktop/Clario.Desktop.csproj +++ b/Clario.Desktop/Clario.Desktop.csproj @@ -3,6 +3,7 @@ WinExe net8.0 enable + true @@ -10,6 +11,7 @@ + @@ -20,6 +22,7 @@ + diff --git a/Clario.Desktop/Clario.Desktop.parcel b/Clario.Desktop/Clario.Desktop.parcel new file mode 100644 index 0000000..ac44630 --- /dev/null +++ b/Clario.Desktop/Clario.Desktop.parcel @@ -0,0 +1,36 @@ +{ + "GeneralSettings": { + "NetProjectPath": "Clario.Desktop.csproj", + "ApplicationName": "Clario", + "Version": "0.3.0", + "PackageName": { + "$type": "msbuild", + "property": "AssemblyName" + }, + "AssemblyName": { + "$type": "msbuild", + "property": "AssemblyName" + } + }, + "LinuxSettings": { + "AppIcon": "../Clario/Assets/Logo.png", + "CreateBinSymlink": "True" + }, + "Win32Settings": { + "InstallerIcon": "../Clario/Assets/Clario-Logo.svg", + "Company": "Clario", + "IncludeUninstaller": "True" + }, + "MacOsSettings": { + "CreateBundle": true, + "BundleIdentifier": "com.CompanyName.Clario-Desktop", + "SigningCredentialsType": "AdHoc" + }, + "PublishSettings": { + "PublishSingleFile": "True", + "PublishReadyToRun": "True", + "ExtraBuildProperties": { + "RuntimeFrameworkVersion": "8.0.11" + } + } +} \ No newline at end of file diff --git a/Clario.iOS/Clario.iOS.csproj b/Clario.iOS/Clario.iOS.csproj index f14564b..bf8b569 100644 --- a/Clario.iOS/Clario.iOS.csproj +++ b/Clario.iOS/Clario.iOS.csproj @@ -7,11 +7,14 @@ + + + diff --git a/Clario/App.axaml b/Clario/App.axaml index 223eabb..6a262f8 100644 --- a/Clario/App.axaml +++ b/Clario/App.axaml @@ -28,10 +28,13 @@ + + + \ No newline at end of file diff --git a/Clario/App.axaml.cs b/Clario/App.axaml.cs index cfed3a8..b02f2ed 100644 --- a/Clario/App.axaml.cs +++ b/Clario/App.axaml.cs @@ -50,7 +50,7 @@ public partial class App : Application } IsMobile = ApplicationLifetime is ISingleViewApplicationLifetime; - + var culture = new CultureInfo("en-US"); CultureInfo.DefaultThreadCurrentCulture = culture; @@ -60,8 +60,9 @@ public partial class App : Application { await SupabaseService.Client.Auth.RetrieveSessionAsync(); } - catch + catch (Exception e) { + Console.WriteLine($"[Auth] RetrieveSession failed: {e.Message}"); } var user = SupabaseService.Client.Auth.CurrentUser; diff --git a/Clario/Assets/Icons/circle-check.svg b/Clario/Assets/Icons/circle-check.svg new file mode 100644 index 0000000..05d65a4 --- /dev/null +++ b/Clario/Assets/Icons/circle-check.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Clario/Assets/Icons/log-out.svg b/Clario/Assets/Icons/log-out.svg new file mode 100644 index 0000000..9aaaa32 --- /dev/null +++ b/Clario/Assets/Icons/log-out.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Clario/Assets/Icons/refresh-cw.svg b/Clario/Assets/Icons/refresh-cw.svg new file mode 100644 index 0000000..b0edef9 --- /dev/null +++ b/Clario/Assets/Icons/refresh-cw.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Clario/Assets/Icons/upload.svg b/Clario/Assets/Icons/upload.svg new file mode 100644 index 0000000..9fc43a8 --- /dev/null +++ b/Clario/Assets/Icons/upload.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Clario/Assets/Icons/wallet-cards.svg b/Clario/Assets/Icons/wallet-cards.svg new file mode 100644 index 0000000..1682142 --- /dev/null +++ b/Clario/Assets/Icons/wallet-cards.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Clario/Clario.csproj b/Clario/Clario.csproj index c980a39..6d16347 100644 --- a/Clario/Clario.csproj +++ b/Clario/Clario.csproj @@ -13,6 +13,7 @@ + @@ -30,6 +31,7 @@ + @@ -38,5 +40,8 @@ MobileMainView.axaml Code + + AccountFormView.axaml + diff --git a/Clario/Converters/BoolToStringConverter.cs b/Clario/Converters/BoolToStringConverter.cs new file mode 100644 index 0000000..7668f4d --- /dev/null +++ b/Clario/Converters/BoolToStringConverter.cs @@ -0,0 +1,20 @@ +using System; +using System.Globalization; +using Avalonia.Data.Converters; + +namespace Clario.Converters; + +public class BoolToStringConverter : IValueConverter +{ + public object? Convert(object? value, Type targetType, object? parameter, CultureInfo culture) + { + if (value is not bool b || parameter is not string s) return null; + var results = s.Split('|'); + return b ? results[0] : results[1]; + } + + public object? ConvertBack(object? value, Type targetType, object? parameter, CultureInfo culture) + { + throw new NotImplementedException(); + } +} \ No newline at end of file diff --git a/Clario/Converters/CreditAmountConverter.cs b/Clario/Converters/CreditAmountConverter.cs new file mode 100644 index 0000000..40ed11b --- /dev/null +++ b/Clario/Converters/CreditAmountConverter.cs @@ -0,0 +1,19 @@ +using System; +using System.Globalization; +using Avalonia.Data.Converters; + +namespace Clario.Converters; + +public class CreditAmountConverter : IValueConverter +{ + public object? Convert(object? value, Type targetType, object? parameter, CultureInfo culture) + { + if (value is not decimal amount) return 0; + return amount < 0 ? amount * -1 : 0; + } + + public object? ConvertBack(object? value, Type targetType, object? parameter, CultureInfo culture) + { + throw new NotImplementedException(); + } +} \ No newline at end of file diff --git a/Clario/Converters/HexToColorConverter.cs b/Clario/Converters/HexToColorConverter.cs index 259272f..2bba08c 100644 --- a/Clario/Converters/HexToColorConverter.cs +++ b/Clario/Converters/HexToColorConverter.cs @@ -1,5 +1,6 @@ using System; using System.Globalization; +using Avalonia.Controls.Converters; using Avalonia.Data.Converters; using Avalonia.Media; @@ -21,6 +22,18 @@ public class HexToColorConverter : IValueConverter public object? ConvertBack(object? value, Type targetType, object? parameter, CultureInfo culture) { - throw new NotImplementedException(); + if (parameter is not string type) return null; + var color = Color.Parse("#ffffff"); + if (value is Color c) + { + color = c; + } + + if (value is SolidColorBrush b) + { + color = b.Color; + } + + return $"#{color.R:X2}{color.G:X2}{color.B:X2}"; } } \ No newline at end of file diff --git a/Clario/CustomControls/DateRangePicker.axaml b/Clario/CustomControls/DateRangePicker.axaml index 160c99d..6d9d96a 100644 --- a/Clario/CustomControls/DateRangePicker.axaml +++ b/Clario/CustomControls/DateRangePicker.axaml @@ -2,6 +2,76 @@ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:Clario.CustomControls"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - \ No newline at end of file + + + + + + + + + + + + + + diff --git a/Clario/CustomControls/DateRangePicker.cs b/Clario/CustomControls/DateRangePicker.cs index 90c1e13..84e5a53 100644 --- a/Clario/CustomControls/DateRangePicker.cs +++ b/Clario/CustomControls/DateRangePicker.cs @@ -5,8 +5,10 @@ using System.Linq; using Avalonia; using Avalonia.Controls; using Avalonia.Controls.Primitives; +using Avalonia.Data; using Avalonia.Input; using Avalonia.Interactivity; +using Avalonia.VisualTree; using Calendar = Avalonia.Controls.Calendar; namespace Clario.CustomControls; @@ -23,19 +25,28 @@ public class DateRangePicker : TemplatedControl set => SetValue(SelectionModeProperty, value); } - public static readonly StyledProperty> SelectedDatesProperty = - AvaloniaProperty.Register>( - nameof(SelectedDates), new List()); + // FIX: Use DirectProperty to avoid shared-instance default and get proper TwoWay support + private IList _selectedDates = new List(); + + public static readonly DirectProperty> SelectedDatesProperty = + AvaloniaProperty.RegisterDirect>( + nameof(SelectedDates), + o => o.SelectedDates, + (o, v) => o.SelectedDates = v, + defaultBindingMode: BindingMode.TwoWay); public IList SelectedDates { - get => GetValue(SelectedDatesProperty); - set => SetValue(SelectedDatesProperty, value); + get => _selectedDates; + set => SetAndRaise(SelectedDatesProperty, ref _selectedDates, value); } + // FIX: Add defaultBindingMode: TwoWay so changes propagate back to the ViewModel public static readonly StyledProperty SelectedDateProperty = AvaloniaProperty.Register( - nameof(SelectedDate), null); + nameof(SelectedDate), + defaultValue: null, + defaultBindingMode: BindingMode.TwoWay); public DateTime? SelectedDate { @@ -58,7 +69,6 @@ public class DateRangePicker : TemplatedControl private Popup? _popup; private Calendar? _calendar; - private bool _isSyncing = false; @@ -66,12 +76,12 @@ public class DateRangePicker : TemplatedControl { base.OnApplyTemplate(e); - if (_button != null) _button.Click -= OnButtonClick; if (_calendar != null) { _calendar.SelectedDatesChanged -= OnCalendarDatesChanged; _calendar.RemoveHandler(PointerReleasedEvent, OnCalendarPointerReleased); + // _calendar.RemoveHandler(Button.ClickEvent, OnCalendarInternalClick); // add this } _button = e.NameScope.Find + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Clario/Views/AccountFormView.axaml.cs b/Clario/Views/AccountFormView.axaml.cs new file mode 100644 index 0000000..26c1975 --- /dev/null +++ b/Clario/Views/AccountFormView.axaml.cs @@ -0,0 +1,13 @@ +using Avalonia; +using Avalonia.Controls; +using Avalonia.Markup.Xaml; + +namespace Clario.Views; + +public partial class AccountFormView : UserControl +{ + public AccountFormView() + { + InitializeComponent(); + } +} diff --git a/Clario/Views/AccountsView.axaml b/Clario/Views/AccountsView.axaml index a25858f..e8013a1 100644 --- a/Clario/Views/AccountsView.axaml +++ b/Clario/Views/AccountsView.axaml @@ -3,6 +3,7 @@ xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:vm="clr-namespace:Clario.ViewModels" + xmlns:views="clr-namespace:Clario.Views" xmlns:model="clr-namespace:Clario.Models" x:DataType="vm:AccountsViewModel" mc:Ignorable="d" d:DesignWidth="1180" d:DesignHeight="800" @@ -18,7 +19,7 @@ - @@ -155,7 +170,9 @@ - @@ -354,7 +371,9 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Clario/Views/BudgetCardMenuView.axaml.cs b/Clario/Views/BudgetCardMenuView.axaml.cs deleted file mode 100644 index c22587e..0000000 --- a/Clario/Views/BudgetCardMenuView.axaml.cs +++ /dev/null @@ -1,11 +0,0 @@ -using Avalonia.Controls; - -namespace Clario.Views; - -public partial class BudgetCardMenuView : UserControl -{ - public BudgetCardMenuView() - { - InitializeComponent(); - } -} \ No newline at end of file diff --git a/Clario/Views/BudgetFormView.axaml b/Clario/Views/BudgetFormView.axaml index b9c7103..ddf61ca 100644 --- a/Clario/Views/BudgetFormView.axaml +++ b/Clario/Views/BudgetFormView.axaml @@ -2,226 +2,412 @@ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" - xmlns:styles="clr-namespace:Clario.Theme.Styles" - mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450" - x:Class="Clario.Views.BudgetFormView"> - - + xmlns:vm="clr-namespace:Clario.ViewModels" + xmlns:behaviors="clr-namespace:Clario.Behaviors" + mc:Ignorable="d" + x:Class="Clario.Views.BudgetFormView" + x:DataType="vm:BudgetFormViewModel"> + + + - - - - - - - - - - - - - + + + - - - - + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + CornerRadius="10" + Width="42" Height="42" + Margin="0,0,14,0"> + + + + + + - - - - - + + + + + + + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Clario/Views/BudgetFormView.axaml.cs b/Clario/Views/BudgetFormView.axaml.cs index 647c029..7701460 100644 --- a/Clario/Views/BudgetFormView.axaml.cs +++ b/Clario/Views/BudgetFormView.axaml.cs @@ -1,4 +1,6 @@ -using Avalonia.Controls; +using Avalonia; +using Avalonia.Controls; +using Avalonia.Markup.Xaml; namespace Clario.Views; diff --git a/Clario/Views/BudgetView.axaml b/Clario/Views/BudgetView.axaml index 4c430c0..ab4272c 100644 --- a/Clario/Views/BudgetView.axaml +++ b/Clario/Views/BudgetView.axaml @@ -4,13 +4,11 @@ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:vm="clr-namespace:Clario.ViewModels" xmlns:lvc="using:LiveChartsCore.SkiaSharpView.Avalonia" - xmlns:views="clr-namespace:Clario.Views" - xmlns:system="clr-namespace:System;assembly=System.Runtime" - xmlns:skiaSharpView="clr-namespace:LiveChartsCore.SkiaSharpView;assembly=LiveChartsCore.SkiaSharpView" xmlns:model="clr-namespace:Clario.Models" x:DataType="vm:BudgetViewModel" mc:Ignorable="d" d:DesignWidth="1180" d:DesignHeight="800" - x:Class="Clario.Views.BudgetView"> + x:Class="Clario.Views.BudgetView" + x:Name="budgetControl"> @@ -52,7 +50,7 @@ + @@ -192,24 +195,6 @@ Foreground="{DynamicResource TextMuted}" HorizontalAlignment="Right" /> - - - @@ -569,7 +554,8 @@ - @@ -581,7 +567,7 @@ - + - + + @@ -113,7 +114,7 @@ - + + LegendPosition="Hidden" TooltipPosition="Hidden" ZoomMode="None" Name="chart" + AnimationsSpeed="00:00:00.1"> diff --git a/Clario/Views/DeleteAccountDialogView.axaml b/Clario/Views/DeleteAccountDialogView.axaml new file mode 100644 index 0000000..099e1db --- /dev/null +++ b/Clario/Views/DeleteAccountDialogView.axaml @@ -0,0 +1,495 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Clario/Views/DeleteAccountDialogView.axaml.cs b/Clario/Views/DeleteAccountDialogView.axaml.cs new file mode 100644 index 0000000..0f1eab9 --- /dev/null +++ b/Clario/Views/DeleteAccountDialogView.axaml.cs @@ -0,0 +1,13 @@ +using Avalonia; +using Avalonia.Controls; +using Avalonia.Markup.Xaml; + +namespace Clario.Views; + +public partial class DeleteAccountDialogView : UserControl +{ + public DeleteAccountDialogView() + { + InitializeComponent(); + } +} \ No newline at end of file diff --git a/Clario/Views/MainView.axaml b/Clario/Views/MainView.axaml index b3168f1..4b099f0 100644 --- a/Clario/Views/MainView.axaml +++ b/Clario/Views/MainView.axaml @@ -103,12 +103,23 @@ Padding="12,10"> - - - + + + + + + + + + - + @@ -169,7 +180,7 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Clario/Views/SettingsView.axaml.cs b/Clario/Views/SettingsView.axaml.cs new file mode 100644 index 0000000..e52a2f5 --- /dev/null +++ b/Clario/Views/SettingsView.axaml.cs @@ -0,0 +1,13 @@ +using Avalonia; +using Avalonia.Controls; +using Avalonia.Markup.Xaml; + +namespace Clario.Views; + +public partial class SettingsView : UserControl +{ + public SettingsView() + { + InitializeComponent(); + } +} \ No newline at end of file diff --git a/Clario/Views/TransactionFormView.axaml b/Clario/Views/TransactionFormView.axaml index a9984c2..08d5d75 100644 --- a/Clario/Views/TransactionFormView.axaml +++ b/Clario/Views/TransactionFormView.axaml @@ -257,6 +257,7 @@ Classes="ghost" SelectionMode="SingleDate" SelectedDates="{Binding Dates}" + SelectedDate="{Binding}" HorizontalAlignment="Stretch" Padding="12,10" />