diff --git a/src/SampleCRM.Maui.sln b/src/SampleCRM.Maui.sln new file mode 100644 index 0000000..6652a5a --- /dev/null +++ b/src/SampleCRM.Maui.sln @@ -0,0 +1,65 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.8.34330.188 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SampleCRM.Maui", "SampleCRM.Maui\SampleCRM.Maui.csproj", "{4941902B-3C0D-48E7-B451-472D328ED5BE}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SampleCRM", "SampleCRM\SampleCRM.csproj", "{F1D5A0D6-57B6-4157-BCFC-4F35199CCB7B}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SampleCRM.Browser", "SampleCRM.Browser\SampleCRM.Browser.csproj", "{642A8824-C584-48A6-93EF-BC858C5C16BB}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SampleCRM.Web", "SampleCRM.Web\SampleCRM.Web.csproj", "{A8AA986C-4AEF-489F-86EC-19029369765E}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Debug|x64 = Debug|x64 + Release|Any CPU = Release|Any CPU + Release|x64 = Release|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {4941902B-3C0D-48E7-B451-472D328ED5BE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4941902B-3C0D-48E7-B451-472D328ED5BE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4941902B-3C0D-48E7-B451-472D328ED5BE}.Debug|Any CPU.Deploy.0 = Debug|Any CPU + {4941902B-3C0D-48E7-B451-472D328ED5BE}.Debug|x64.ActiveCfg = Debug|Any CPU + {4941902B-3C0D-48E7-B451-472D328ED5BE}.Debug|x64.Build.0 = Debug|Any CPU + {4941902B-3C0D-48E7-B451-472D328ED5BE}.Debug|x64.Deploy.0 = Debug|Any CPU + {4941902B-3C0D-48E7-B451-472D328ED5BE}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4941902B-3C0D-48E7-B451-472D328ED5BE}.Release|Any CPU.Build.0 = Release|Any CPU + {4941902B-3C0D-48E7-B451-472D328ED5BE}.Release|Any CPU.Deploy.0 = Release|Any CPU + {4941902B-3C0D-48E7-B451-472D328ED5BE}.Release|x64.ActiveCfg = Release|Any CPU + {4941902B-3C0D-48E7-B451-472D328ED5BE}.Release|x64.Build.0 = Release|Any CPU + {4941902B-3C0D-48E7-B451-472D328ED5BE}.Release|x64.Deploy.0 = Release|Any CPU + {F1D5A0D6-57B6-4157-BCFC-4F35199CCB7B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F1D5A0D6-57B6-4157-BCFC-4F35199CCB7B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F1D5A0D6-57B6-4157-BCFC-4F35199CCB7B}.Debug|x64.ActiveCfg = Debug|Any CPU + {F1D5A0D6-57B6-4157-BCFC-4F35199CCB7B}.Debug|x64.Build.0 = Debug|Any CPU + {F1D5A0D6-57B6-4157-BCFC-4F35199CCB7B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F1D5A0D6-57B6-4157-BCFC-4F35199CCB7B}.Release|Any CPU.Build.0 = Release|Any CPU + {F1D5A0D6-57B6-4157-BCFC-4F35199CCB7B}.Release|x64.ActiveCfg = Release|Any CPU + {F1D5A0D6-57B6-4157-BCFC-4F35199CCB7B}.Release|x64.Build.0 = Release|Any CPU + {642A8824-C584-48A6-93EF-BC858C5C16BB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {642A8824-C584-48A6-93EF-BC858C5C16BB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {642A8824-C584-48A6-93EF-BC858C5C16BB}.Debug|x64.ActiveCfg = Debug|Any CPU + {642A8824-C584-48A6-93EF-BC858C5C16BB}.Debug|x64.Build.0 = Debug|Any CPU + {642A8824-C584-48A6-93EF-BC858C5C16BB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {642A8824-C584-48A6-93EF-BC858C5C16BB}.Release|Any CPU.Build.0 = Release|Any CPU + {642A8824-C584-48A6-93EF-BC858C5C16BB}.Release|x64.ActiveCfg = Release|Any CPU + {642A8824-C584-48A6-93EF-BC858C5C16BB}.Release|x64.Build.0 = Release|Any CPU + {A8AA986C-4AEF-489F-86EC-19029369765E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A8AA986C-4AEF-489F-86EC-19029369765E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A8AA986C-4AEF-489F-86EC-19029369765E}.Debug|x64.ActiveCfg = Debug|x64 + {A8AA986C-4AEF-489F-86EC-19029369765E}.Debug|x64.Build.0 = Debug|x64 + {A8AA986C-4AEF-489F-86EC-19029369765E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A8AA986C-4AEF-489F-86EC-19029369765E}.Release|Any CPU.Build.0 = Release|Any CPU + {A8AA986C-4AEF-489F-86EC-19029369765E}.Release|x64.ActiveCfg = Release|x64 + {A8AA986C-4AEF-489F-86EC-19029369765E}.Release|x64.Build.0 = Release|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {7D841C45-9605-439B-BC0A-7E50859A3F37} + EndGlobalSection +EndGlobal diff --git a/src/SampleCRM.Maui/App.xaml b/src/SampleCRM.Maui/App.xaml new file mode 100644 index 0000000..aea6e00 --- /dev/null +++ b/src/SampleCRM.Maui/App.xaml @@ -0,0 +1,26 @@ + + + + + + #512bdf + White + + + + + + + + \ No newline at end of file diff --git a/src/SampleCRM.Maui/App.xaml.cs b/src/SampleCRM.Maui/App.xaml.cs new file mode 100644 index 0000000..0392ba7 --- /dev/null +++ b/src/SampleCRM.Maui/App.xaml.cs @@ -0,0 +1,12 @@ +namespace SampleCRM.Maui +{ + public partial class App : Application + { + public App() + { + InitializeComponent(); + + MainPage = new MainPage(); + } + } +} diff --git a/src/SampleCRM.Maui/MainPage.xaml b/src/SampleCRM.Maui/MainPage.xaml new file mode 100644 index 0000000..035c094 --- /dev/null +++ b/src/SampleCRM.Maui/MainPage.xaml @@ -0,0 +1,11 @@ + + + + + + + diff --git a/src/SampleCRM.Maui/MainPage.xaml.cs b/src/SampleCRM.Maui/MainPage.xaml.cs new file mode 100644 index 0000000..2555b3a --- /dev/null +++ b/src/SampleCRM.Maui/MainPage.xaml.cs @@ -0,0 +1,17 @@ +using Microsoft.AspNetCore.Components.WebView.Maui; + +namespace SampleCRM.Maui +{ + public partial class MainPage : ContentPage + { + public MainPage() + { + InitializeComponent(); + + var rootComponent = new RootComponent(); + rootComponent.Selector = "#app"; + rootComponent.ComponentType = typeof(Browser.App); + blazorWebView.RootComponents.Add(rootComponent); + } + } +} diff --git a/src/SampleCRM.Maui/MauiProgram.cs b/src/SampleCRM.Maui/MauiProgram.cs new file mode 100644 index 0000000..9e7b68f --- /dev/null +++ b/src/SampleCRM.Maui/MauiProgram.cs @@ -0,0 +1,27 @@ +using Microsoft.Extensions.Logging; + +namespace SampleCRM.Maui +{ + public static class MauiProgram + { + public static MauiApp CreateMauiApp() + { + var builder = MauiApp.CreateBuilder(); + builder + .UseMauiApp() + .ConfigureFonts(fonts => + { + fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular"); + }); + + builder.Services.AddMauiBlazorWebView(); + +#if DEBUG + builder.Services.AddBlazorWebViewDeveloperTools(); + builder.Logging.AddDebug(); +#endif + + return builder.Build(); + } + } +} diff --git a/src/SampleCRM.Maui/Platforms/Android/AndroidManifest.xml b/src/SampleCRM.Maui/Platforms/Android/AndroidManifest.xml new file mode 100644 index 0000000..c82c665 --- /dev/null +++ b/src/SampleCRM.Maui/Platforms/Android/AndroidManifest.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/SampleCRM.Maui/Platforms/Android/MainActivity.cs b/src/SampleCRM.Maui/Platforms/Android/MainActivity.cs new file mode 100644 index 0000000..e15ec5a --- /dev/null +++ b/src/SampleCRM.Maui/Platforms/Android/MainActivity.cs @@ -0,0 +1,11 @@ +using Android.App; +using Android.Content.PM; +using Android.OS; + +namespace SampleCRM.Maui +{ + [Activity(Theme = "@style/Maui.SplashTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation | ConfigChanges.UiMode | ConfigChanges.ScreenLayout | ConfigChanges.SmallestScreenSize | ConfigChanges.Density)] + public class MainActivity : MauiAppCompatActivity + { + } +} diff --git a/src/SampleCRM.Maui/Platforms/Android/MainApplication.cs b/src/SampleCRM.Maui/Platforms/Android/MainApplication.cs new file mode 100644 index 0000000..f0b5058 --- /dev/null +++ b/src/SampleCRM.Maui/Platforms/Android/MainApplication.cs @@ -0,0 +1,16 @@ +using Android.App; +using Android.Runtime; + +namespace SampleCRM.Maui +{ + [Application] + public class MainApplication : MauiApplication + { + public MainApplication(IntPtr handle, JniHandleOwnership ownership) + : base(handle, ownership) + { + } + + protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp(); + } +} diff --git a/src/SampleCRM.Maui/Platforms/Android/Resources/values/colors.xml b/src/SampleCRM.Maui/Platforms/Android/Resources/values/colors.xml new file mode 100644 index 0000000..5cd1604 --- /dev/null +++ b/src/SampleCRM.Maui/Platforms/Android/Resources/values/colors.xml @@ -0,0 +1,6 @@ + + + #512BD4 + #2B0B98 + #2B0B98 + \ No newline at end of file diff --git a/src/SampleCRM.Maui/Platforms/MacCatalyst/AppDelegate.cs b/src/SampleCRM.Maui/Platforms/MacCatalyst/AppDelegate.cs new file mode 100644 index 0000000..6cfd534 --- /dev/null +++ b/src/SampleCRM.Maui/Platforms/MacCatalyst/AppDelegate.cs @@ -0,0 +1,10 @@ +using Foundation; + +namespace SampleCRM.Maui +{ + [Register("AppDelegate")] + public class AppDelegate : MauiUIApplicationDelegate + { + protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp(); + } +} diff --git a/src/SampleCRM.Maui/Platforms/MacCatalyst/Entitlements.plist b/src/SampleCRM.Maui/Platforms/MacCatalyst/Entitlements.plist new file mode 100644 index 0000000..8e87c0c --- /dev/null +++ b/src/SampleCRM.Maui/Platforms/MacCatalyst/Entitlements.plist @@ -0,0 +1,14 @@ + + + + + + + com.apple.security.app-sandbox + + + com.apple.security.network.client + + + + diff --git a/src/SampleCRM.Maui/Platforms/MacCatalyst/Info.plist b/src/SampleCRM.Maui/Platforms/MacCatalyst/Info.plist new file mode 100644 index 0000000..937415d --- /dev/null +++ b/src/SampleCRM.Maui/Platforms/MacCatalyst/Info.plist @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + UIDeviceFamily + + 2 + + UIRequiredDeviceCapabilities + + arm64 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + XSAppIconAssets + Assets.xcassets/appicon.appiconset + + diff --git a/src/SampleCRM.Maui/Platforms/MacCatalyst/Program.cs b/src/SampleCRM.Maui/Platforms/MacCatalyst/Program.cs new file mode 100644 index 0000000..9b0267b --- /dev/null +++ b/src/SampleCRM.Maui/Platforms/MacCatalyst/Program.cs @@ -0,0 +1,16 @@ +using ObjCRuntime; +using UIKit; + +namespace SampleCRM.Maui +{ + public class Program + { + // This is the main entry point of the application. + static void Main(string[] args) + { + // if you want to use a different Application Delegate class from "AppDelegate" + // you can specify it here. + UIApplication.Main(args, null, typeof(AppDelegate)); + } + } +} \ No newline at end of file diff --git a/src/SampleCRM.Maui/Platforms/Tizen/Main.cs b/src/SampleCRM.Maui/Platforms/Tizen/Main.cs new file mode 100644 index 0000000..d942c00 --- /dev/null +++ b/src/SampleCRM.Maui/Platforms/Tizen/Main.cs @@ -0,0 +1,17 @@ +using Microsoft.Maui; +using Microsoft.Maui.Hosting; +using System; + +namespace SampleCRM.Maui +{ + internal class Program : MauiApplication + { + protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp(); + + static void Main(string[] args) + { + var app = new Program(); + app.Run(args); + } + } +} diff --git a/src/SampleCRM.Maui/Platforms/Tizen/tizen-manifest.xml b/src/SampleCRM.Maui/Platforms/Tizen/tizen-manifest.xml new file mode 100644 index 0000000..1defa68 --- /dev/null +++ b/src/SampleCRM.Maui/Platforms/Tizen/tizen-manifest.xml @@ -0,0 +1,15 @@ + + + + + + maui-appicon-placeholder + + + + + http://tizen.org/privilege/internet + + + + \ No newline at end of file diff --git a/src/SampleCRM.Maui/Platforms/Windows/App.xaml b/src/SampleCRM.Maui/Platforms/Windows/App.xaml new file mode 100644 index 0000000..919a8d5 --- /dev/null +++ b/src/SampleCRM.Maui/Platforms/Windows/App.xaml @@ -0,0 +1,8 @@ + + + diff --git a/src/SampleCRM.Maui/Platforms/Windows/App.xaml.cs b/src/SampleCRM.Maui/Platforms/Windows/App.xaml.cs new file mode 100644 index 0000000..7a5421e --- /dev/null +++ b/src/SampleCRM.Maui/Platforms/Windows/App.xaml.cs @@ -0,0 +1,25 @@ +using Microsoft.UI.Xaml; + +// To learn more about WinUI, the WinUI project structure, +// and more about our project templates, see: http://aka.ms/winui-project-info. + +namespace SampleCRM.Maui.WinUI +{ + /// + /// Provides application-specific behavior to supplement the default Application class. + /// + public partial class App : MauiWinUIApplication + { + /// + /// Initializes the singleton application object. This is the first line of authored code + /// executed, and as such is the logical equivalent of main() or WinMain(). + /// + public App() + { + this.InitializeComponent(); + } + + protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp(); + } + +} diff --git a/src/SampleCRM.Maui/Platforms/Windows/Package.appxmanifest b/src/SampleCRM.Maui/Platforms/Windows/Package.appxmanifest new file mode 100644 index 0000000..466d6e2 --- /dev/null +++ b/src/SampleCRM.Maui/Platforms/Windows/Package.appxmanifest @@ -0,0 +1,46 @@ + + + + + + + + + $placeholder$ + User Name + $placeholder$.png + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/SampleCRM.Maui/Platforms/Windows/app.manifest b/src/SampleCRM.Maui/Platforms/Windows/app.manifest new file mode 100644 index 0000000..81a681c --- /dev/null +++ b/src/SampleCRM.Maui/Platforms/Windows/app.manifest @@ -0,0 +1,15 @@ + + + + + + + + true/PM + PerMonitorV2, PerMonitor + + + diff --git a/src/SampleCRM.Maui/Platforms/iOS/AppDelegate.cs b/src/SampleCRM.Maui/Platforms/iOS/AppDelegate.cs new file mode 100644 index 0000000..6cfd534 --- /dev/null +++ b/src/SampleCRM.Maui/Platforms/iOS/AppDelegate.cs @@ -0,0 +1,10 @@ +using Foundation; + +namespace SampleCRM.Maui +{ + [Register("AppDelegate")] + public class AppDelegate : MauiUIApplicationDelegate + { + protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp(); + } +} diff --git a/src/SampleCRM.Maui/Platforms/iOS/Info.plist b/src/SampleCRM.Maui/Platforms/iOS/Info.plist new file mode 100644 index 0000000..8ae2c74 --- /dev/null +++ b/src/SampleCRM.Maui/Platforms/iOS/Info.plist @@ -0,0 +1,32 @@ + + + + + LSRequiresIPhoneOS + + UIDeviceFamily + + 1 + 2 + + UIRequiredDeviceCapabilities + + arm64 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + XSAppIconAssets + Assets.xcassets/appicon.appiconset + + diff --git a/src/SampleCRM.Maui/Platforms/iOS/Program.cs b/src/SampleCRM.Maui/Platforms/iOS/Program.cs new file mode 100644 index 0000000..086f6a0 --- /dev/null +++ b/src/SampleCRM.Maui/Platforms/iOS/Program.cs @@ -0,0 +1,16 @@ +using ObjCRuntime; +using UIKit; + +namespace SampleCRM.Maui +{ + public class Program + { + // This is the main entry point of the application. + static void Main(string[] args) + { + // if you want to use a different Application Delegate class from "AppDelegate" + // you can specify it here. + UIApplication.Main(args, null, typeof(AppDelegate)); + } + } +} diff --git a/src/SampleCRM.Maui/Properties/launchSettings.json b/src/SampleCRM.Maui/Properties/launchSettings.json new file mode 100644 index 0000000..c16206a --- /dev/null +++ b/src/SampleCRM.Maui/Properties/launchSettings.json @@ -0,0 +1,8 @@ +{ + "profiles": { + "Windows Machine": { + "commandName": "MsixPackage", + "nativeDebugging": false + } + } +} \ No newline at end of file diff --git a/src/SampleCRM.Maui/Resources/AppIcon/appicon.svg b/src/SampleCRM.Maui/Resources/AppIcon/appicon.svg new file mode 100644 index 0000000..5f04fcf --- /dev/null +++ b/src/SampleCRM.Maui/Resources/AppIcon/appicon.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SampleCRM.Maui/Resources/AppIcon/appiconfg.svg b/src/SampleCRM.Maui/Resources/AppIcon/appiconfg.svg new file mode 100644 index 0000000..62d66d7 --- /dev/null +++ b/src/SampleCRM.Maui/Resources/AppIcon/appiconfg.svg @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/src/SampleCRM.Maui/Resources/Fonts/OpenSans-Regular.ttf b/src/SampleCRM.Maui/Resources/Fonts/OpenSans-Regular.ttf new file mode 100644 index 0000000..73954df Binary files /dev/null and b/src/SampleCRM.Maui/Resources/Fonts/OpenSans-Regular.ttf differ diff --git a/src/SampleCRM.Maui/Resources/Images/dotnet_bot.svg b/src/SampleCRM.Maui/Resources/Images/dotnet_bot.svg new file mode 100644 index 0000000..51b1c33 --- /dev/null +++ b/src/SampleCRM.Maui/Resources/Images/dotnet_bot.svg @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/SampleCRM.Maui/Resources/Raw/AboutAssets.txt b/src/SampleCRM.Maui/Resources/Raw/AboutAssets.txt new file mode 100644 index 0000000..4b57b6a --- /dev/null +++ b/src/SampleCRM.Maui/Resources/Raw/AboutAssets.txt @@ -0,0 +1,15 @@ +Any raw assets you want to be deployed with your application can be placed in +this directory (and child directories). Deployment of the asset to your application +is automatically handled by the following `MauiAsset` Build Action within your `.csproj`. + + + +These files will be deployed with you package and will be accessible using Essentials: + + async Task LoadMauiAsset() + { + using var stream = await FileSystem.OpenAppPackageFileAsync("AboutAssets.txt"); + using var reader = new StreamReader(stream); + + var contents = reader.ReadToEnd(); + } diff --git a/src/SampleCRM.Maui/Resources/Splash/splash.svg b/src/SampleCRM.Maui/Resources/Splash/splash.svg new file mode 100644 index 0000000..62d66d7 --- /dev/null +++ b/src/SampleCRM.Maui/Resources/Splash/splash.svg @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/src/SampleCRM.Maui/SampleCRM.Maui.csproj b/src/SampleCRM.Maui/SampleCRM.Maui.csproj new file mode 100644 index 0000000..0c13223 --- /dev/null +++ b/src/SampleCRM.Maui/SampleCRM.Maui.csproj @@ -0,0 +1,71 @@ + + + + net8.0-android;net8.0-ios;net8.0-maccatalyst + $(TargetFrameworks);net8.0-windows10.0.19041.0 + + + + + + + Exe + SampleCRM.Maui + true + true + enable + false + enable + + + SampleCRM.Maui + + + com.companyname.samplecrm.maui + + + 1.0 + 1 + + 14.2 + 14.0 + 24.0 + 10.0.17763.0 + 10.0.17763.0 + 6.5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/SampleCRM.Maui/_Imports.razor b/src/SampleCRM.Maui/_Imports.razor new file mode 100644 index 0000000..21df0a7 --- /dev/null +++ b/src/SampleCRM.Maui/_Imports.razor @@ -0,0 +1,8 @@ +@using System.Net.Http +@using System.Net.Http.Json +@using Microsoft.AspNetCore.Components.Forms +@using Microsoft.AspNetCore.Components.Routing +@using Microsoft.AspNetCore.Components.Web +@using Microsoft.AspNetCore.Components.Web.Virtualization +@using Microsoft.JSInterop +@using SampleCRM.Maui