Browse Source

增加登录页面和后台首页

pull/11/head
shuangbaojun 4 years ago
parent
commit
799880f17b
  1. 18
      aspnet-core/CompanyName.ProjectName.sln
  2. 4
      aspnet-core/services/host/CompanyName.ProjectName.Blazor.WebAssembly/CompanyName.ProjectName.Blazor.WebAssembly.csproj
  3. 11
      aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/App.razor
  4. 8
      aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/Class1.cs
  5. 31
      aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme.csproj
  6. 3
      aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/Component1.razor
  7. 6
      aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/Component1.razor.css
  8. 52
      aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/Components/GlobalHeader/RightContent.razor
  9. 116
      aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/Components/GlobalHeader/RightContent.razor.cs
  10. 39
      aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/ExampleJsInterop.cs
  11. 53
      aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/Layouts/BasicLayout.razor
  12. 49
      aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/Layouts/UserLayout.razor
  13. 71
      aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/Layouts/UserLayout.razor.less
  14. 18
      aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/Models/ActivitiesType.cs
  15. 14
      aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/Models/ActivityGroup.cs
  16. 14
      aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/Models/ActivityProject.cs
  17. 14
      aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/Models/ActivityUser.cs
  18. 22
      aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/Models/ChartData.cs
  19. 14
      aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/Models/ChartDataItem.cs
  20. 40
      aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/Models/CurrentUser.cs
  21. 46
      aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/Models/ListItemDataType.cs
  22. 19
      aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/Models/LoginParamsType.cs
  23. 16
      aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/Models/NoticeItem.cs
  24. 20
      aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/Models/NoticeType.cs
  25. 15
      aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/Models/OfflineChartDataItem.cs
  26. 14
      aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/Models/OfflineDataItem.cs
  27. 9
      aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/Models/RadarDataItem.cs
  28. 11
      aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/Models/SearchDataItem.cs
  29. 59
      aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/Pages/Users/Login/Login.razor
  30. 36
      aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/Pages/Users/Login/Login.razor.cs
  31. 62
      aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/Pages/Users/Login/Login.razor.less
  32. 9
      aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/Pages/Welcome.razor
  33. 33
      aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/Program.cs
  34. 24
      aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/Services/AccountService.cs
  35. 46
      aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/Services/ChartService.cs
  36. 11
      aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/Services/IAccountService.cs
  37. 13
      aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/Services/IChartService.cs
  38. 17
      aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/Services/IProjectService.cs
  39. 14
      aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/Services/IUserService.cs
  40. 42
      aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/Services/ProjectService.cs
  41. 26
      aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/Services/UserService.cs
  42. 58
      aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/Styles/global.less
  43. 28
      aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/Utils/LongToDateTimeConverter.cs
  44. 10
      aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/_Imports.razor
  45. 18
      aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/wwwroot/appsettings.json
  46. 508
      aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/wwwroot/assets/403.svg
  47. 1
      aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/wwwroot/assets/logo.svg
  48. 1
      aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/wwwroot/css/site.css
  49. 100
      aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/wwwroot/data/activities.json
  50. 64
      aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/wwwroot/data/advanced.json
  51. 78
      aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/wwwroot/data/basic.json
  52. 50
      aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/wwwroot/data/current_user.json
  53. 799
      aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/wwwroot/data/fake_chart_data.json
  54. 762
      aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/wwwroot/data/fake_list.json
  55. 170
      aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/wwwroot/data/menu.json
  56. 62
      aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/wwwroot/data/notice.json
  57. 97
      aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/wwwroot/data/notices.json
  58. 209
      aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/wwwroot/index.html
  59. 5
      aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/wwwroot/pro_icon.svg

18
aspnet-core/CompanyName.ProjectName.sln

@ -1,7 +1,7 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.0.31410.414
# Visual Studio Version 16
VisualStudioVersion = 16.0.31624.102
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CompanyName.ProjectName.Domain", "services\src\CompanyName.ProjectName.Domain\CompanyName.ProjectName.Domain.csproj", "{554AD327-6DBA-4F8F-96F8-81CE7A0C863F}"
EndProject
@ -137,12 +137,12 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CompanyName.ProjectName.Ext
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CompanyName.ProjectName.CAP", "frameworks\CAP\src\CompanyName.ProjectName.CAP\CompanyName.ProjectName.CAP.csproj", "{3C3FF821-E43D-4D58-8B3C-1E97F4518EF7}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CompanyName.ProjectName.Blazor.Layout.AntDesignTheme", "services\src\CompanyName.ProjectName.Blazor.Layout.AntDesignTheme\CompanyName.ProjectName.Blazor.Layout.AntDesignTheme.csproj", "{3E63EC99-F592-42E9-B360-258146BA9C79}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CompanyName.ProjectName.Blazor.Server", "services\host\CompanyName.ProjectName.Blazor.Server\CompanyName.ProjectName.Blazor.Server.csproj", "{10BB7892-639F-4169-9A26-0CCCAE3AE254}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CompanyName.ProjectName.Blazor.WebAssembly", "services\host\CompanyName.ProjectName.Blazor.WebAssembly\CompanyName.ProjectName.Blazor.WebAssembly.csproj", "{CFDC2921-A191-406D-A6D6-6AA4898D9948}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CompanyName.ProjectName.Blazor.Layout.AntDesignTheme", "services\src\CompanyName.ProjectName.Blazor.Layout.AntDesignTheme\CompanyName.ProjectName.Blazor.Layout.AntDesignTheme.csproj", "{64B34A2A-F225-441D-AFD3-FC1C47216A1C}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@ -325,10 +325,6 @@ Global
{3C3FF821-E43D-4D58-8B3C-1E97F4518EF7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3C3FF821-E43D-4D58-8B3C-1E97F4518EF7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3C3FF821-E43D-4D58-8B3C-1E97F4518EF7}.Release|Any CPU.Build.0 = Release|Any CPU
{3E63EC99-F592-42E9-B360-258146BA9C79}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3E63EC99-F592-42E9-B360-258146BA9C79}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3E63EC99-F592-42E9-B360-258146BA9C79}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3E63EC99-F592-42E9-B360-258146BA9C79}.Release|Any CPU.Build.0 = Release|Any CPU
{10BB7892-639F-4169-9A26-0CCCAE3AE254}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{10BB7892-639F-4169-9A26-0CCCAE3AE254}.Debug|Any CPU.Build.0 = Debug|Any CPU
{10BB7892-639F-4169-9A26-0CCCAE3AE254}.Release|Any CPU.ActiveCfg = Release|Any CPU
@ -337,6 +333,10 @@ Global
{CFDC2921-A191-406D-A6D6-6AA4898D9948}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CFDC2921-A191-406D-A6D6-6AA4898D9948}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CFDC2921-A191-406D-A6D6-6AA4898D9948}.Release|Any CPU.Build.0 = Release|Any CPU
{64B34A2A-F225-441D-AFD3-FC1C47216A1C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{64B34A2A-F225-441D-AFD3-FC1C47216A1C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{64B34A2A-F225-441D-AFD3-FC1C47216A1C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{64B34A2A-F225-441D-AFD3-FC1C47216A1C}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@ -400,9 +400,9 @@ Global
{FC30B17B-F671-4E55-90C6-9F37E40B483D} = {CA9AC87F-097E-4F15-8393-4BC07735A5B0}
{4C65690E-2C17-46A1-BB35-A51BAB2EA3B7} = {C4AC9352-C9F5-4096-8D73-13638232CFB9}
{3C3FF821-E43D-4D58-8B3C-1E97F4518EF7} = {11ED8435-B5AE-4BF3-9D4B-51FA1E4A18A6}
{3E63EC99-F592-42E9-B360-258146BA9C79} = {CA9AC87F-097E-4F15-8393-4BC07735A5B0}
{10BB7892-639F-4169-9A26-0CCCAE3AE254} = {8C1B8C6C-C518-4290-B070-622CCA6004DA}
{CFDC2921-A191-406D-A6D6-6AA4898D9948} = {8C1B8C6C-C518-4290-B070-622CCA6004DA}
{64B34A2A-F225-441D-AFD3-FC1C47216A1C} = {CA9AC87F-097E-4F15-8393-4BC07735A5B0}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {28315BFD-90E7-4E14-A2EA-F3D23AF4126F}

4
aspnet-core/services/host/CompanyName.ProjectName.Blazor.WebAssembly/CompanyName.ProjectName.Blazor.WebAssembly.csproj

@ -10,8 +10,4 @@
<PackageReference Include="System.Net.Http.Json" Version="5.0.0" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\src\CompanyName.ProjectName.Blazor.Layout.AntDesignTheme\CompanyName.ProjectName.Blazor.Layout.AntDesignTheme.csproj" />
</ItemGroup>
</Project>

11
aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/App.razor

@ -0,0 +1,11 @@
<Router AppAssembly="@typeof(Program).Assembly">
<Found Context="routeData">
<RouteView RouteData="@routeData" DefaultLayout="@typeof(BasicLayout)" />
</Found>
<NotFound>
<LayoutView Layout="@typeof(BasicLayout)">
<p>Sorry, there's nothing at this address.</p>
</LayoutView>
</NotFound>
</Router>
<AntContainer />

8
aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/Class1.cs

@ -1,8 +0,0 @@
using System;
namespace CompanyName.ProjectName.Blazor.Layout.AntDesignTheme
{
public class Class1
{
}
}

31
aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme.csproj

@ -1,7 +1,30 @@
<Project Sdk="Microsoft.NET.Sdk">
<Project Sdk="Microsoft.NET.Sdk.Razor">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
</PropertyGroup>
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<None Include="wwwroot\assets\403.svg" />
<None Include="wwwroot\assets\logo.svg" />
</ItemGroup>
<ItemGroup>
<SupportedPlatform Include="browser" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Components.Web" Version="5.0.12" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="AntDesign.Charts" Version="0.2.1" />
<PackageReference Include="AntDesign.ProLayout" Version="0.1.0" />
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="5.0.0" />
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="5.0.0" PrivateAssets="all" />
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="5.0.0" />
<PackageReference Include="System.Net.Http.Json" Version="5.0.0" />
</ItemGroup>
</Project>

3
aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/Component1.razor

@ -0,0 +1,3 @@
<div class="my-component">
This Blazor component is defined in the <strong>CompanyName.ProjectName.Blazor.Layout.AntDesignTheme</strong> package.
</div>

6
aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/Component1.razor.css

@ -0,0 +1,6 @@
.my-component {
border: 2px dashed red;
padding: 1em;
margin: 1em 0;
background-image: url('background.png');
}

52
aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/Components/GlobalHeader/RightContent.razor

@ -0,0 +1,52 @@
@namespace CompanyName.ProjectName.Blazor.Layout.AntDesignTheme.Components.GlobalHeader
@inherits AntDomComponentBase
<Space Class="@ClassMapper.Class" Size="@("24")">
<SpaceItem>
<HeaderSearch Class="action search"
Placeholder="Site Search"
DefaultValue="umi ui"
Options="DefaultOptions" />
</SpaceItem>
<SpaceItem>
<AntDesign.Tooltip Title="@("Help")" Placement="@PlacementType.Bottom">
<Unbound>
<span @ref="@context.Current" class="action">
<Icon Type="question-circle" Theme="outline" />
</span>
</Unbound>
</AntDesign.Tooltip>
</SpaceItem>
<SpaceItem>
<NoticeIcon ClearText="Empty"
ViewMoreText="see more"
Count="_count"
OnClear="HandleClear"
OnViewMore="HandleViewMore">
<NoticeList TabKey="notification"
Title="Notifications"
EmptyText="You have viewed all notifications"
ShowViewMore
Data="_notifications" />
<NoticeList TabKey="message"
Title="Messages"
EmptyText="You have read all messages"
ShowViewMore
Data="_messages" />
<NoticeList TabKey="event"
Title="Upcoming"
EmptyText="You have completed all to do"
ShowViewMore
Data="_events" />
</NoticeIcon>
</SpaceItem>
<SpaceItem>
<AvatarDropdown Name="@_currentUser.Name"
Avatar="@_currentUser.Avatar"
MenuItems="@AvatarMenuItems"
OnItemSelected="HandleSelectUser" />
</SpaceItem>
<SpaceItem>
<SelectLang OnItemSelected="HandleSelectLang" />
</SpaceItem>
</Space>

116
aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/Components/GlobalHeader/RightContent.razor.cs

@ -0,0 +1,116 @@
using AntDesign;
using AntDesign.ProLayout;
using CompanyName.ProjectName.Blazor.Layout.AntDesignTheme.Models;
using CompanyName.ProjectName.Blazor.Layout.AntDesignTheme.Services;
using Microsoft.AspNetCore.Components;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CompanyName.ProjectName.Blazor.Layout.AntDesignTheme.Components.GlobalHeader
{
public partial class RightContent
{
private CurrentUser _currentUser = new CurrentUser();
private NoticeIconData[] _notifications = { };
private NoticeIconData[] _messages = { };
private NoticeIconData[] _events = { };
private int _count = 0;
private List<AutoCompleteDataItem<string>> DefaultOptions { get; set; } = new List<AutoCompleteDataItem<string>>
{
new AutoCompleteDataItem<string>
{
Label = "umi ui",
Value = "umi ui"
},
new AutoCompleteDataItem<string>
{
Label = "Pro Table",
Value = "Pro Table"
},
new AutoCompleteDataItem<string>
{
Label = "Pro Layout",
Value = "Pro Layout"
}
};
public AvatarMenuItem[] AvatarMenuItems { get; set; } = new AvatarMenuItem[]
{
new() { Key = "center", IconType = "user", Option = "个人中心"},
new() { Key = "setting", IconType = "setting", Option = "个人设置"},
new() { IsDivider = true },
new() { Key = "logout", IconType = "logout", Option = "退出登录"}
};
[Inject] protected NavigationManager NavigationManager { get; set; }
[Inject] protected IUserService UserService { get; set; }
[Inject] protected IProjectService ProjectService { get; set; }
[Inject] protected MessageService MessageService { get; set; }
protected override async Task OnInitializedAsync()
{
await base.OnInitializedAsync();
SetClassMap();
_currentUser = await UserService.GetCurrentUserAsync();
var notices = await ProjectService.GetNoticesAsync();
_notifications = notices.Where(x => x.Type == "notification").Cast<NoticeIconData>().ToArray();
_messages = notices.Where(x => x.Type == "message").Cast<NoticeIconData>().ToArray();
_events = notices.Where(x => x.Type == "event").Cast<NoticeIconData>().ToArray();
_count = notices.Length;
}
protected void SetClassMap()
{
ClassMapper
.Clear()
.Add("right");
}
public void HandleSelectUser(MenuItem item)
{
switch (item.Key)
{
case "center":
NavigationManager.NavigateTo("/account/center");
break;
case "setting":
NavigationManager.NavigateTo("/account/settings");
break;
case "logout":
NavigationManager.NavigateTo("/user/login");
break;
}
}
public void HandleSelectLang(MenuItem item)
{
}
public async Task HandleClear(string key)
{
switch (key)
{
case "notification":
_notifications = new NoticeIconData[] { };
break;
case "message":
_messages = new NoticeIconData[] { };
break;
case "event":
_events = new NoticeIconData[] { };
break;
}
await MessageService.Success($"清空了{key}");
}
public async Task HandleViewMore(string key)
{
await MessageService.Info("Click on view more");
}
}
}

39
aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/ExampleJsInterop.cs

@ -0,0 +1,39 @@
using Microsoft.JSInterop;
using System;
using System.Threading.Tasks;
namespace CompanyName.ProjectName.Blazor.Layout.AntDesignTheme
{
// This class provides an example of how JavaScript functionality can be wrapped
// in a .NET class for easy consumption. The associated JavaScript module is
// loaded on demand when first needed.
//
// This class can be registered as scoped DI service and then injected into Blazor
// components for use.
public class ExampleJsInterop : IAsyncDisposable
{
private readonly Lazy<Task<IJSObjectReference>> moduleTask;
public ExampleJsInterop(IJSRuntime jsRuntime)
{
moduleTask = new(() => jsRuntime.InvokeAsync<IJSObjectReference>(
"import", "./_content/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/exampleJsInterop.js").AsTask());
}
public async ValueTask<string> Prompt(string message)
{
var module = await moduleTask.Value;
return await module.InvokeAsync<string>("showPrompt", message);
}
public async ValueTask DisposeAsync()
{
if (moduleTask.IsValueCreated)
{
var module = await moduleTask.Value;
await module.DisposeAsync();
}
}
}
}

53
aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/Layouts/BasicLayout.razor

@ -0,0 +1,53 @@
@namespace CompanyName.ProjectName.Blazor.Layout.AntDesignTheme
@inherits LayoutComponentBase
<AntDesign.ProLayout.BasicLayout Logo="@("https://gw.alipayobjects.com/zos/rmsportal/KDpgvguMpGfqaHPjicRK.svg")"
MenuData="_menuData">
<RightContentRender>
<ant_design_samples.Components.RightContent />
</RightContentRender>
<ChildContent>
@Body
</ChildContent>
<FooterRender>
<FooterView Copyright="2021 Ant Design Blazor" Links="Links"></FooterView>
</FooterRender>
</AntDesign.ProLayout.BasicLayout>
<SettingDrawer />
@code
{private MenuDataItem[] _menuData = { };
[Inject] public HttpClient HttpClient { get; set; }
protected override async Task OnInitializedAsync()
{
await base.OnInitializedAsync();
_menuData = await HttpClient.GetFromJsonAsync<MenuDataItem[]>("data/menu.json");
}
public LinkItem[] Links { get; set; } =
{
new LinkItem
{
Key = "Ant Design Blazor",
Title = "Ant Design Blazor",
Href = "https://antblazor.com",
BlankTarget = true,
},
new LinkItem
{
Key = "github",
Title = (RenderFragment)(@<Icon Type="github" />),
Href = "https://github.com/ant-design-blazor/ant-design-pro-blazor",
BlankTarget = true,
},
new LinkItem
{
Key = "Blazor",
Title = "Blazor",
Href = "https://dotnet.microsoft.com/apps/aspnet/web-apps/blazor?WT.mc_id=DT-MVP-5003987",
BlankTarget = true,
}
};
}

49
aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/Layouts/UserLayout.razor

@ -0,0 +1,49 @@
@namespace CompanyName.ProjectName.Blazor.Layout.AntDesignTheme
@using OneOf
@inherits LayoutComponentBase
<div class="container__b__0">
<div class="lang">
<!--todo: selectLang-->
</div>
<div class="content">
<div class="top">
<div class="header">
<a>
<img alt="logo" class="logo" src="assets/logo.svg" />
<span class="title">Ant Design</span>
</a>
</div>
<div class="desc">Ant Design Blazor</div>
</div>
@Body
</div>
<FooterView Copyright="2021 Ant Design Blazor" Links="Links"></FooterView>
</div>
@code
{public LinkItem[] Links { get; set; } =
{
new LinkItem
{
Key = "Ant Design Blazor",
Title = "Ant Design Blazor",
Href = "https://antblazor.com",
BlankTarget = true,
},
new LinkItem
{
Key = "github",
Title = (RenderFragment)(@<Icon Type="github" />),
Href = "https://github.com/ant-design-blazor/ant-design-pro-blazor",
BlankTarget = true,
},
new LinkItem
{
Key = "Blazor",
Title = "Blazor",
Href = "https://dotnet.microsoft.com/apps/aspnet/web-apps/blazor?WT.mc_id=DT-MVP-5003987",
BlankTarget = true,
}
};
}

71
aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/Layouts/UserLayout.razor.less

@ -0,0 +1,71 @@
@import '~antd/es/style/themes/default.less';
.container__b__0 {
display: flex;
flex-direction: column;
height: 100vh;
overflow: auto;
background: @layout-body-background;
.lang {
width: 100%;
height: 40px;
line-height: 44px;
text-align: right;
:global(.ant-dropdown-trigger) {
margin-right: 24px;
}
}
.content {
flex: 1;
padding: 32px 0;
}
.top {
text-align: center;
}
.header {
height: 44px;
line-height: 44px;
a {
text-decoration: none;
}
}
.logo {
height: 44px;
margin-right: 16px;
vertical-align: top;
}
.title {
position: relative;
top: 2px;
color: @heading-color;
font-weight: 600;
font-size: 33px;
font-family: Avenir, 'Helvetica Neue', Arial, Helvetica, sans-serif;
}
.desc {
margin-top: 12px;
margin-bottom: 40px;
color: @text-color-secondary;
font-size: @font-size-base;
}
}
@media (min-width: @screen-md-min) {
.container__b__0 {
background-image: url('https://gw.alipayobjects.com/zos/rmsportal/TVYTbAXWheQpRcWDaDMu.svg');
background-repeat: no-repeat;
background-position: center 110px;
background-size: 100%;
.content {
padding: 32px 0 24px;
}
}
}

18
aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/Models/ActivitiesType.cs

@ -0,0 +1,18 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CompanyName.ProjectName.Blazor.Layout.AntDesignTheme.Models
{
public class ActivitiesType
{
public string Id { get; set; }
public DateTime UpdatedAt { get; set; }
public ActivityUser User { get; set; }
public ActivityGroup Group { get; set; }
public ActivityProject Project { get; set; }
public string Template { get; set; }
}
}

14
aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/Models/ActivityGroup.cs

@ -0,0 +1,14 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CompanyName.ProjectName.Blazor.Layout.AntDesignTheme.Models
{
public class ActivityGroup
{
public string Name { get; set; }
public string Link { get; set; }
}
}

14
aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/Models/ActivityProject.cs

@ -0,0 +1,14 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CompanyName.ProjectName.Blazor.Layout.AntDesignTheme.Models
{
public class ActivityProject
{
public string Name { get; set; }
public string Link { get; set; }
}
}

14
aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/Models/ActivityUser.cs

@ -0,0 +1,14 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CompanyName.ProjectName.Blazor.Layout.AntDesignTheme.Models
{
public class ActivityUser
{
public string Name { get; set; }
public string Avatar { get; set; }
}
}

22
aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/Models/ChartData.cs

@ -0,0 +1,22 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CompanyName.ProjectName.Blazor.Layout.AntDesignTheme.Models
{
public class ChartData
{
public ChartDataItem[] VisitData { get; set; }
public ChartDataItem[] VisitData2 { get; set; }
public ChartDataItem[] SalesData { get; set; }
public SearchDataItem[] SearchData { get; set; }
public OfflineDataItem[] OfflineData { get; set; }
public OfflineChartDataItem[] OfflineChartData { get; set; }
public ChartDataItem[] SalesTypeData { get; set; }
public ChartDataItem[] SalesTypeDataOnline { get; set; }
public ChartDataItem[] SalesTypeDataOffline { get; set; }
public RadarDataItem[] RadarData { get; set; }
}
}

14
aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/Models/ChartDataItem.cs

@ -0,0 +1,14 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CompanyName.ProjectName.Blazor.Layout.AntDesignTheme.Models
{
public class ChartDataItem
{
public string X { get; set; }
public int Y { get; set; }
}
}

40
aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/Models/CurrentUser.cs

@ -0,0 +1,40 @@
namespace CompanyName.ProjectName.Blazor.Layout.AntDesignTheme.Models
{
public class TagType
{
public string Key { get; set; }
public string Label { get; set; }
}
public class GeographicType
{
public TagType Province { get; set; }
public TagType City { get; set; }
}
public class CurrentUser
{
public string Name { get; set; }
public string Avatar { get; set; }
public string Userid { get; set; }
public NoticeType[] Notice { get; set; } = { };
public string Email { get; set; }
public string Signature { get; set; }
public string Title { get; set; }
public string Group { get; set; }
public TagType[] Tags { get; set; } = { };
public int NotifyCount { get; set; }
public int UnreadCount { get; set; }
public string Country { get; set; }
public GeographicType Geographic { get; set; }
public string Address { get; set; }
public string Phone { get; set; }
}
public class UserLiteItem
{
public string Avater { get; set; }
public string Title { get; set; }
public string Description { get; set; }
}
}

46
aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/Models/ListItemDataType.cs

@ -0,0 +1,46 @@
using CompanyName.ProjectName.Blazor.Layout.AntDesignTheme.Utils;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.Json.Serialization;
using System.Threading.Tasks;
namespace CompanyName.ProjectName.Blazor.Layout.AntDesignTheme.Models
{
public class Member
{
public string Avatar { get; set; }
public string Name { get; set; }
public string Id { get; set; }
}
public class ListItemDataType
{
public string Id { get; set; }
public string Owner { get; set; }
public string Title { get; set; }
public string Avatar { get; set; }
public string Cover { get; set; }
public string Status { get; set; }
public int Percent { get; set; }
public string Logo { get; set; }
public string Href { get; set; }
public string Body { get; set; }
public string SubDescription { get; set; }
public string Description { get; set; }
public int ActiveUser { get; set; }
public int NewUser { get; set; }
public int Star { get; set; }
public int Like { get; set; }
public int Message { get; set; }
public string Content { get; set; }
public Member[] Members { get; set; }
[JsonConverter(typeof(LongToDateTimeConverter))]
public DateTime UpdatedAt { get; set; }
[JsonConverter(typeof(LongToDateTimeConverter))]
public DateTime CreatedAt { get; set; }
}
}

19
aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/Models/LoginParamsType.cs

@ -0,0 +1,19 @@
using System.ComponentModel.DataAnnotations;
namespace CompanyName.ProjectName.Blazor.Layout.AntDesignTheme.Models
{
public class LoginParamsType
{
[Required] public string UserName { get; set; }
[Required] public string Password { get; set; }
public string Mobile { get; set; }
public string Captcha { get; set; }
public string LoginType { get; set; }
public bool AutoLogin { get; set; }
}
}

16
aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/Models/NoticeItem.cs

@ -0,0 +1,16 @@
using AntDesign.ProLayout;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CompanyName.ProjectName.Blazor.Layout.AntDesignTheme.Models
{
public class NoticeItem : NoticeIconData
{
public string Id { get; set; }
public string Type { get; set; }
public string Status { get; set; }
}
}

20
aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/Models/NoticeType.cs

@ -0,0 +1,20 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CompanyName.ProjectName.Blazor.Layout.AntDesignTheme.Models
{
public class NoticeType
{
public string Id { get; set; }
public string Title { get; set; }
public string Logo { get; set; }
public string Description { get; set; }
public string UpdatedAt { get; set; }
public string Member { get; set; }
public string Href { get; set; }
public string MemberLink { get; set; }
}
}

15
aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/Models/OfflineChartDataItem.cs

@ -0,0 +1,15 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CompanyName.ProjectName.Blazor.Layout.AntDesignTheme.Models
{
public class OfflineChartDataItem
{
public long X { get; set; }
public int Y1 { get; set; }
public int Y2 { get; set; }
}
}

14
aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/Models/OfflineDataItem.cs

@ -0,0 +1,14 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CompanyName.ProjectName.Blazor.Layout.AntDesignTheme.Models
{
public class OfflineDataItem
{
public string Name { get; set; }
public float Cvr { get; set; }
}
}

9
aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/Models/RadarDataItem.cs

@ -0,0 +1,9 @@
namespace CompanyName.ProjectName.Blazor.Layout.AntDesignTheme.Models
{
public class RadarDataItem
{
public string Name { get; set; }
public string Label { get; set; }
public int Value { get; set; }
}
}

11
aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/Models/SearchDataItem.cs

@ -0,0 +1,11 @@
namespace CompanyName.ProjectName.Blazor.Layout.AntDesignTheme.Models
{
public class SearchDataItem
{
public int Index { get; set; }
public string Keywod { get; set; }
public int Count { get; set; }
public int Range { get; set; }
public int Status { get; set; }
}
}

59
aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/Pages/Users/Login/Login.razor

@ -0,0 +1,59 @@
@namespace CompanyName.ProjectName.Blazor.Layout.AntDesignTheme.Pages.Users.Login
@layout UserLayout
@page "/user/login"
<div class="main__b__0">
<div class="login">
<Form Model="@_model" OnFinish="HandleSubmit">
<Tabs ActiveKey="@context.LoginType">
<TabPane Key="1" Tab="Account Login">
<FormItem>
<AntDesign.Input Placeholder="Username: admin or user" Size="large" @bind-Value="@context.UserName">
<Prefix><Icon Type="user" /></Prefix>
</AntDesign.Input>
</FormItem>
<FormItem>
<AntDesign.Input Placeholder="Password: ant.design" Size="large" @bind-Value="@context.Password" Type="password">
<Prefix><Icon Type="lock" /></Prefix>
</AntDesign.Input>
</FormItem>
</TabPane>
<TabPane Key="2" Tab="Mobile Login">
<FormItem>
<AntDesign.Input Placeholder="Phone Number" Size="large" @bind-Value="@context.Mobile">
<Prefix><Icon Type="mobile" /></Prefix>
</AntDesign.Input>
</FormItem>
<FormItem>
<Row Gutter="8">
<AntDesign.Col Span="16">
<AntDesign.Input Placeholder="Verification code" Size="large" @bind-Value="@context.Captcha">
<Prefix><Icon Type="mail" /></Prefix>
</AntDesign.Input>
</AntDesign.Col>
<AntDesign.Col Span="8">
<Button Size="large" Block OnClick="GetCaptcha">Verify</Button>
</AntDesign.Col>
</Row>
</FormItem>
</TabPane>
</Tabs>
<div>
<Checkbox Checked="@context.AutoLogin">
Auto Login
</Checkbox>
<a style="float: right;">
Forgot Password
</a>
</div>
<Button Type="primary" HtmlType="submit" Class="submit" Size="large" Block>Log in </Button>
<div class="other">
Other Login Methods
<Icon Type="alipay-circle" />
<Icon Type="taobao-circle" />
<Icon Type="weibo-circle" />
<a class="register" href="/user/register">Register Account</a>
</div>
</Form>
</div>
</div>

36
aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/Pages/Users/Login/Login.razor.cs

@ -0,0 +1,36 @@
using AntDesign;
using CompanyName.ProjectName.Blazor.Layout.AntDesignTheme.Models;
using CompanyName.ProjectName.Blazor.Layout.AntDesignTheme.Services;
using Microsoft.AspNetCore.Components;
using System.Threading.Tasks;
namespace CompanyName.ProjectName.Blazor.Layout.AntDesignTheme.Pages.Users.Login
{
public partial class Login
{
private readonly LoginParamsType _model = new LoginParamsType();
[Inject] public NavigationManager NavigationManager { get; set; }
[Inject] public IAccountService AccountService { get; set; }
[Inject] public MessageService Message { get; set; }
public void HandleSubmit()
{
if (_model.UserName == "admin" && _model.Password == "ant.design")
{
NavigationManager.NavigateTo("/");
return;
}
if (_model.UserName == "user" && _model.Password == "ant.design") NavigationManager.NavigateTo("/");
}
public async Task GetCaptcha()
{
var captcha = await AccountService.GetCaptchaAsync(_model.Mobile);
await Message.Success($"Verification code validated successfully! The verification code is: {captcha}");
}
}
}

62
aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/Pages/Users/Login/Login.razor.less

@ -0,0 +1,62 @@
@import '~antd/es/style/themes/default.less';
/*此处为了解决样式冲突, 在pro样式的基础上包了一层main, 原始样式从.login开始*/
.main__b__0 {
width: 368px;
margin: 0 auto;
@media screen and (max-width: @screen-sm) {
width: 95%;
}
.login {
:global {
.ant-tabs .ant-tabs-bar {
margin-bottom: 24px;
text-align: center;
border-bottom: 0;
}
}
.getCaptcha {
display: block;
width: 100%;
}
.icon {
color: @primary-color;
}
.other {
margin-top: 24px;
line-height: 22px;
text-align: left;
.icon {
margin-left: 16px;
color: @text-color-secondary;
font-size: 24px;
vertical-align: middle;
cursor: pointer;
transition: color 0.3s;
&:hover {
color: @primary-color;
}
}
.register {
float: right;
}
}
.prefixIcon {
color: @disabled-color;
font-size: @font-size-base;
}
.submit {
width: 100%;
margin-top: 24px;
}
}
}

9
aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/Pages/Welcome.razor

@ -0,0 +1,9 @@
@page "/dashboard"
<PageContainer Title="Welcome">
<Card>
TODO
</Card>
</PageContainer>

33
aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/Program.cs

@ -0,0 +1,33 @@
using AntDesign.ProLayout;
using CompanyName.ProjectName.Blazor.Layout.AntDesignTheme.Services;
using Microsoft.AspNetCore.Components.WebAssembly.Hosting;
using Microsoft.Extensions.DependencyInjection;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
namespace CompanyName.ProjectName.Blazor.Layout.AntDesignTheme
{
public class Program
{
public static async Task Main(string[] args)
{
var builder = WebAssemblyHostBuilder.CreateDefault(args);
builder.RootComponents.Add<App>("#app");
builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) });
builder.Services.AddAntDesign();
builder.Services.Configure<ProSettings>(builder.Configuration.GetSection("ProSettings"));
builder.Services.AddScoped<IChartService, ChartService>();
builder.Services.AddScoped<IProjectService, ProjectService>();
builder.Services.AddScoped<IUserService, UserService>();
builder.Services.AddScoped<IAccountService, AccountService>();
//builder.Services.AddScoped<IProfileService, ProfileService>();
await builder.Build().RunAsync();
}
}
}

24
aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/Services/AccountService.cs

@ -0,0 +1,24 @@
using CompanyName.ProjectName.Blazor.Layout.AntDesignTheme.Models;
using System;
using System.Threading.Tasks;
namespace CompanyName.ProjectName.Blazor.Layout.AntDesignTheme.Services
{
public class AccountService : IAccountService
{
private readonly Random _random = new Random();
public Task LoginAsync(LoginParamsType model)
{
// todo: login logic
return Task.CompletedTask;
}
public Task<string> GetCaptchaAsync(string modile)
{
var captcha = _random.Next(0, 9999).ToString().PadLeft(4, '0');
return Task.FromResult(captcha);
}
}
}

46
aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/Services/ChartService.cs

@ -0,0 +1,46 @@
using CompanyName.ProjectName.Blazor.Layout.AntDesignTheme.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Net.Http.Json;
using System.Text;
using System.Threading.Tasks;
namespace CompanyName.ProjectName.Blazor.Layout.AntDesignTheme.Services
{
public class ChartService : IChartService
{
private readonly HttpClient _httpClient;
public ChartService(HttpClient httpClient)
{
_httpClient = httpClient;
}
public async Task<ChartDataItem[]> GetVisitDataAsync()
{
return (await GetChartDataAsync()).VisitData;
}
public async Task<ChartDataItem[]> GetVisitData2Async()
{
return (await GetChartDataAsync()).VisitData2;
}
public async Task<ChartDataItem[]> GetSalesDataAsync()
{
return (await GetChartDataAsync()).SalesData;
}
public async Task<RadarDataItem[]> GetRadarDataAsync()
{
return (await GetChartDataAsync()).RadarData;
}
private async Task<ChartData> GetChartDataAsync()
{
return await _httpClient.GetFromJsonAsync<ChartData>("data/fake_chart_data.json");
}
}
}

11
aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/Services/IAccountService.cs

@ -0,0 +1,11 @@
using CompanyName.ProjectName.Blazor.Layout.AntDesignTheme.Models;
using System.Threading.Tasks;
namespace CompanyName.ProjectName.Blazor.Layout.AntDesignTheme.Services
{
public interface IAccountService
{
Task LoginAsync(LoginParamsType model);
Task<string> GetCaptchaAsync(string modile);
}
}

13
aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/Services/IChartService.cs

@ -0,0 +1,13 @@
using CompanyName.ProjectName.Blazor.Layout.AntDesignTheme.Models;
using System.Threading.Tasks;
namespace CompanyName.ProjectName.Blazor.Layout.AntDesignTheme.Services
{
public interface IChartService
{
Task<ChartDataItem[]> GetVisitDataAsync();
Task<ChartDataItem[]> GetVisitData2Async();
Task<ChartDataItem[]> GetSalesDataAsync();
Task<RadarDataItem[]> GetRadarDataAsync();
}
}

17
aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/Services/IProjectService.cs

@ -0,0 +1,17 @@
using CompanyName.ProjectName.Blazor.Layout.AntDesignTheme.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CompanyName.ProjectName.Blazor.Layout.AntDesignTheme.Services
{
public interface IProjectService
{
Task<NoticeType[]> GetProjectNoticeAsync();
Task<ActivitiesType[]> GetActivitiesAsync();
Task<ListItemDataType[]> GetFakeListAsync(int count = 0);
Task<NoticeItem[]> GetNoticesAsync();
}
}

14
aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/Services/IUserService.cs

@ -0,0 +1,14 @@
using CompanyName.ProjectName.Blazor.Layout.AntDesignTheme.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CompanyName.ProjectName.Blazor.Layout.AntDesignTheme.Services
{
public interface IUserService
{
Task<CurrentUser> GetCurrentUserAsync();
}
}

42
aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/Services/ProjectService.cs

@ -0,0 +1,42 @@
using CompanyName.ProjectName.Blazor.Layout.AntDesignTheme.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Net.Http.Json;
using System.Text;
using System.Threading.Tasks;
namespace CompanyName.ProjectName.Blazor.Layout.AntDesignTheme.Services
{
public class ProjectService : IProjectService
{
private readonly HttpClient _httpClient;
public ProjectService(HttpClient httpClient)
{
_httpClient = httpClient;
}
public async Task<NoticeType[]> GetProjectNoticeAsync()
{
return await _httpClient.GetFromJsonAsync<NoticeType[]>("data/notice.json");
}
public async Task<NoticeItem[]> GetNoticesAsync()
{
return await _httpClient.GetFromJsonAsync<NoticeItem[]>("data/notices.json");
}
public async Task<ActivitiesType[]> GetActivitiesAsync()
{
return await _httpClient.GetFromJsonAsync<ActivitiesType[]>("data/activities.json");
}
public async Task<ListItemDataType[]> GetFakeListAsync(int count = 0)
{
var data = await _httpClient.GetFromJsonAsync<ListItemDataType[]>("data/fake_list.json");
return count > 0 ? data.Take(count).ToArray() : data;
}
}
}

26
aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/Services/UserService.cs

@ -0,0 +1,26 @@
using CompanyName.ProjectName.Blazor.Layout.AntDesignTheme.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Net.Http.Json;
using System.Text;
using System.Threading.Tasks;
namespace CompanyName.ProjectName.Blazor.Layout.AntDesignTheme.Services
{
public class UserService : IUserService
{
private readonly HttpClient _httpClient;
public UserService(HttpClient httpClient)
{
_httpClient = httpClient;
}
public async Task<CurrentUser> GetCurrentUserAsync()
{
return await _httpClient.GetFromJsonAsync<CurrentUser>("data/current_user.json");
}
}
}

58
aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/Styles/global.less

@ -0,0 +1,58 @@
@import '~antd/es/style/themes/default.less';
html,
body,
#root,
#app,
app {
height: 100%;
}
.colorWeak {
filter: invert(80%);
}
.ant-layout {
min-height: 100vh;
}
canvas {
display: block;
}
body {
text-rendering: optimizeLegibility;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
ul,
ol {
list-style: none;
}
@media (max-width: @screen-xs) {
.ant-table {
width: 100%;
overflow-x: auto;
&-thead > tr,
&-tbody > tr {
> th,
> td {
white-space: pre;
> span {
display: block;
}
}
}
}
}
// 兼容IE11
@media screen and(-ms-high-contrast: active), (-ms-high-contrast: none) {
body .ant-design-pro > .ant-layout {
min-height: 100vh;
}
}

28
aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/Utils/LongToDateTimeConverter.cs

@ -0,0 +1,28 @@
using System;
using System.Buffers.Text;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.Json;
using System.Text.Json.Serialization;
using System.Threading.Tasks;
namespace CompanyName.ProjectName.Blazor.Layout.AntDesignTheme.Utils
{
public class LongToDateTimeConverter : JsonConverter<DateTime>
{
public override DateTime Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
{
if (Utf8Parser.TryParse(reader.ValueSpan, out long value, out _))
return DateTime.UnixEpoch.AddMilliseconds(value);
throw new FormatException();
}
public override void Write(Utf8JsonWriter writer, DateTime value, JsonSerializerOptions options)
{
writer.WriteStringValue(
JsonEncodedText.Encode(((long)(value - DateTime.UnixEpoch).TotalMilliseconds).ToString()));
}
}
}

10
aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/_Imports.razor

@ -0,0 +1,10 @@
@using AntDesign
@using AntDesign.Charts
@using AntDesign.ProLayout
@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.WebAssembly.Http
@using Microsoft.JSInterop

18
aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/wwwroot/appsettings.json

@ -0,0 +1,18 @@
{
"ProSettings": {
"NavTheme": "dark",
"Layout": "side",
"ContentWidth": "Fluid",
"FixedHeader": false,
"FixSiderbar": true,
"Title": "Ant Design Pro",
"PrimaryColor": "daybreak",
"ColorWeak": false,
"SplitMenus": false,
"HeaderRender": true,
"FooterRender": true,
"MenuRender": true,
"MenuHeaderRender": true,
"HeaderHeight": 48
}
}

508
aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/wwwroot/assets/403.svg

@ -0,0 +1,508 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="227px" height="269px" viewBox="0 0 227 269" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 46.2 (44496) - http://www.bohemiancoding.com/sketch -->
<title>Group 9</title>
<desc>Created with Sketch.</desc>
<defs>
<path d="M0,131.5 C1.52216317e-15,101.788282 2.0023434,70.3064817 6.0070302,37.054599 L6.00703147,37.0545992 C8.23177711,18.5819983 23.2321456,4.27478563 41.7892683,2.9258328 C68.6224469,0.975277594 91.0407969,-6.24317082e-09 109.044318,0 C127.133265,6.27279111e-09 149.842798,0.984554771 177.17292,2.9536643 L177.17292,2.95366535 C195.745345,4.29179116 210.761581,18.6099912 212.981582,37.0977487 C216.993859,70.5112465 218.999998,102.082949 219,131.812857 C219.000002,161.472158 217.003381,192.843579 213.010137,225.927119 L213.010136,225.927119 C210.780269,244.401296 195.772997,258.705423 177.213148,260.046888 C149.974602,262.015629 127.477504,263 109.721856,263 C91.927568,263 69.2911098,262.01134 41.8124813,260.034021 L41.8124814,260.03402 C23.2430488,258.697792 8.22697111,244.385384 6.00173205,225.9014 C2.00057735,192.665746 1.52149174e-15,161.198612 0,131.5 Z" id="path-1"></path>
<filter x="-4.5%" y="-1.4%" width="106.2%" height="104.4%" filterUnits="objectBoundingBox" id="filter-2">
<feMorphology radius="0.81" operator="dilate" in="SourceAlpha" result="shadowSpreadOuter1"></feMorphology>
<feOffset dx="-6" dy="4" in="shadowSpreadOuter1" result="shadowOffsetOuter1"></feOffset>
<feComposite in="shadowOffsetOuter1" in2="SourceAlpha" operator="out" result="shadowOffsetOuter1"></feComposite>
<feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" type="matrix" in="shadowOffsetOuter1"></feColorMatrix>
</filter>
<path d="M39.654321,130.992298 C39.654321,110.09311 40.5351746,89.1940983 42.2968819,68.2952631 L42.2968835,68.2952632 C43.2666685,56.7908671 52.197293,47.5570778 63.6629191,46.2039222 C78.8424188,44.4124609 94.0195118,43.5167302 109.194198,43.5167302 C124.360772,43.5167302 139.527341,44.4115034 154.693904,46.2010498 L154.693904,46.2010495 C166.164025,47.5544421 175.09671,56.7944422 176.061501,68.3037662 C177.833381,89.4411461 178.719321,110.482698 178.719321,131.428422 C178.719321,152.307984 177.838969,173.187319 176.078265,194.066429 L176.078265,194.066429 C175.10807,205.571375 166.17633,214.805149 154.709997,216.157282 C139.486491,217.95247 124.287302,218.850064 109.112431,218.850064 C93.9666716,218.850064 78.8209665,217.95591 63.6753158,216.167604 L63.6753156,216.167605 C52.2067135,214.813462 43.275345,205.574785 42.309801,194.06695 C40.539481,172.967394 39.654321,151.94251 39.654321,130.992298 Z" id="path-3"></path>
<filter x="-6.0%" y="-2.3%" width="108.6%" height="105.9%" filterUnits="objectBoundingBox" id="filter-4">
<feMorphology radius="0.81" operator="dilate" in="SourceAlpha" result="shadowSpreadOuter1"></feMorphology>
<feOffset dx="-5" dy="3" in="shadowSpreadOuter1" result="shadowOffsetOuter1"></feOffset>
<feComposite in="shadowOffsetOuter1" in2="SourceAlpha" operator="out" result="shadowOffsetOuter1"></feComposite>
<feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" type="matrix" in="shadowOffsetOuter1"></feColorMatrix>
</filter>
<path d="M161.510068,89.8583333 L176.8425,89.8583333 L176.8425,107.391667 L161.510068,107.391667 L161.510068,107.391667 C157.8829,107.391667 154.9425,104.451267 154.9425,100.824099 L154.9425,96.4259009 L154.9425,96.4259009 C154.9425,92.7987335 157.8829,89.8583333 161.510068,89.8583333 Z" id="path-5"></path>
<filter x="-13.7%" y="-5.7%" width="118.3%" height="117.1%" filterUnits="objectBoundingBox" id="filter-6">
<feOffset dx="-2" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feComposite in="shadowOffsetOuter1" in2="SourceAlpha" operator="out" result="shadowOffsetOuter1"></feComposite>
<feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" type="matrix" in="shadowOffsetOuter1"></feColorMatrix>
</filter>
<path d="M183.957568,89.8583333 L199.29,89.8583333 L199.29,107.391667 L183.957568,107.391667 L183.957568,107.391667 C180.3304,107.391667 177.39,104.451267 177.39,100.824099 L177.39,96.4259009 L177.39,96.4259009 C177.39,92.7987335 180.3304,89.8583333 183.957568,89.8583333 Z" id="path-7"></path>
<filter x="-2.3%" y="-2.9%" width="109.1%" height="111.4%" filterUnits="objectBoundingBox" id="filter-8">
<feOffset dx="1" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feComposite in="shadowOffsetOuter1" in2="SourceAlpha" operator="out" result="shadowOffsetOuter1"></feComposite>
<feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" type="matrix" in="shadowOffsetOuter1"></feColorMatrix>
</filter>
<filter x="-55.5%" y="-9.3%" width="177.5%" height="148.0%" filterUnits="objectBoundingBox" id="filter-9">
<feOffset dx="-1" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" type="matrix" in="shadowOffsetOuter1" result="shadowMatrixOuter1"></feColorMatrix>
<feMerge>
<feMergeNode in="shadowMatrixOuter1"></feMergeNode>
<feMergeNode in="SourceGraphic"></feMergeNode>
</feMerge>
</filter>
<filter x="-55.5%" y="-9.3%" width="177.5%" height="148.0%" filterUnits="objectBoundingBox" id="filter-10">
<feOffset dx="-1" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" type="matrix" in="shadowOffsetOuter1" result="shadowMatrixOuter1"></feColorMatrix>
<feMerge>
<feMergeNode in="shadowMatrixOuter1"></feMergeNode>
<feMergeNode in="SourceGraphic"></feMergeNode>
</feMerge>
</filter>
<path d="M8.86493515,17.2480344 C8.4007802,16.9327578 8.09567896,16.3993146 8.09567896,15.7943295 C8.09567896,14.82567 8.87784133,14.0404164 9.84268751,14.0404164 C10.8075337,14.0404164 11.5896961,14.82567 11.5896961,15.7943295 C11.5896961,16.3993146 11.2845948,16.9327578 10.8204399,17.2480344 L11.7961308,19.984547 C11.9101195,20.3042502 11.743355,20.6558271 11.4236517,20.7698158 C11.3574028,20.7934365 11.2875908,20.8055099 11.2172568,20.8055099 L8.46811816,20.8055099 L8.46811816,20.8055099 C8.1287016,20.8055099 7.85355011,20.5303584 7.85355011,20.1909418 C7.85355011,20.1206079 7.86562345,20.0507959 7.8892442,19.984547 L8.86493515,17.2480344 Z" id="path-11"></path>
<filter x="-12.0%" y="-7.4%" width="124.1%" height="114.8%" filterUnits="objectBoundingBox" id="filter-12">
<feOffset dx="-1" dy="1" in="SourceAlpha" result="shadowOffsetInner1"></feOffset>
<feComposite in="shadowOffsetInner1" in2="SourceAlpha" operator="arithmetic" k2="-1" k3="1" result="shadowInnerInner1"></feComposite>
<feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 1 0" type="matrix" in="shadowInnerInner1"></feColorMatrix>
</filter>
<filter x="-50.0%" y="-10.0%" width="160.0%" height="160.0%" filterUnits="objectBoundingBox" id="filter-13">
<feOffset dx="-1" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" type="matrix" in="shadowOffsetOuter1" result="shadowMatrixOuter1"></feColorMatrix>
<feMerge>
<feMergeNode in="shadowMatrixOuter1"></feMergeNode>
<feMergeNode in="SourceGraphic"></feMergeNode>
</feMerge>
</filter>
<filter x="-50.0%" y="-10.0%" width="160.0%" height="160.0%" filterUnits="objectBoundingBox" id="filter-14">
<feOffset dx="-1" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" type="matrix" in="shadowOffsetOuter1" result="shadowMatrixOuter1"></feColorMatrix>
<feMerge>
<feMergeNode in="shadowMatrixOuter1"></feMergeNode>
<feMergeNode in="SourceGraphic"></feMergeNode>
</feMerge>
</filter>
<filter x="-50.0%" y="-10.0%" width="160.0%" height="160.0%" filterUnits="objectBoundingBox" id="filter-15">
<feOffset dx="-1" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" type="matrix" in="shadowOffsetOuter1" result="shadowMatrixOuter1"></feColorMatrix>
<feMerge>
<feMergeNode in="shadowMatrixOuter1"></feMergeNode>
<feMergeNode in="SourceGraphic"></feMergeNode>
</feMerge>
</filter>
<filter x="-50.0%" y="-10.0%" width="160.0%" height="160.0%" filterUnits="objectBoundingBox" id="filter-16">
<feOffset dx="-1" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" type="matrix" in="shadowOffsetOuter1" result="shadowMatrixOuter1"></feColorMatrix>
<feMerge>
<feMergeNode in="shadowMatrixOuter1"></feMergeNode>
<feMergeNode in="SourceGraphic"></feMergeNode>
</feMerge>
</filter>
<filter x="-50.0%" y="-10.0%" width="160.0%" height="160.0%" filterUnits="objectBoundingBox" id="filter-17">
<feOffset dx="-1" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" type="matrix" in="shadowOffsetOuter1" result="shadowMatrixOuter1"></feColorMatrix>
<feMerge>
<feMergeNode in="shadowMatrixOuter1"></feMergeNode>
<feMergeNode in="SourceGraphic"></feMergeNode>
</feMerge>
</filter>
<filter x="-50.0%" y="-10.0%" width="160.0%" height="160.0%" filterUnits="objectBoundingBox" id="filter-18">
<feOffset dx="-1" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" type="matrix" in="shadowOffsetOuter1" result="shadowMatrixOuter1"></feColorMatrix>
<feMerge>
<feMergeNode in="shadowMatrixOuter1"></feMergeNode>
<feMergeNode in="SourceGraphic"></feMergeNode>
</feMerge>
</filter>
<filter x="-50.0%" y="-10.0%" width="160.0%" height="160.0%" filterUnits="objectBoundingBox" id="filter-19">
<feOffset dx="-1" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" type="matrix" in="shadowOffsetOuter1" result="shadowMatrixOuter1"></feColorMatrix>
<feMerge>
<feMergeNode in="shadowMatrixOuter1"></feMergeNode>
<feMergeNode in="SourceGraphic"></feMergeNode>
</feMerge>
</filter>
<filter x="-50.0%" y="-10.0%" width="160.0%" height="160.0%" filterUnits="objectBoundingBox" id="filter-20">
<feOffset dx="-1" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" type="matrix" in="shadowOffsetOuter1" result="shadowMatrixOuter1"></feColorMatrix>
<feMerge>
<feMergeNode in="shadowMatrixOuter1"></feMergeNode>
<feMergeNode in="SourceGraphic"></feMergeNode>
</feMerge>
</filter>
<filter x="-50.0%" y="-10.0%" width="160.0%" height="160.0%" filterUnits="objectBoundingBox" id="filter-21">
<feOffset dx="-1" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" type="matrix" in="shadowOffsetOuter1" result="shadowMatrixOuter1"></feColorMatrix>
<feMerge>
<feMergeNode in="shadowMatrixOuter1"></feMergeNode>
<feMergeNode in="SourceGraphic"></feMergeNode>
</feMerge>
</filter>
<filter x="-50.0%" y="-10.0%" width="160.0%" height="160.0%" filterUnits="objectBoundingBox" id="filter-22">
<feOffset dx="-1" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" type="matrix" in="shadowOffsetOuter1" result="shadowMatrixOuter1"></feColorMatrix>
<feMerge>
<feMergeNode in="shadowMatrixOuter1"></feMergeNode>
<feMergeNode in="SourceGraphic"></feMergeNode>
</feMerge>
</filter>
<filter x="-44.4%" y="-20.0%" width="166.7%" height="160.0%" filterUnits="objectBoundingBox" id="filter-23">
<feOffset dx="-2" dy="2" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" type="matrix" in="shadowOffsetOuter1" result="shadowMatrixOuter1"></feColorMatrix>
<feMerge>
<feMergeNode in="shadowMatrixOuter1"></feMergeNode>
<feMergeNode in="SourceGraphic"></feMergeNode>
</feMerge>
</filter>
<filter x="-44.4%" y="-20.0%" width="166.7%" height="160.0%" filterUnits="objectBoundingBox" id="filter-24">
<feOffset dx="-2" dy="2" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" type="matrix" in="shadowOffsetOuter1" result="shadowMatrixOuter1"></feColorMatrix>
<feMerge>
<feMergeNode in="shadowMatrixOuter1"></feMergeNode>
<feMergeNode in="SourceGraphic"></feMergeNode>
</feMerge>
</filter>
<filter x="-44.4%" y="-20.0%" width="166.7%" height="160.0%" filterUnits="objectBoundingBox" id="filter-25">
<feOffset dx="-2" dy="2" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" type="matrix" in="shadowOffsetOuter1" result="shadowMatrixOuter1"></feColorMatrix>
<feMerge>
<feMergeNode in="shadowMatrixOuter1"></feMergeNode>
<feMergeNode in="SourceGraphic"></feMergeNode>
</feMerge>
</filter>
<filter x="-44.4%" y="-20.0%" width="166.7%" height="160.0%" filterUnits="objectBoundingBox" id="filter-26">
<feOffset dx="-2" dy="2" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" type="matrix" in="shadowOffsetOuter1" result="shadowMatrixOuter1"></feColorMatrix>
<feMerge>
<feMergeNode in="shadowMatrixOuter1"></feMergeNode>
<feMergeNode in="SourceGraphic"></feMergeNode>
</feMerge>
</filter>
<filter x="-44.4%" y="-20.0%" width="166.7%" height="160.0%" filterUnits="objectBoundingBox" id="filter-27">
<feOffset dx="-2" dy="2" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" type="matrix" in="shadowOffsetOuter1" result="shadowMatrixOuter1"></feColorMatrix>
<feMerge>
<feMergeNode in="shadowMatrixOuter1"></feMergeNode>
<feMergeNode in="SourceGraphic"></feMergeNode>
</feMerge>
</filter>
<filter x="-44.4%" y="-20.0%" width="166.7%" height="160.0%" filterUnits="objectBoundingBox" id="filter-28">
<feOffset dx="-2" dy="2" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" type="matrix" in="shadowOffsetOuter1" result="shadowMatrixOuter1"></feColorMatrix>
<feMerge>
<feMergeNode in="shadowMatrixOuter1"></feMergeNode>
<feMergeNode in="SourceGraphic"></feMergeNode>
</feMerge>
</filter>
<filter x="-44.4%" y="-20.0%" width="166.7%" height="160.0%" filterUnits="objectBoundingBox" id="filter-29">
<feOffset dx="-2" dy="2" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" type="matrix" in="shadowOffsetOuter1" result="shadowMatrixOuter1"></feColorMatrix>
<feMerge>
<feMergeNode in="shadowMatrixOuter1"></feMergeNode>
<feMergeNode in="SourceGraphic"></feMergeNode>
</feMerge>
</filter>
<rect id="path-30" x="79.0833333" y="68.7939815" width="60.8333333" height="24.3518519"></rect>
<filter x="-2.5%" y="-2.1%" width="103.3%" height="108.2%" filterUnits="objectBoundingBox" id="filter-31">
<feOffset dx="-1" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feComposite in="shadowOffsetOuter1" in2="SourceAlpha" operator="out" result="shadowOffsetOuter1"></feComposite>
<feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" type="matrix" in="shadowOffsetOuter1"></feColorMatrix>
</filter>
<rect id="path-32" x="119.233333" y="71.2346165" width="18.2504951" height="19.5072939"></rect>
<path d="M6.69173423,0.214583333 L15.4541667,0.214583333 L15.4541667,30.8979167 L6.69173423,30.8979167 L6.69173423,30.8979167 C3.06456682,30.8979167 0.124166667,27.9575165 0.124166667,24.3303491 L0.124166667,6.7821509 L0.124166667,6.7821509 C0.124166667,3.15498349 3.06456682,0.214583333 6.69173423,0.214583333 Z" id="path-34"></path>
<filter x="-29.4%" y="-4.9%" width="139.1%" height="116.3%" filterUnits="objectBoundingBox" id="filter-35">
<feOffset dx="-3" dy="2" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feComposite in="shadowOffsetOuter1" in2="SourceAlpha" operator="out" result="shadowOffsetOuter1"></feComposite>
<feColorMatrix values="0 0 0 0 0.866666667 0 0 0 0 0.890196078 0 0 0 0 0.909803922 0 0 0 1 0" type="matrix" in="shadowOffsetOuter1"></feColorMatrix>
</filter>
<filter x="-50.0%" y="-10.0%" width="160.0%" height="160.0%" filterUnits="objectBoundingBox" id="filter-36">
<feOffset dx="-1" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" type="matrix" in="shadowOffsetOuter1" result="shadowMatrixOuter1"></feColorMatrix>
<feMerge>
<feMergeNode in="shadowMatrixOuter1"></feMergeNode>
<feMergeNode in="SourceGraphic"></feMergeNode>
</feMerge>
</filter>
<filter x="-50.0%" y="-10.0%" width="160.0%" height="160.0%" filterUnits="objectBoundingBox" id="filter-37">
<feOffset dx="-1" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" type="matrix" in="shadowOffsetOuter1" result="shadowMatrixOuter1"></feColorMatrix>
<feMerge>
<feMergeNode in="shadowMatrixOuter1"></feMergeNode>
<feMergeNode in="SourceGraphic"></feMergeNode>
</feMerge>
</filter>
<path d="M42.8291667,11.875589 L42.8291667,19.236911 C42.8291667,19.9264853 42.3373793,20.5354959 41.738915,20.595957 L17.6441667,22.6791667 L17.6441667,8.43333333 L41.738915,10.516543 C42.3410444,10.5773757 42.8291667,11.185286 42.8291667,11.875589 Z" id="path-38"></path>
<filter x="-50.0%" y="-10.0%" width="160.0%" height="160.0%" filterUnits="objectBoundingBox" id="filter-39">
<feOffset dx="-1" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" type="matrix" in="shadowOffsetOuter1" result="shadowMatrixOuter1"></feColorMatrix>
<feMerge>
<feMergeNode in="shadowMatrixOuter1"></feMergeNode>
<feMergeNode in="SourceGraphic"></feMergeNode>
</feMerge>
</filter>
<filter x="-50.0%" y="-10.0%" width="160.0%" height="160.0%" filterUnits="objectBoundingBox" id="filter-40">
<feOffset dx="-1" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" type="matrix" in="shadowOffsetOuter1" result="shadowMatrixOuter1"></feColorMatrix>
<feMerge>
<feMergeNode in="shadowMatrixOuter1"></feMergeNode>
<feMergeNode in="SourceGraphic"></feMergeNode>
</feMerge>
</filter>
<rect id="path-41" x="12.23" y="6.78958333" width="7.1175" height="17.5333333" rx="1.09459459"></rect>
<filter x="-42.1%" y="-5.7%" width="156.2%" height="117.1%" filterUnits="objectBoundingBox" id="filter-42">
<feOffset dx="-2" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feComposite in="shadowOffsetOuter1" in2="SourceAlpha" operator="out" result="shadowOffsetOuter1"></feComposite>
<feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" type="matrix" in="shadowOffsetOuter1"></feColorMatrix>
</filter>
<path d="M6.69173423,0.214583333 L15.4541667,0.214583333 L15.4541667,30.8979167 L6.69173423,30.8979167 L6.69173423,30.8979167 C3.06456682,30.8979167 0.124166667,27.9575165 0.124166667,24.3303491 L0.124166667,6.7821509 L0.124166667,6.7821509 C0.124166667,3.15498349 3.06456682,0.214583333 6.69173423,0.214583333 Z" id="path-43"></path>
<filter x="-29.4%" y="-4.9%" width="139.1%" height="116.3%" filterUnits="objectBoundingBox" id="filter-44">
<feOffset dx="-3" dy="2" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feComposite in="shadowOffsetOuter1" in2="SourceAlpha" operator="out" result="shadowOffsetOuter1"></feComposite>
<feColorMatrix values="0 0 0 0 0.866666667 0 0 0 0 0.890196078 0 0 0 0 0.909803922 0 0 0 1 0" type="matrix" in="shadowOffsetOuter1"></feColorMatrix>
</filter>
<filter x="-50.0%" y="-10.0%" width="160.0%" height="160.0%" filterUnits="objectBoundingBox" id="filter-45">
<feOffset dx="-1" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" type="matrix" in="shadowOffsetOuter1" result="shadowMatrixOuter1"></feColorMatrix>
<feMerge>
<feMergeNode in="shadowMatrixOuter1"></feMergeNode>
<feMergeNode in="SourceGraphic"></feMergeNode>
</feMerge>
</filter>
<filter x="-50.0%" y="-10.0%" width="160.0%" height="160.0%" filterUnits="objectBoundingBox" id="filter-46">
<feOffset dx="-1" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" type="matrix" in="shadowOffsetOuter1" result="shadowMatrixOuter1"></feColorMatrix>
<feMerge>
<feMergeNode in="shadowMatrixOuter1"></feMergeNode>
<feMergeNode in="SourceGraphic"></feMergeNode>
</feMerge>
</filter>
<path d="M42.8291667,11.875589 L42.8291667,19.236911 C42.8291667,19.9264853 42.3373793,20.5354959 41.738915,20.595957 L17.6441667,22.6791667 L17.6441667,8.43333333 L41.738915,10.516543 C42.3410444,10.5773757 42.8291667,11.185286 42.8291667,11.875589 Z" id="path-47"></path>
<filter x="-50.0%" y="-10.0%" width="160.0%" height="160.0%" filterUnits="objectBoundingBox" id="filter-48">
<feOffset dx="-1" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" type="matrix" in="shadowOffsetOuter1" result="shadowMatrixOuter1"></feColorMatrix>
<feMerge>
<feMergeNode in="shadowMatrixOuter1"></feMergeNode>
<feMergeNode in="SourceGraphic"></feMergeNode>
</feMerge>
</filter>
<filter x="-50.0%" y="-10.0%" width="160.0%" height="160.0%" filterUnits="objectBoundingBox" id="filter-49">
<feOffset dx="-1" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" type="matrix" in="shadowOffsetOuter1" result="shadowMatrixOuter1"></feColorMatrix>
<feMerge>
<feMergeNode in="shadowMatrixOuter1"></feMergeNode>
<feMergeNode in="SourceGraphic"></feMergeNode>
</feMerge>
</filter>
<rect id="path-50" x="12.23" y="6.78958333" width="7.1175" height="17.5333333" rx="1.09459459"></rect>
<filter x="-42.1%" y="-5.7%" width="156.2%" height="117.1%" filterUnits="objectBoundingBox" id="filter-51">
<feOffset dx="-2" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feComposite in="shadowOffsetOuter1" in2="SourceAlpha" operator="out" result="shadowOffsetOuter1"></feComposite>
<feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" type="matrix" in="shadowOffsetOuter1"></feColorMatrix>
</filter>
<path d="M24.5975819,18.9156325 C22.7107005,18.6906938 20.1873316,18.3702571 18.5998357,18.0903387 C15.7716385,17.5916513 10.2254435,16.2267099 10.2254435,16.2267099 L9.43228672,20.7249253 C9.43228672,20.7249253 15.1331234,21.2766981 17.950402,21.7734603 C19.3152185,22.0141143 21.3273422,22.4758916 23.0359088,22.887195 C22.0718328,24.3735021 20.9147108,26.1229174 20.0932954,27.2534987 C18.405278,29.5768553 14.7471849,33.9633914 14.7471849,33.9633914 L18.4424572,36.6481639 C18.4424572,36.6481639 21.4374695,31.7661671 23.1189701,29.4517801 C23.9598468,28.2944125 25.3148663,26.6203912 26.4570264,25.2388063 C27.4382453,26.7462318 28.6051214,28.5736505 29.3214044,29.8142891 C30.7573178,32.301364 33.2767374,37.4273633 33.2767374,37.4273633 L37.2324017,35.1435594 C37.2324017,35.1435594 33.990657,30.4217925 32.5602872,27.9443193 C31.8079686,26.6412654 30.764866,24.5861738 29.94691,22.9346427 C31.7349883,22.451283 33.9931664,21.8608332 35.4733174,21.5462174 C38.2823878,20.9491311 43.9360463,20.1370415 43.9360463,20.1370415 L42.9863873,15.669247 C42.9863873,15.669247 37.4939659,17.2932232 34.6957402,17.8880045 C33.1431973,18.2180076 30.6947576,18.5971515 28.8277097,18.8686298 C28.722602,16.9801623 28.6032977,14.4864013 28.6032977,12.8962937 C28.6032977,10.024467 28.984416,4.32551158 28.984416,4.32551158 L24.4168083,4.32551158 C24.4168083,4.32551158 24.8633581,10.0355541 24.8633581,12.8962937 C24.8633581,14.5048733 24.7214143,17.0240015 24.5975819,18.9156325 Z" id="path-52"></path>
<filter x="-14.6%" y="-6.2%" width="120.9%" height="121.4%" filterUnits="objectBoundingBox" id="filter-54">
<feMorphology radius="0.547297297" operator="dilate" in="SourceAlpha" result="shadowSpreadOuter1"></feMorphology>
<feOffset dx="-3" dy="3" in="shadowSpreadOuter1" result="shadowOffsetOuter1"></feOffset>
<feComposite in="shadowOffsetOuter1" in2="SourceAlpha" operator="out" result="shadowOffsetOuter1"></feComposite>
<feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" type="matrix" in="shadowOffsetOuter1"></feColorMatrix>
</filter>
<ellipse id="path-55" cx="26.802716" cy="22.6705733" rx="4.38" ry="4.38333333"></ellipse>
<filter x="-34.2%" y="-11.4%" width="145.7%" height="134.2%" filterUnits="objectBoundingBox" id="filter-56">
<feOffset dx="-2" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feColorMatrix values="0 0 0 0 0.596078431 0 0 0 0 0.647058824 0 0 0 0 0.701960784 0 0 0 1 0" type="matrix" in="shadowOffsetOuter1"></feColorMatrix>
</filter>
</defs>
<g id="Ant-Design-Pro-3.0" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="403" transform="translate(-592.000000, -260.000000)">
<g id="Group-9" transform="translate(599.000000, 261.000000)">
<g id="Group-11">
<g id="Rectangle-355">
<use fill="black" fill-opacity="1" filter="url(#filter-2)" xlink:href="#path-1"></use>
<use stroke="#A3B1BF" stroke-width="1.62" fill="#F0F2F5" fill-rule="evenodd" xlink:href="#path-1"></use>
</g>
<g id="Rectangle-355">
<use fill="black" fill-opacity="1" filter="url(#filter-4)" xlink:href="#path-3"></use>
<use stroke="#A3B1BF" stroke-width="1.62" fill-opacity="0.15" fill="#A3B1BF" fill-rule="evenodd" xlink:href="#path-3"></use>
</g>
<g id="Rectangle-357">
<use fill="black" fill-opacity="1" filter="url(#filter-6)" xlink:href="#path-5"></use>
<use fill="#F0F2F5" fill-rule="evenodd" xlink:href="#path-5"></use>
<path stroke="#A3B1BF" stroke-width="1.62" d="M176.0325,106.581667 L176.0325,90.6683333 L161.510068,90.6683333 C158.330251,90.6683333 155.7525,93.2460841 155.7525,96.4259009 L155.7525,100.824099 C155.7525,104.003916 158.330251,106.581667 161.510068,106.581667 L176.0325,106.581667 Z"></path>
</g>
<g id="Rectangle-357" transform="translate(188.340000, 98.625000) scale(-1, 1) translate(-188.340000, -98.625000) ">
<use fill="black" fill-opacity="1" filter="url(#filter-8)" xlink:href="#path-7"></use>
<use fill="#F0F2F5" fill-rule="evenodd" xlink:href="#path-7"></use>
<path stroke="#A3B1BF" stroke-width="1.62" d="M198.48,106.581667 L198.48,90.6683333 L183.957568,90.6683333 C180.777751,90.6683333 178.2,93.2460841 178.2,96.4259009 L178.2,100.824099 C178.2,104.003916 180.777751,106.581667 183.957568,106.581667 L198.48,106.581667 Z"></path>
</g>
<path d="M169.537821,109.198898 L179.520726,109.198898 L179.520726,106.316665 C179.657239,106.659699 174.968976,106.316665 172.419859,106.316665 L174.153055,100.243742 C171.605657,100.243742 169.537821,102.294522 169.537821,104.822572 L169.537821,109.198898 Z M181.404585,106.764356 L181.334952,105.82938 C178.493277,106.319657 175.877716,105.82938 172.088276,105.82938 L174.153055,98.0162037 C170.365914,98.0162037 167.291667,101.063519 167.291667,104.822572 L167.291667,106.764356 L166.869647,106.764356 L166.869647,106.764356 C165.758829,106.764356 164.858333,107.664852 164.858333,108.775669 L164.858333,108.775669 L164.858333,115.540394 C164.858333,119.983665 168.460316,123.585648 172.903588,123.585648 L176.279745,123.585648 C180.723017,123.585648 184.325,119.983665 184.325,115.540394 L184.325,108.775669 C184.325,107.664852 183.424504,106.764356 182.313686,106.764356 L181.404585,106.764356 Z" id="Shape" fill="#D4DBE2" fill-rule="nonzero"></path>
<g id="Group-6" filter="url(#filter-9)" transform="translate(160.419753, 95.472603)">
<ellipse id="Oval-191" stroke="#D9D9D9" stroke-width="1.09459459" fill="#F5F5F5" cx="2.19" cy="2.73958333" rx="2.19" ry="2.19166667"></ellipse>
<polygon id="Path-301" fill="#D9D9D9" points="3.78100727 4.39009284 1.17151744 0.497180523 0.223105786 2.08897836 0.101076918 4.39009284"></polygon>
</g>
<g id="Group-6" filter="url(#filter-10)" transform="translate(189.259259, 95.472603)">
<ellipse id="Oval-191" stroke="#D9D9D9" stroke-width="1.09459459" fill="#F5F5F5" cx="2.19" cy="2.73958333" rx="2.19" ry="2.19166667"></ellipse>
<polygon id="Path-301" fill="#D9D9D9" points="3.78100727 4.39009284 1.17151744 0.497180523 0.223105786 2.08897836 0.101076918 4.39009284"></polygon>
</g>
<g id="lock" transform="translate(166.683333, 96.798611)">
<path d="M2.43333333,9.34812925 L2.43333333,7.750693 C2.43333333,4.33901358 4.64933408,1.45058816 7.70555556,0.476293029 L7.70555556,4.05203095 C6.57838885,4.84048413 5.84,6.15673686 5.84,7.64734194 L5.84,9.34812925 L14.4830461,9.34812925 C14.4830461,8.8280509 14.4830461,8.25372782 14.4830461,7.64734194 C14.4830461,6.44285214 14.0009139,5.352206 13.2211113,4.56188949 L13.2211113,0.864048014 C15.7633754,2.09038625 17.52,4.7131478 17.52,7.750693 C17.52,8.30041562 17.52,8.83504216 17.52,9.3491485 C18.6008993,9.38327886 19.4666667,10.2702555 19.4666667,11.3594429 L19.4666667,18.3317768 C19.4666667,22.7750482 15.8646835,26.3770314 11.4214121,26.3770314 L8.04525456,26.3770314 C3.60198316,26.3770314 5.4414381e-16,22.7750482 0,18.3317768 L0,11.3594429 C-1.36035952e-16,10.248625 0.900495789,9.34812925 2.01131364,9.34812925 L2.01131364,9.34812925 L2.43333333,9.34812925 Z" id="Combined-Shape" stroke="#A3B1BF" stroke-width="1.62" fill="#F0F2F5"></path>
<g id="Oval-1115">
<use fill-opacity="0.3" fill="#A3B1BF" fill-rule="evenodd" xlink:href="#path-11"></use>
<use fill="black" fill-opacity="1" filter="url(#filter-12)" xlink:href="#path-11"></use>
</g>
</g>
<g id="Group-6" filter="url(#filter-13)" transform="translate(64.000000, 75.000000)">
<ellipse id="Oval-191" stroke="#A3B1BF" stroke-width="1.09459459" fill="#F5F5F5" cx="2.19" cy="2.73958333" rx="2.19" ry="2.19166667"></ellipse>
<polygon id="Path-301" fill="#A3B1BF" points="3.78100727 4.39009284 1.17151744 0.497180523 0.223105786 2.08897836 0.101076918 4.39009284"></polygon>
</g>
<g id="Group-6-Copy-11" filter="url(#filter-14)" transform="translate(152.000000, 75.000000)">
<ellipse id="Oval-191" stroke="#A3B1BF" stroke-width="1.09459459" fill="#F5F5F5" cx="2.19" cy="2.73958333" rx="2.19" ry="2.19166667"></ellipse>
<polygon id="Path-301" fill="#A3B1BF" points="3.78100727 4.39009284 1.17151744 0.497180523 0.223105786 2.08897836 0.101076918 4.39009284"></polygon>
</g>
<g id="Group-6-Copy-2" filter="url(#filter-15)" transform="translate(57.000000, 120.000000)">
<ellipse id="Oval-191" stroke="#A3B1BF" stroke-width="1.09459459" fill="#F5F5F5" cx="2.19" cy="2.73958333" rx="2.19" ry="2.19166667"></ellipse>
<polygon id="Path-301" fill="#A3B1BF" points="3.78100727 4.39009284 1.17151744 0.497180523 0.223105786 2.08897836 0.101076918 4.39009284"></polygon>
</g>
<g id="Group-6-Copy-3" filter="url(#filter-16)" transform="translate(57.000000, 137.000000)">
<ellipse id="Oval-191" stroke="#A3B1BF" stroke-width="1.09459459" fill="#F5F5F5" cx="2.19" cy="2.73958333" rx="2.19" ry="2.19166667"></ellipse>
<polygon id="Path-301" fill="#A3B1BF" points="3.78100727 4.39009284 1.17151744 0.497180523 0.223105786 2.08897836 0.101076918 4.39009284"></polygon>
</g>
<g id="Group-6-Copy-4" filter="url(#filter-17)" transform="translate(64.000000, 186.000000)">
<ellipse id="Oval-191" stroke="#A3B1BF" stroke-width="1.09459459" fill="#F5F5F5" cx="2.19" cy="2.73958333" rx="2.19" ry="2.19166667"></ellipse>
<polygon id="Path-301" fill="#A3B1BF" points="3.78100727 4.39009284 1.17151744 0.497180523 0.223105786 2.08897836 0.101076918 4.39009284"></polygon>
</g>
<g id="Group-6-Copy-5" filter="url(#filter-18)" transform="translate(93.000000, 191.000000)">
<ellipse id="Oval-191" stroke="#A3B1BF" stroke-width="1.09459459" fill="#F5F5F5" cx="2.19" cy="2.73958333" rx="2.19" ry="2.19166667"></ellipse>
<polygon id="Path-301" fill="#A3B1BF" points="3.78100727 4.39009284 1.17151744 0.497180523 0.223105786 2.08897836 0.101076918 4.39009284"></polygon>
</g>
<g id="Group-6-Copy-6" filter="url(#filter-19)" transform="translate(122.000000, 191.000000)">
<ellipse id="Oval-191" stroke="#A3B1BF" stroke-width="1.09459459" fill="#F5F5F5" cx="2.19" cy="2.73958333" rx="2.19" ry="2.19166667"></ellipse>
<polygon id="Path-301" fill="#A3B1BF" points="3.78100727 4.39009284 1.17151744 0.497180523 0.223105786 2.08897836 0.101076918 4.39009284"></polygon>
</g>
<g id="Group-6-Copy-7" filter="url(#filter-20)" transform="translate(152.000000, 186.000000)">
<ellipse id="Oval-191" stroke="#A3B1BF" stroke-width="1.09459459" fill="#F5F5F5" cx="2.19" cy="2.73958333" rx="2.19" ry="2.19166667"></ellipse>
<polygon id="Path-301" fill="#A3B1BF" points="3.78100727 4.39009284 1.17151744 0.497180523 0.223105786 2.08897836 0.101076918 4.39009284"></polygon>
</g>
<g id="Group-6" filter="url(#filter-21)" transform="translate(160.419753, 95.472603)">
<ellipse id="Oval-191" stroke="#A3B1BF" stroke-width="1.09459459" fill="#F5F5F5" cx="2.19" cy="2.73958333" rx="2.19" ry="2.19166667"></ellipse>
<polygon id="Path-301" fill="#A3B1BF" points="3.78100727 4.39009284 1.17151744 0.497180523 0.223105786 2.08897836 0.101076918 4.39009284"></polygon>
</g>
<g id="Group-6" filter="url(#filter-22)" transform="translate(189.259259, 95.472603)">
<ellipse id="Oval-191" stroke="#A3B1BF" stroke-width="1.09459459" fill="#F7FAFC" cx="2.19" cy="2.73958333" rx="2.19" ry="2.19166667"></ellipse>
<polygon id="Path-301" fill="#A3B1BF" points="3.78100727 4.39009284 1.17151744 0.497180523 0.223105786 2.08897836 0.101076918 4.39009284"></polygon>
</g>
<g id="Group-6" filter="url(#filter-23)" transform="translate(25.000000, 38.000000)">
<ellipse id="Oval-191" stroke="#A3B1BF" stroke-width="1.64189189" fill="#F7FAFC" cx="4.38" cy="4.93125" rx="4.38" ry="4.38333333"></ellipse>
<polygon id="Path-301" fill="#A3B1BF" points="4.0041131 9.13310534 7.56201455 8.23226901 2.34303487 0.44644438 0.446211571 3.63004005 0.788921826 7.80592737"></polygon>
</g>
<g id="Group-6-Copy-8" filter="url(#filter-24)" transform="translate(25.000000, 218.000000)">
<ellipse id="Oval-191" stroke="#A3B1BF" stroke-width="1.64189189" fill="#F7FAFC" cx="4.38" cy="4.93125" rx="4.38" ry="4.38333333"></ellipse>
<polygon id="Path-301" fill="#A3B1BF" points="4.0041131 9.13310534 7.56201455 8.23226901 2.34303487 0.44644438 0.446211571 3.63004005 0.788921826 7.80592737"></polygon>
</g>
<g id="Group-6-Copy-9" filter="url(#filter-25)" transform="translate(106.000000, 237.000000)">
<ellipse id="Oval-191" stroke="#A3B1BF" stroke-width="1.64189189" fill="#F7FAFC" cx="4.38" cy="4.93125" rx="4.38" ry="4.38333333"></ellipse>
<polygon id="Path-301" fill="#A3B1BF" points="4.0041131 9.13310534 7.56201455 8.23226901 2.34303487 0.44644438 0.446211571 3.63004005 0.788921826 7.80592737"></polygon>
</g>
<g id="Group-6-Copy-10" filter="url(#filter-26)" transform="translate(185.000000, 219.000000)">
<ellipse id="Oval-191" stroke="#A3B1BF" stroke-width="1.64189189" fill="#F7FAFC" cx="4.38" cy="4.93125" rx="4.38" ry="4.38333333"></ellipse>
<polygon id="Path-301" fill="#A3B1BF" points="4.0041131 9.13310534 7.56201455 8.23226901 2.34303487 0.44644438 0.446211571 3.63004005 0.788921826 7.80592737"></polygon>
</g>
<g id="Group-6" filter="url(#filter-27)" transform="translate(14.419753, 129.698630)">
<ellipse id="Oval-191" stroke="#A3B1BF" stroke-width="1.64189189" fill="#F7FAFC" cx="4.38" cy="4.93125" rx="4.38" ry="4.38333333"></ellipse>
<polygon id="Path-301" fill="#A3B1BF" points="4.0041131 9.13310534 7.56201455 8.23226901 2.34303487 0.44644438 0.446211571 3.63004005 0.788921826 7.80592737"></polygon>
</g>
<g id="Group-6" filter="url(#filter-28)" transform="translate(105.444444, 20.715753)">
<ellipse id="Oval-191" stroke="#A3B1BF" stroke-width="1.64189189" fill="#F7FAFC" cx="4.38" cy="4.93125" rx="4.38" ry="4.38333333"></ellipse>
<polygon id="Path-301" fill="#A3B1BF" points="4.0041131 9.13310534 7.56201455 8.23226901 2.34303487 0.44644438 0.446211571 3.63004005 0.788921826 7.80592737"></polygon>
</g>
<g id="Group-6" filter="url(#filter-29)" transform="translate(185.055000, 37.806250)">
<ellipse id="Oval-191" stroke="#A3B1BF" stroke-width="1.64189189" fill="#F5F5F5" cx="4.38" cy="4.93125" rx="4.38" ry="4.38333333"></ellipse>
<polygon id="Path-301" fill="#A3B1BF" points="4.0041131 9.13310534 7.56201455 8.23226901 2.34303487 0.44644438 0.446211571 3.63004005 0.788921826 7.80592737"></polygon>
</g>
<g id="Rectangle-373">
<use fill="black" fill-opacity="1" filter="url(#filter-31)" xlink:href="#path-30"></use>
<use fill="#F0F2F5" fill-rule="evenodd" xlink:href="#path-30"></use>
<rect stroke="#A3B1BF" stroke-width="2.43" x="80.2983333" y="70.0089815" width="58.4033333" height="21.9218519"></rect>
</g>
<mask id="mask-33" fill="white">
<use xlink:href="#path-32"></use>
</mask>
<use id="Mask" fill-opacity="0.3" fill="#A3B1BF" xlink:href="#path-32"></use>
<rect id="Rectangle-375" fill="#A3B1BF" x="114.366667" y="77.3171296" width="1.825" height="8.11728395" rx="0.9125"></rect>
<rect id="Rectangle-375" fill="#A3B1BF" x="118.016667" y="72.6496914" width="2.43333333" height="16.2345679" rx="1.21666667"></rect>
<g id="Group-4" transform="translate(25.000000, 88.000000)">
<g id="Rectangle-369">
<use fill="black" fill-opacity="1" filter="url(#filter-35)" xlink:href="#path-34"></use>
<use fill="#EAEFF3" fill-rule="evenodd" xlink:href="#path-34"></use>
<path stroke="#A3B1BF" stroke-width="1.62" d="M14.6441667,30.0879167 L14.6441667,1.02458333 L6.69173423,1.02458333 C3.51191747,1.02458333 0.934166667,3.60233414 0.934166667,6.7821509 L0.934166667,24.3303491 C0.934166667,27.5101659 3.51191747,30.0879167 6.69173423,30.0879167 L14.6441667,30.0879167 Z"></path>
</g>
<g id="Group-6" filter="url(#filter-36)" transform="translate(6.207500, 6.789583)">
<ellipse id="Oval-191" stroke="#A3B1BF" stroke-width="1.09459459" fill="#F7FAFC" cx="2.19" cy="2.73958333" rx="2.19" ry="2.19166667"></ellipse>
<polygon id="Path-301" fill="#A3B1BF" points="3.78100727 4.39009284 1.17151744 0.497180523 0.223105786 2.08897836 0.101076918 4.39009284"></polygon>
</g>
<g id="Group-6" filter="url(#filter-37)" transform="translate(6.543210, 19.181507)">
<ellipse id="Oval-191" stroke="#A3B1BF" stroke-width="1.09459459" fill="#F7FAFC" cx="2.19" cy="2.73958333" rx="2.19" ry="2.19166667"></ellipse>
<polygon id="Path-301" fill="#A3B1BF" points="3.78100727 4.39009284 1.17151744 0.497180523 0.223105786 2.08897836 0.101076918 4.39009284"></polygon>
</g>
<g id="Rectangle-371">
<use fill="#F0F2F5" fill-rule="evenodd" xlink:href="#path-38"></use>
<path stroke="#A3B1BF" stroke-width="1.62" d="M18.4541667,9.31638699 L18.4541667,21.7961161 L41.6574976,19.7900592 C41.8219325,19.7734468 42.0191667,19.5280875 42.0191667,19.236911 L42.0191667,11.875589 C42.0191667,11.5822335 41.824213,11.3392839 41.6691435,11.3235325 L18.4541667,9.31638699 Z"></path>
</g>
<g id="Group-6" filter="url(#filter-39)" transform="translate(23.000000, 13.000000)">
<ellipse id="Oval-191" stroke="#A3B1BF" stroke-width="1.09459459" fill="#F7FAFC" cx="2.19" cy="2.73958333" rx="2.19" ry="2.19166667"></ellipse>
<polygon id="Path-301" fill="#A3B1BF" points="3.78100727 4.39009284 1.17151744 0.497180523 0.223105786 2.08897836 0.101076918 4.39009284"></polygon>
</g>
<g id="Group-6-Copy" filter="url(#filter-40)" transform="translate(33.000000, 13.000000)">
<ellipse id="Oval-191" stroke="#A3B1BF" stroke-width="1.09459459" fill="#F7FAFC" cx="2.19" cy="2.73958333" rx="2.19" ry="2.19166667"></ellipse>
<polygon id="Path-301" fill="#A3B1BF" points="3.78100727 4.39009284 1.17151744 0.497180523 0.223105786 2.08897836 0.101076918 4.39009284"></polygon>
</g>
<g id="Rectangle-370">
<use fill="black" fill-opacity="1" filter="url(#filter-42)" xlink:href="#path-41"></use>
<use fill="#EAEFF3" fill-rule="evenodd" xlink:href="#path-41"></use>
<rect stroke="#A3B1BF" stroke-width="1.62" x="13.04" y="7.59958333" width="5.4975" height="15.9133333" rx="1.09459459"></rect>
</g>
<path d="M13.59875,15.55625 L17.97875,15.55625" id="Line" stroke="#A3B1BF" stroke-width="2.18918919" stroke-linecap="square"></path>
</g>
<g id="Group-4-Copy" transform="translate(25.000000, 145.000000)">
<g id="Rectangle-369">
<use fill="black" fill-opacity="1" filter="url(#filter-44)" xlink:href="#path-43"></use>
<use fill="#EAEFF3" fill-rule="evenodd" xlink:href="#path-43"></use>
<path stroke="#A3B1BF" stroke-width="1.62" d="M14.6441667,30.0879167 L14.6441667,1.02458333 L6.69173423,1.02458333 C3.51191747,1.02458333 0.934166667,3.60233414 0.934166667,6.7821509 L0.934166667,24.3303491 C0.934166667,27.5101659 3.51191747,30.0879167 6.69173423,30.0879167 L14.6441667,30.0879167 Z"></path>
</g>
<g id="Group-6" filter="url(#filter-45)" transform="translate(6.207500, 6.789583)">
<ellipse id="Oval-191" stroke="#A3B1BF" stroke-width="1.09459459" fill="#F7FAFC" cx="2.19" cy="2.73958333" rx="2.19" ry="2.19166667"></ellipse>
<polygon id="Path-301" fill="#A3B1BF" points="3.78100727 4.39009284 1.17151744 0.497180523 0.223105786 2.08897836 0.101076918 4.39009284"></polygon>
</g>
<g id="Group-6" filter="url(#filter-46)" transform="translate(6.543210, 19.181507)">
<ellipse id="Oval-191" stroke="#A3B1BF" stroke-width="1.09459459" fill="#F7FAFC" cx="2.19" cy="2.73958333" rx="2.19" ry="2.19166667"></ellipse>
<polygon id="Path-301" fill="#A3B1BF" points="3.78100727 4.39009284 1.17151744 0.497180523 0.223105786 2.08897836 0.101076918 4.39009284"></polygon>
</g>
<g id="Rectangle-371">
<use fill="#F0F2F5" fill-rule="evenodd" xlink:href="#path-47"></use>
<path stroke="#A3B1BF" stroke-width="1.62" d="M18.4541667,9.31638699 L18.4541667,21.7961161 L41.6574976,19.7900592 C41.8219325,19.7734468 42.0191667,19.5280875 42.0191667,19.236911 L42.0191667,11.875589 C42.0191667,11.5822335 41.824213,11.3392839 41.6691435,11.3235325 L18.4541667,9.31638699 Z"></path>
</g>
<g id="Group-6" filter="url(#filter-48)" transform="translate(23.000000, 13.000000)">
<ellipse id="Oval-191" stroke="#A3B1BF" stroke-width="1.09459459" fill="#F7FAFC" cx="2.19" cy="2.73958333" rx="2.19" ry="2.19166667"></ellipse>
<polygon id="Path-301" fill="#A3B1BF" points="3.78100727 4.39009284 1.17151744 0.497180523 0.223105786 2.08897836 0.101076918 4.39009284"></polygon>
</g>
<g id="Group-6-Copy" filter="url(#filter-49)" transform="translate(33.000000, 13.000000)">
<ellipse id="Oval-191" stroke="#A3B1BF" stroke-width="1.09459459" fill="#F7FAFC" cx="2.19" cy="2.73958333" rx="2.19" ry="2.19166667"></ellipse>
<polygon id="Path-301" fill="#A3B1BF" points="3.78100727 4.39009284 1.17151744 0.497180523 0.223105786 2.08897836 0.101076918 4.39009284"></polygon>
</g>
<g id="Rectangle-370">
<use fill="black" fill-opacity="1" filter="url(#filter-51)" xlink:href="#path-50"></use>
<use fill="#EAEFF3" fill-rule="evenodd" xlink:href="#path-50"></use>
<rect stroke="#A3B1BF" stroke-width="1.62" x="13.04" y="7.59958333" width="5.4975" height="15.9133333" rx="1.09459459"></rect>
</g>
<path d="M13.59875,15.55625 L17.97875,15.55625" id="Line" stroke="#A3B1BF" stroke-width="2.18918919" stroke-linecap="square"></path>
</g>
</g>
<g id="Group-17" transform="translate(135.185185, 131.500000)">
<path d="M22.4835494,46.23099 C10.0861375,46.23099 0.0360493827,36.1732534 0.0360493827,23.7664066 C0.0360493827,11.3595599 10.0861375,1.30182331 22.4835494,1.30182331 C34.8809613,1.30182331 44.9310494,11.3595599 44.9310494,23.7664066 C44.9310494,36.1732534 34.8809613,46.23099 22.4835494,46.23099 Z M22.4835494,39.65599 C31.2524505,39.65599 38.3610494,32.5419812 38.3610494,23.7664066 C38.3610494,14.9908321 31.2524505,7.87682331 22.4835494,7.87682331 C13.7146483,7.87682331 6.60604938,14.9908321 6.60604938,23.7664066 C6.60604938,32.5419812 13.7146483,39.65599 22.4835494,39.65599 Z" id="Oval-190" fill-opacity="0.3" fill="#A3B1BF"></path>
<mask id="mask-53" fill="white">
<use xlink:href="#path-52"></use>
</mask>
<g id="Mask">
<use fill="black" fill-opacity="1" filter="url(#filter-54)" xlink:href="#path-52"></use>
<use stroke="#A3B1BF" stroke-width="1.09459459" fill="#A3B1BF" fill-rule="evenodd" xlink:href="#path-52"></use>
</g>
<g id="Group-7" transform="translate(0.360494, 0.078598)" fill="#98A5B3">
<path d="M20.5636489,0.927088888 C22.1113303,0.589405992 23.7186545,0.411496914 25.3675,0.411496914 C37.7649119,0.411496914 47.815,10.4692335 47.815,22.8760802 C47.815,33.7386653 40.1110508,42.8005273 29.8728116,44.8880725 L27.4696515,38.6276265 C35.2448963,37.5983622 41.245,30.9384541 41.245,22.8760802 C41.245,14.1005057 34.1364011,6.98649691 25.3675,6.98649691 C22.0362626,6.98649691 18.9446369,8.01317718 16.3913275,9.76760576 L15.30877,6.94744709 L20.5636489,0.927088888 Z" id="Oval-190"></path>
</g>
<path d="M26.802716,45.1351566 C14.4053041,45.1351566 4.35521605,35.0774201 4.35521605,22.6705733 C4.35521605,10.2637265 14.4053041,0.20598998 26.802716,0.20598998 C39.200128,0.20598998 49.250216,10.2637265 49.250216,22.6705733 C49.250216,35.0774201 39.200128,45.1351566 26.802716,45.1351566 Z M26.802716,38.5601566 C35.5716172,38.5601566 42.680216,31.4461479 42.680216,22.6705733 C42.680216,13.8949988 35.5716172,6.78098998 26.802716,6.78098998 C18.0338149,6.78098998 10.925216,13.8949988 10.925216,22.6705733 C10.925216,31.4461479 18.0338149,38.5601566 26.802716,38.5601566 Z" id="Oval-190" fill="#A3B1BF"></path>
<path d="M37.5685802,6.47400902 C37.5685802,6.47400902 40.3560433,8.0639828 43.0005786,12.4958138 C45.6451139,16.9276447 45.9870813,21.4863845 45.9870813,21.4863845" id="Line" stroke="#F7FAFC" stroke-width="1.62" stroke-linecap="round"></path>
<g id="Oval-199">
<use fill="black" fill-opacity="1" filter="url(#filter-56)" xlink:href="#path-55"></use>
<use fill="#A3B1BF" fill-rule="evenodd" xlink:href="#path-55"></use>
</g>
<path d="M27.0403924,24.1861178 C28.3842853,24.1861178 29.4737257,23.0958483 29.4737257,21.7509326 C29.4737257,20.406017 28.3842853,19.3157475 27.0403924,19.3157475 C27.0403924,19.3157475 27.6699621,20.406017 27.6699621,21.7509326 C27.6699621,23.0958483 27.0403924,24.1861178 27.0403924,24.1861178 Z" id="Oval-199" fill="#F7FAFC" transform="translate(28.257059, 21.750933) rotate(-43.000000) translate(-28.257059, -21.750933) "></path>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 54 KiB

1
aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/wwwroot/assets/logo.svg

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200" version="1.1" viewBox="0 0 200 200"><title>Group 28 Copy 5</title><desc>Created with Sketch.</desc><defs><linearGradient id="linearGradient-1" x1="62.102%" x2="108.197%" y1="0%" y2="37.864%"><stop offset="0%" stop-color="#4285EB"/><stop offset="100%" stop-color="#2EC7FF"/></linearGradient><linearGradient id="linearGradient-2" x1="69.644%" x2="54.043%" y1="0%" y2="108.457%"><stop offset="0%" stop-color="#29CDFF"/><stop offset="37.86%" stop-color="#148EFF"/><stop offset="100%" stop-color="#0A60FF"/></linearGradient><linearGradient id="linearGradient-3" x1="69.691%" x2="16.723%" y1="-12.974%" y2="117.391%"><stop offset="0%" stop-color="#FA816E"/><stop offset="41.473%" stop-color="#F74A5C"/><stop offset="100%" stop-color="#F51D2C"/></linearGradient><linearGradient id="linearGradient-4" x1="68.128%" x2="30.44%" y1="-35.691%" y2="114.943%"><stop offset="0%" stop-color="#FA8E7D"/><stop offset="51.264%" stop-color="#F74A5C"/><stop offset="100%" stop-color="#F51D2C"/></linearGradient></defs><g id="Page-1" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="logo" transform="translate(-20.000000, -20.000000)"><g id="Group-28-Copy-5" transform="translate(20.000000, 20.000000)"><g id="Group-27-Copy-3"><g id="Group-25" fill-rule="nonzero"><g id="2"><path id="Shape" fill="url(#linearGradient-1)" d="M91.5880863,4.17652823 L4.17996544,91.5127728 C-0.519240605,96.2081146 -0.519240605,103.791885 4.17996544,108.487227 L91.5880863,195.823472 C96.2872923,200.518814 103.877304,200.518814 108.57651,195.823472 L145.225487,159.204632 C149.433969,154.999611 149.433969,148.181924 145.225487,143.976903 C141.017005,139.771881 134.193707,139.771881 129.985225,143.976903 L102.20193,171.737352 C101.032305,172.906015 99.2571609,172.906015 98.0875359,171.737352 L28.285908,101.993122 C27.1162831,100.824459 27.1162831,99.050775 28.285908,97.8821118 L98.0875359,28.1378823 C99.2571609,26.9692191 101.032305,26.9692191 102.20193,28.1378823 L129.985225,55.8983314 C134.193707,60.1033528 141.017005,60.1033528 145.225487,55.8983314 C149.433969,51.69331 149.433969,44.8756232 145.225487,40.6706018 L108.58055,4.05574592 C103.862049,-0.537986846 96.2692618,-0.500797906 91.5880863,4.17652823 Z"/><path id="Shape" fill="url(#linearGradient-2)" d="M91.5880863,4.17652823 L4.17996544,91.5127728 C-0.519240605,96.2081146 -0.519240605,103.791885 4.17996544,108.487227 L91.5880863,195.823472 C96.2872923,200.518814 103.877304,200.518814 108.57651,195.823472 L145.225487,159.204632 C149.433969,154.999611 149.433969,148.181924 145.225487,143.976903 C141.017005,139.771881 134.193707,139.771881 129.985225,143.976903 L102.20193,171.737352 C101.032305,172.906015 99.2571609,172.906015 98.0875359,171.737352 L28.285908,101.993122 C27.1162831,100.824459 27.1162831,99.050775 28.285908,97.8821118 L98.0875359,28.1378823 C100.999864,25.6271836 105.751642,20.541824 112.729652,19.3524487 C117.915585,18.4685261 123.585219,20.4140239 129.738554,25.1889424 C125.624663,21.0784292 118.571995,14.0340304 108.58055,4.05574592 C103.862049,-0.537986846 96.2692618,-0.500797906 91.5880863,4.17652823 Z"/></g><path id="Shape" fill="url(#linearGradient-3)" d="M153.685633,135.854579 C157.894115,140.0596 164.717412,140.0596 168.925894,135.854579 L195.959977,108.842726 C200.659183,104.147384 200.659183,96.5636133 195.960527,91.8688194 L168.690777,64.7181159 C164.472332,60.5180858 157.646868,60.5241425 153.435895,64.7316526 C149.227413,68.936674 149.227413,75.7543607 153.435895,79.9593821 L171.854035,98.3623765 C173.02366,99.5310396 173.02366,101.304724 171.854035,102.473387 L153.685633,120.626849 C149.47715,124.83187 149.47715,131.649557 153.685633,135.854579 Z"/></g><ellipse id="Combined-Shape" cx="100.519" cy="100.437" fill="url(#linearGradient-4)" rx="23.6" ry="23.581"/></g></g></g></g></svg>

After

Width:  |  Height:  |  Size: 3.8 KiB

1
aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/wwwroot/css/site.css

File diff suppressed because one or more lines are too long

100
aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/wwwroot/data/activities.json

@ -0,0 +1,100 @@
[
{
"id": "trend-1",
"updatedAt": "2020-08-26T10:21:19.719Z",
"user": {
"name": "Qu Lili",
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/BiazfanxmamNRoxxVxka.png"
},
"group": {
"name": "Highly Compelling Design Team",
"link": "http://github.com/"
},
"project": {
"name": "June Version",
"link": "http://github.com/"
},
"template": "created a new project in @{group} @{project}"
},
{
"id": "trend-2",
"updatedAt": "2020-08-26T10:21:19.719Z",
"user": {
"name": "Fu Xiaoxiao",
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/cnrhVkzwxjPwAaCfPbdc.png"
},
"group": {
"name": "Highly Compelling Design Team",
"link": "http://github.com/"
},
"project": {
"name": "June Version",
"link": "http://github.com/"
},
"template": "created a new project in @{group} @{project}"
},
{
"id": "trend-3",
"updatedAt": "2020-08-26T10:21:19.719Z",
"user": {
"name": "Lin Dongdong",
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/gaOngJwsRYRaVAuXXcmB.png"
},
"group": {
"name": "Second Girls Group",
"link": "http://github.com/"
},
"project": {
"name": "June Version",
"link": "http://github.com/"
},
"template": "created a new project in @{group} @{project}"
},
{
"id": "trend-4",
"updatedAt": "2020-08-26T10:21:19.719Z",
"user": {
"name": "Zhou Xingxing",
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/WhxKECPNujWoWEFNdnJE.png"
},
"project": {
"name": "Daily iteration in May",
"link": "http://github.com/"
},
"template": "updated @{project} to the published state"
},
{
"id": "trend-5",
"updatedAt": "2020-08-26T10:21:19.719Z",
"user": {
"name": "Zhu",
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/ubnKSIfAJTxIgXOKlciN.png"
},
"project": {
"name": "Engineering Efficiency",
"link": "http://github.com/"
},
"comment": {
"name": "Leave a message",
"link": "http://github.com/"
},
"template": "posted a @{comment} on @{project}"
},
{
"id": "trend-6",
"updatedAt": "2020-08-26T10:21:19.719Z",
"user": {
"name": "Le Brother",
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/jZUIxmJycoymBprLOUbT.png"
},
"group": {
"name": "Programmers Daily",
"link": "http://github.com/"
},
"project": {
"name": "Brand Iteration",
"link": "http://github.com/"
},
"template": "created a new project in @{group} @{project}"
}
]

64
aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/wwwroot/data/advanced.json

@ -0,0 +1,64 @@
{
"advancedOperation1": [
{
"key": "op1",
"type": "Ordering relationship takes effect",
"name": "Qu Lili",
"status": "agree",
"updatedAt": "2017-10-03 19:23:12",
"memo": "-"
},
{
"key": "op2",
"type": "Financial Review",
"name": "Fu Xiaoxiao",
"status": "reject",
"updatedAt": "2017-10-03 19:23:12",
"memo": "Not passing the reason"
},
{
"key": "op3",
"type": "Departmental preliminary review",
"name": "Zhou Maomao",
"status": "agree",
"updatedAt": "2017-10-03 19:23:12",
"memo": "-"
},
{
"key": "op4",
"type": "Submit Order",
"name": "Lin Dongdong",
"status": "agree",
"updatedAt": "2017-10-03 19:23:12",
"memo": "很棒"
},
{
"key": "op5",
"type": "Create Order",
"name": "Sweaty",
"status": "agree",
"updatedAt": "2017-10-03 19:23:12",
"memo": "-"
}
],
"advancedOperation2": [
{
"key": "op1",
"type": "Order relationship takes effect",
"name": "Qu Lili",
"status": "agree",
"updatedAt": "2017-10-03 19:23:12",
"memo": "-"
}
],
"advancedOperation3": [
{
"key": "op1",
"type": "Create Order",
"name": "Sweat tooth",
"status": "agree",
"updatedAt": "2017-10-03 19:23:12",
"memo": "-"
}
]
}

78
aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/wwwroot/data/basic.json

@ -0,0 +1,78 @@
{
"basicGoods": [
{
"id": "1234561",
"name": "Mineral Water 550ml",
"barcode": "12421432143214321",
"price": "2.00",
"num": "1",
"amount": "2.00"
},
{
"id": "1234562",
"name": "Herbal tea 300ml",
"barcode": "12421432143214322",
"price": "3.00",
"num": "2",
"amount": "6.00"
},
{
"id": "1234563",
"name": "Delicious potato chips",
"barcode": "12421432143214323",
"price": "7.00",
"num": "4",
"amount": "28.00"
},
{
"id": "1234564",
"name": "Specially delicious egg rolls",
"barcode": "12421432143214324",
"price": "8.50",
"num": "3",
"amount": "25.50"
}
],
"basicProgress": [
{
"key": "1",
"time": "2017-10-01 14:10",
"rate": "Contact Clients",
"status": "Processing",
"operator": "Pickup Assistant ID1234",
"cost": "5mins"
},
{
"key": "2",
"time": "2017-10-01 14:05",
"rate": "Pickup Guy Departs",
"status": "Success",
"operator": "Pickup Assistant ID1234",
"cost": "1h"
},
{
"key": "3",
"time": "2017-10-01 13:05",
"rate": "Pick-up person takes orders",
"status": "Success",
"operator": "Pickup Assistant ID1234",
"cost": "5mins"
},
{
"key": "4",
"time": "2017-10-01 13:00",
"rate": "Apply For Approval",
"status": "Success",
"operator": "system",
"cost": "1h"
},
{
"key": "5",
"time": "2017-10-01 12:00",
"rate": "Initiated a Return Request",
"status": "Success",
"operator": "user",
"cost": "5mins"
}
]
}

50
aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/wwwroot/data/current_user.json

@ -0,0 +1,50 @@
{
"name": "Serati Ma",
"avatar": "https://gw.alipayobjects.com/zos/antfincdn/XAosXuNZyF/BiazfanxmamNRoxxVxka.png",
"userid": "00000001",
"email": "antdesign@alipay.com",
"signature": "Be tolerant to diversity, tolerance is a virtue",
"title": "Interaction Expert",
"group": "Ant Financial Services-XX Business Group-XX Platform Department-XX Technology Department-UED",
"tags": [
{
"key": "0",
"label": "Very thoughtful"
},
{
"key": "1",
"label": "Focus on Design"
},
{
"key": "2",
"label": "Spicy ~"
},
{
"key": "3",
"label": "Long legs"
},
{
"key": "4",
"label": "Chuan Meizi"
},
{
"key": "5",
"label": "Have inclusive of all rivers"
}
],
"notifyCount": 12,
"unreadCount": 11,
"country": "China",
"geographic": {
"province": {
"label": "Zhejiang Province",
"key": "330000"
},
"city": {
"label": "Hangzhou City",
"key": "330100"
}
},
"address": "77 Gongzhuan Road, Xihu District",
"phone": "0752-268888888"
}

799
aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/wwwroot/data/fake_chart_data.json

@ -0,0 +1,799 @@
{
"visitData": [
{
"x": "2020-08-25",
"y": 7
},
{
"x": "2020-08-26",
"y": 5
},
{
"x": "2020-08-27",
"y": 4
},
{
"x": "2020-08-28",
"y": 2
},
{
"x": "2020-08-29",
"y": 4
},
{
"x": "2020-08-30",
"y": 7
},
{
"x": "2020-08-31",
"y": 5
},
{
"x": "2020-09-01",
"y": 6
},
{
"x": "2020-09-02",
"y": 5
},
{
"x": "2020-09-03",
"y": 9
},
{
"x": "2020-09-04",
"y": 6
},
{
"x": "2020-09-05",
"y": 3
},
{
"x": "2020-09-06",
"y": 1
},
{
"x": "2020-09-07",
"y": 5
},
{
"x": "2020-09-08",
"y": 3
},
{
"x": "2020-09-09",
"y": 6
},
{
"x": "2020-09-10",
"y": 5
}
],
"visitData2": [
{
"x": "2020-08-25",
"y": 1
},
{
"x": "2020-08-26",
"y": 6
},
{
"x": "2020-08-27",
"y": 4
},
{
"x": "2020-08-28",
"y": 8
},
{
"x": "2020-08-29",
"y": 3
},
{
"x": "2020-08-30",
"y": 7
},
{
"x": "2020-08-31",
"y": 2
}
],
"salesData": [
{
"x": "January",
"y": 1003
},
{
"x": "February",
"y": 878
},
{
"x": "March",
"y": 408
},
{
"x": "April",
"y": 426
},
{
"x": "May",
"y": 357
},
{
"x": "June",
"y": 1056
},
{
"x": "July",
"y": 369
},
{
"x": "August",
"y": 284
},
{
"x": "September",
"y": 1173
},
{
"x": "October",
"y": 639
},
{
"x": "November",
"y": 1117
},
{
"x": "December",
"y": 512
}
],
"searchData": [
{
"index": 1,
"keyword": "Search Keyword-0",
"count": 190,
"range": 64,
"status": 1
},
{
"index": 2,
"keyword": "Search Keyword-1",
"count": 347,
"range": 19,
"status": 0
},
{
"index": 3,
"keyword": "Search Keyword-2",
"count": 314,
"range": 35,
"status": 1
},
{
"index": 4,
"keyword": "Search Keyword-3",
"count": 81,
"range": 59,
"status": 1
},
{
"index": 5,
"keyword": "Search Keyword-4",
"count": 235,
"range": 16,
"status": 1
},
{
"index": 6,
"keyword": "Search Keyword-5",
"count": 834,
"range": 46,
"status": 0
},
{
"index": 7,
"keyword": "Search Keyword-6",
"count": 806,
"range": 45,
"status": 1
},
{
"index": 8,
"keyword": "Search Keywords-7",
"count": 116,
"range": 96,
"status": 1
},
{
"index": 9,
"keyword": "Search Keyword-8",
"count": 355,
"range": 44,
"status": 1
},
{
"index": 10,
"keyword": "Search keyword-9",
"count": 903,
"range": 91,
"status": 0
},
{
"index": 11,
"keyword": "Search Keyword-10",
"count": 411,
"range": 64,
"status": 0
},
{
"index": 12,
"keyword": "Search Keyword-11",
"count": 266,
"range": 15,
"status": 1
},
{
"index": 13,
"keyword": "Search Keywords-12",
"count": 163,
"range": 59,
"status": 1
},
{
"index": 14,
"keyword": "Search Keyword-13",
"count": 815,
"range": 30,
"status": 1
},
{
"index": 15,
"keyword": "Search keyword-14",
"count": 130,
"range": 35,
"status": 1
},
{
"index": 16,
"keyword": "Search Keyword-15",
"count": 342,
"range": 8,
"status": 1
},
{
"index": 17,
"keyword": "Search Keyword-16",
"count": 970,
"range": 90,
"status": 1
},
{
"index": 18,
"keyword": "Search Keyword-17",
"count": 613,
"range": 24,
"status": 0
},
{
"index": 19,
"keyword": "Search Keyword-18",
"count": 807,
"range": 23,
"status": 1
},
{
"index": 20,
"keyword": "Search Keyword-19",
"count": 480,
"range": 21,
"status": 1
},
{
"index": 21,
"keyword": "Search Keyword-20",
"count": 57,
"range": 82,
"status": 0
},
{
"index": 22,
"keyword": "Search Keyword-21",
"count": 513,
"range": 89,
"status": 0
},
{
"index": 23,
"keyword": "Search Keyword-22",
"count": 733,
"range": 62,
"status": 1
},
{
"index": 24,
"keyword": "Search Keyword-23",
"count": 887,
"range": 82,
"status": 1
},
{
"index": 25,
"keyword": "Search Keyword-24",
"count": 668,
"range": 9,
"status": 0
},
{
"index": 26,
"keyword": "Search Keyword-25",
"count": 398,
"range": 99,
"status": 1
},
{
"index": 27,
"keyword": "Search Keyword-26",
"count": 73,
"range": 48,
"status": 1
},
{
"index": 28,
"keyword": "Search Keyword-27",
"count": 63,
"range": 53,
"status": 1
},
{
"index": 29,
"keyword": "Search Keywords-28",
"count": 23,
"range": 32,
"status": 1
},
{
"index": 30,
"keyword": "Search Keywords-29",
"count": 650,
"range": 48,
"status": 0
},
{
"index": 31,
"keyword": "Search Keyword-30",
"count": 752,
"range": 13,
"status": 1
},
{
"index": 32,
"keyword": "Search Keyword-31",
"count": 571,
"range": 0,
"status": 0
},
{
"index": 33,
"keyword": "Search Keyword-32",
"count": 778,
"range": 33,
"status": 1
},
{
"index": 34,
"keyword": "Search Keyword-33",
"count": 537,
"range": 1,
"status": 1
},
{
"index": 35,
"keyword": "Search keyword -34",
"count": 467,
"range": 17,
"status": 0
},
{
"index": 36,
"keyword": "Search keyword -35",
"count": 106,
"range": 72,
"status": 0
},
{
"index": 37,
"keyword": "Search keyword -36",
"count": 984,
"range": 67,
"status": 0
},
{
"index": 38,
"keyword": "Search key word -37",
"count": 850,
"range": 7,
"status": 1
},
{
"index": 39,
"keyword": "Search Keyword-38",
"count": 475,
"range": 46,
"status": 1
},
{
"index": 40,
"keyword": "Search Keyword-39",
"count": 943,
"range": 38,
"status": 0
},
{
"index": 41,
"keyword": "Search Keyword-40",
"count": 915,
"range": 37,
"status": 1
},
{
"index": 42,
"keyword": "Search Keyword-41",
"count": 852,
"range": 67,
"status": 0
},
{
"index": 43,
"keyword": "Search Keyword-42",
"count": 21,
"range": 29,
"status": 1
},
{
"index": 44,
"keyword": "Search Keyword-43",
"count": 224,
"range": 25,
"status": 0
},
{
"index": 45,
"keyword": "Search Keyword-44",
"count": 904,
"range": 23,
"status": 0
},
{
"index": 46,
"keyword": "Search Keyword-45",
"count": 240,
"range": 39,
"status": 0
},
{
"index": 47,
"keyword": "Search Keyword-46",
"count": 735,
"range": 33,
"status": 0
},
{
"index": 48,
"keyword": "Search Keyword-47",
"count": 612,
"range": 15,
"status": 1
},
{
"index": 49,
"keyword": "Search Keyword-48",
"count": 877,
"range": 62,
"status": 1
},
{
"index": 50,
"keyword": "Search Keyword-49",
"count": 146,
"range": 48,
"status": 1
}
],
"offlineData": [
{
"name": "Stores 0",
"cvr": 0.8
},
{
"name": "Stores 1",
"cvr": 0.7
},
{
"name": "Stores 2",
"cvr": 0.4
},
{
"name": "Stores 3",
"cvr": 0.3
},
{
"name": "Stores 4",
"cvr": 0.1
},
{
"name": "Stores 5",
"cvr": 0.1
},
{
"name": "Stores 6",
"cvr": 0.6
},
{
"name": "Stores 7",
"cvr": 0.9
},
{
"name": "Stores 8",
"cvr": 0.3
},
{
"name": "Stores 9",
"cvr": 0.9
}
],
"offlineChartData": [
{
"x": 1598358002462,
"y1": 63,
"y2": 21
},
{
"x": 1598359802462,
"y1": 50,
"y2": 73
},
{
"x": 1598361602462,
"y1": 35,
"y2": 99
},
{
"x": 1598363402462,
"y1": 105,
"y2": 105
},
{
"x": 1598365202462,
"y1": 86,
"y2": 22
},
{
"x": 1598367002462,
"y1": 90,
"y2": 47
},
{
"x": 1598368802462,
"y1": 41,
"y2": 44
},
{
"x": 1598370602462,
"y1": 71,
"y2": 16
},
{
"x": 1598372402462,
"y1": 63,
"y2": 72
},
{
"x": 1598374202462,
"y1": 95,
"y2": 35
},
{
"x": 1598376002462,
"y1": 14,
"y2": 54
},
{
"x": 1598377802462,
"y1": 48,
"y2": 65
},
{
"x": 1598379602462,
"y1": 84,
"y2": 28
},
{
"x": 1598381402462,
"y1": 41,
"y2": 74
},
{
"x": 1598383202462,
"y1": 37,
"y2": 38
},
{
"x": 1598385002462,
"y1": 106,
"y2": 94
},
{
"x": 1598386802462,
"y1": 70,
"y2": 53
},
{
"x": 1598388602462,
"y1": 48,
"y2": 89
},
{
"x": 1598390402462,
"y1": 60,
"y2": 12
},
{
"x": 1598392202462,
"y1": 48,
"y2": 52
}
],
"salesTypeData": [
{
"x": "Household Appliance",
"y": 4544
},
{
"x": "Food and Drink",
"y": 3321
},
{
"x": "Personal Health",
"y": 3113
},
{
"x": "Clothing bags",
"y": 2341
},
{
"x": "Maternal and Child Products",
"y": 1231
},
{
"x": "other",
"y": 1231
}
],
"salesTypeDataOnline": [
{
"x": "Household Appliances",
"y": 244
},
{
"x": "Eating wine",
"y": 321
},
{
"x": "Note Health",
"y": 311
},
{
"x": "Clothing Bags",
"y": 41
},
{
"x": "Mother and Baby Products",
"y": 121
},
{
"x": "other",
"y": 111
}
],
"salesTypeDataOffline": [
{
"x": "Household Appliances",
"y": 99
},
{
"x": "Food and Drink",
"y": 188
},
{
"x": "Personal Health",
"y": 344
},
{
"x": "Clothing Bags",
"y": 255
},
{
"x": "other",
"y": 65
}
],
"radarData": [
{
"name": "personal",
"label": "Quote",
"value": 10
},
{
"name": "personal",
"label": "Word of mouth",
"value": 8
},
{
"name": "personal",
"label": "Yield",
"value": 4
},
{
"name": "personal",
"label": "contribution",
"value": 5
},
{
"name": "personal",
"label": "heat",
"value": 7
},
{
"name": "team",
"label": "Quote",
"value": 3
},
{
"name": "team",
"label": "Word of mouth",
"value": 9
},
{
"name": "team",
"label": "Yield",
"value": 6
},
{
"name": "team",
"label": "contribution",
"value": 3
},
{
"name": "team",
"label": "heat",
"value": 1
},
{
"name": "department",
"label": "Quote",
"value": 4
},
{
"name": "department",
"label": "Word of mouth",
"value": 1
},
{
"name": "department",
"label": "Yield",
"value": 6
},
{
"name": "department",
"label": "contribution",
"value": 5
},
{
"name": "department",
"label": "heat",
"value": 7
}
]
}

762
aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/wwwroot/data/fake_list.json

@ -0,0 +1,762 @@
[
{
"id": "fake-list-0",
"owner": "Fu Xiaoxiao",
"title": "Alipay",
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/WdGqmHpayyMjiEhcKoVE.png",
"cover": "https://gw.alipayobjects.com/zos/rmsportal/uMfMFlvUuceEyPpotzlq.png",
"status": "active",
"percent": 61,
"logo": "https://gw.alipayobjects.com/zos/rmsportal/WdGqmHpayyMjiEhcKoVE.png",
"href": "https://ant.design",
"updatedAt": 1599562134333,
"createdAt": 1599562134333,
"subDescription": "It's an inner thing, which they can't reach and can't reach",
"description": "In the development process of Zhongtai products, different design specifications and implementation methods will appear, but there are often many similar pages and components, and these similar components will be separated into a set of standard specifications.",
"activeUser": 194692,
"newUser": 1107,
"star": 168,
"like": 166,
"message": 20,
"content": "Paragraph: Ant.design, the design platform of Ant Financial, seamlessly connects to the ecosystem of Ant Financial with minimal workload, and provides experience solutions that span design and development. Ant.design, the design platform of Ant Financial, uses the smallestWorkload, seamless access to Ant Financial's ecology, providing experience solutions that span design and development.",
"members": [
{
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/ZiESqWwCXBRQoaPONSJe.png",
"name": "Qu Lili",
"id": "member1"
},
{
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/tBOxZPlITHqwlGjsJWaF.png",
"name": "Wang Zhaojun",
"id": "member2"
},
{
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/sBxjgqiuHMGRkIjqlQCd.png",
"name": "Dong Nana",
"id": "member3"
}
]
},
{
"id": "fake-list-1",
"owner": "Qu Lili",
"title": "Angular",
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/zOsKZmFRdUtvpqCImOVY.png",
"cover": "https://gw.alipayobjects.com/zos/rmsportal/iZBVOIhGJiAnhplqjvZW.png",
"status": "exception",
"percent": 67,
"logo": "https://gw.alipayobjects.com/zos/rmsportal/zOsKZmFRdUtvpqCImOVY.png",
"href": "https://ant.design",
"updatedAt": 1599554934333,
"createdAt": 1599554934333,
"subDescription": "Hope is a good thing, maybe the best, good things will not die out",
"description": "In the development process of Zhongtai products, different design specifications and implementation methods will appear, but there are often many similar pages and components, and these similar components will be separated into a set of standard specifications.",
"activeUser": 187530,
"newUser": 1662,
"star": 184,
"like": 134,
"message": 20,
"content": "Paragraph: Ant.design, the design platform of Ant Financial, seamlessly connects to the ecosystem of Ant Financial with minimal workload, and provides experience solutions that span design and development. Ant.design, the design platform of Ant Financial, uses the smallestWorkload, seamless access to Ant Financial's ecology, providing experience solutions that span design and development.",
"members": [
{
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/ZiESqWwCXBRQoaPONSJe.png",
"name": "Qu Lili",
"id": "member1"
},
{
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/tBOxZPlITHqwlGjsJWaF.png",
"name": "Wang Zhaojun",
"id": "member2"
},
{
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/sBxjgqiuHMGRkIjqlQCd.png",
"name": "Dong Nana",
"id": "member3"
}
]
},
{
"id": "fake-list-2",
"owner": "Lin Dongdong",
"title": "Ant Design",
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/dURIMkkrRFpPgTuzkwnB.png",
"cover": "https://gw.alipayobjects.com/zos/rmsportal/iXjVmWVHbCJAyqvDxdtx.png",
"status": "normal",
"percent": 88,
"logo": "https://gw.alipayobjects.com/zos/rmsportal/dURIMkkrRFpPgTuzkwnB.png",
"href": "https://ant.design",
"updatedAt": 1599547734333,
"createdAt": 1599547734333,
"subDescription": "Life is like a box of chocolates, the results are often unexpected",
"description": "In the development process of Zhongtai products, different design specifications and implementation methods will appear, but there are often many similar pages and components, and these similar components will be separated into a set of standard specifications.",
"activeUser": 150552,
"newUser": 1281,
"star": 114,
"like": 124,
"message": 20,
"content": "Paragraph: Ant.design, the design platform of Ant Financial, seamlessly connects to the ecosystem of Ant Financial with minimal workload, and provides experience solutions that span design and development. Ant.design, the design platform of Ant Financial, uses the smallestWorkload, seamless access to Ant Financial's ecology, providing experience solutions that span design and development.",
"members": [
{
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/ZiESqWwCXBRQoaPONSJe.png",
"name": "Qu Lili",
"id": "member1"
},
{
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/tBOxZPlITHqwlGjsJWaF.png",
"name": "Wang Zhaojun",
"id": "member2"
},
{
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/sBxjgqiuHMGRkIjqlQCd.png",
"name": "Dong Nana",
"id": "member3"
}
]
},
{
"id": "fake-list-3",
"owner": "Zhou Xingxing",
"title": "Ant Design Pro",
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/sfjbOqnsXXJgNCjCzDBL.png",
"cover": "https://gw.alipayobjects.com/zos/rmsportal/gLaIAoVWTtLbBWZNYEMg.png",
"status": "active",
"percent": 59,
"logo": "https://gw.alipayobjects.com/zos/rmsportal/sfjbOqnsXXJgNCjCzDBL.png",
"href": "https://ant.design",
"updatedAt": 1599540534333,
"createdAt": 1599540534333,
"subDescription": "There are so many pubs in the town, but she just walked into my pub",
"description": "In the development process of middle and Taiwan products, different design specifications and implementation methods will appear, but there are often many similar pages and components, and these similar components will be separated into a set of standard specifications.",
"activeUser": 180730,
"newUser": 1941,
"star": 109,
"like": 120,
"message": 13,
"content": "Paragraph: Ant.design, the design platform of Ant Financial, seamlessly connects to the ecosystem of Ant Financial with minimal workload, and provides experience solutions that span design and development. Ant.design, the design platform of Ant Financial, uses the smallestWorkload, seamless access to Ant Financial's ecology, providing experience solutions that span design and development.",
"members": [
{
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/ZiESqWwCXBRQoaPONSJe.png",
"name": "Qu Lili",
"id": "member1"
},
{
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/tBOxZPlITHqwlGjsJWaF.png",
"name": "Wang Zhaojun",
"id": "member2"
},
{
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/sBxjgqiuHMGRkIjqlQCd.png",
"name": "Dong Nana",
"id": "member3"
}
]
},
{
"id": "fake-list-4",
"owner": "Wu Jiahao",
"title": "Bootstrap",
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/siCrBXXhmvTQGWPNLBow.png",
"cover": "https://gw.alipayobjects.com/zos/rmsportal/gLaIAoVWTtLbBWZNYEMg.png",
"status": "exception",
"percent": 83,
"logo": "https://gw.alipayobjects.com/zos/rmsportal/siCrBXXhmvTQGWPNLBow.png",
"href": "https://ant.design",
"updatedAt": 1599533334333,
"createdAt": 1599533334333,
"subDescription": "At that time I only thought about what I wanted, never wanted what I had",
"description": "In the development process of Zhongtai products, different design specifications and implementation methods will appear, but there are often many similar pages and components, and these similar components will be separated into a set of standard specifications.",
"activeUser": 159357,
"newUser": 1067,
"star": 139,
"like": 179,
"message": 14,
"content": "Paragraph: Ant.design, the design platform of Ant Financial, seamlessly connects to the ecosystem of Ant Financial with minimal workload, and provides experience solutions that span design and development. Ant.design, the design platform of Ant Financial, uses the smallestWorkload, seamless access to Ant Financial's ecology, providing experience solutions that span design and development.",
"members": [
{
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/ZiESqWwCXBRQoaPONSJe.png",
"name": "Qu Lili",
"id": "member1"
},
{
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/tBOxZPlITHqwlGjsJWaF.png",
"name": "Wang Zhaojun",
"id": "member2"
},
{
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/sBxjgqiuHMGRkIjqlQCd.png",
"name": "Dong Nana",
"id": "member3"
}
]
},
{
"id": "fake-list-5",
"owner": "Zhu Fang You",
"title": "React",
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/kZzEzemZyKLKFsojXItE.png",
"cover": "https://gw.alipayobjects.com/zos/rmsportal/iXjVmWVHbCJAyqvDxdtx.png",
"status": "normal",
"percent": 92,
"logo": "https://gw.alipayobjects.com/zos/rmsportal/kZzEzemZyKLKFsojXItE.png",
"href": "https://ant.design",
"updatedAt": 1599526134333,
"createdAt": 1599526134333,
"subDescription": "It's an inner thing, which they can't reach and can't reach",
"description": "In the development process of Zhongtai products, different design specifications and implementation methods will appear, but there are often many similar pages and components, and these similar components will be separated into a set of standard specifications.",
"activeUser": 126480,
"newUser": 1467,
"star": 151,
"like": 171,
"message": 11,
"content": "Paragraph: Ant.design, the design platform of Ant Financial, seamlessly connects to the ecosystem of Ant Financial with minimal workload, and provides experience solutions that span design and development. Ant.design, the design platform of Ant Financial, uses the smallestWorkload, seamless access to Ant Financial's ecology, providing experience solutions that span design and development.",
"members": [
{
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/ZiESqWwCXBRQoaPONSJe.png",
"name": "Qu Lili",
"id": "member1"
},
{
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/tBOxZPlITHqwlGjsJWaF.png",
"name": "Wang Zhaojun",
"id": "member2"
},
{
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/sBxjgqiuHMGRkIjqlQCd.png",
"name": "Dong Nana",
"id": "member3"
}
]
},
{
"id": "fake-list-6",
"owner": "Fish Sauce",
"title": "Vue",
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/ComBAopevLwENQdKWiIn.png",
"cover": "https://gw.alipayobjects.com/zos/rmsportal/iZBVOIhGJiAnhplqjvZW.png",
"status": "active",
"percent": 62,
"logo": "https://gw.alipayobjects.com/zos/rmsportal/ComBAopevLwENQdKWiIn.png",
"href": "https://ant.design",
"updatedAt": 1599518934333,
"createdAt": 1599518934333,
"subDescription": "Hope is a good thing, maybe the best, good things will not die out",
"description": "In the development process of Zhongtai products, different design specifications and implementation methods will appear, but there are often many similar pages and components, and these similar components will be separated into a set of standard specifications.",
"activeUser": 132662,
"newUser": 1788,
"star": 114,
"like": 115,
"message": 14,
"content": "Paragraph: Ant.design, the design platform of Ant Financial, seamlessly connects to the ecosystem of Ant Financial with minimal workload, and provides experience solutions that span design and development. Ant.design, the design platform of Ant Financial, uses the smallestWorkload, seamless access to Ant Financial's ecology, providing experience solutions that span design and development.",
"members": [
{
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/ZiESqWwCXBRQoaPONSJe.png",
"name": "Qu Lili",
"id": "member1"
},
{
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/tBOxZPlITHqwlGjsJWaF.png",
"name": "Wang Zhaojun",
"id": "member2"
},
{
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/sBxjgqiuHMGRkIjqlQCd.png",
"name": "Dong Nana",
"id": "member3"
}
]
},
{
"id": "fake-list-7",
"owner": "Le Brother",
"title": "Webpack",
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/nxkuOJlFJuAUhzlMTCEe.png",
"cover": "https://gw.alipayobjects.com/zos/rmsportal/uMfMFlvUuceEyPpotzlq.png",
"status": "exception",
"percent": 98,
"logo": "https://gw.alipayobjects.com/zos/rmsportal/nxkuOJlFJuAUhzlMTCEe.png",
"href": "https://ant.design",
"updatedAt": 1599511734333,
"createdAt": 1599511734333,
"subDescription": "Life is like a box of chocolates, the results are often unexpected",
"description": "In the development process of Zhongtai products, different design specifications and implementation methods will appear, but there are often many similar pages and components, and these similar components will be separated into a set of standard specifications.",
"activeUser": 190515,
"newUser": 1329,
"star": 105,
"like": 192,
"message": 11,
"content": "Paragraph: Ant.design, the design platform of Ant Financial, seamlessly connects to the ecosystem of Ant Financial with minimal workload, and provides experience solutions that span design and development. Ant.design, the design platform of Ant Financial, uses the smallestWorkload, seamless access to Ant Financial's ecology, providing experience solutions that span design and development.",
"members": [
{
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/ZiESqWwCXBRQoaPONSJe.png",
"name": "Qu Lili",
"id": "member1"
},
{
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/tBOxZPlITHqwlGjsJWaF.png",
"name": "Wang Zhaojun",
"id": "member2"
},
{
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/sBxjgqiuHMGRkIjqlQCd.png",
"name": "Dong Nana",
"id": "member3"
}
]
},
{
"id": "fake-list-8",
"owner": "Tan Xiaoyi",
"title": "Alipay",
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/WdGqmHpayyMjiEhcKoVE.png",
"cover": "https://gw.alipayobjects.com/zos/rmsportal/uMfMFlvUuceEyPpotzlq.png",
"status": "normal",
"percent": 73,
"logo": "https://gw.alipayobjects.com/zos/rmsportal/WdGqmHpayyMjiEhcKoVE.png",
"href": "https://ant.design",
"updatedAt": 1599504534333,
"createdAt": 1599504534333,
"subDescription": "There are so many pubs in the town, but she just walked into my pub",
"description": "In the development process of Zhongtai products, different design specifications and implementation methods will appear, but there are often many similar pages and components, and these similar components will be separated into a set of standard specifications.",
"activeUser": 146120,
"newUser": 1375,
"star": 144,
"like": 114,
"message": 14,
"content": "Paragraph: Ant.design, the design platform of Ant Financial, seamlessly connects to the ecosystem of Ant Financial with minimal workload, and provides experience solutions that span design and development. Ant.design, the design platform of Ant Financial, uses the smallestWorkload, seamless access to Ant Financial's ecology, providing experience solutions that span design and development.",
"members": [
{
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/ZiESqWwCXBRQoaPONSJe.png",
"name": "Qu Lili",
"id": "member1"
},
{
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/tBOxZPlITHqwlGjsJWaF.png",
"name": "Wang Zhaojun",
"id": "member2"
},
{
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/sBxjgqiuHMGRkIjqlQCd.png",
"name": "Dong Nana",
"id": "member3"
}
]
},
{
"id": "fake-list-9",
"owner": "Zhong Ni",
"title": "Angular",
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/zOsKZmFRdUtvpqCImOVY.png",
"cover": "https://gw.alipayobjects.com/zos/rmsportal/iZBVOIhGJiAnhplqjvZW.png",
"status": "active",
"percent": 86,
"logo": "https://gw.alipayobjects.com/zos/rmsportal/zOsKZmFRdUtvpqCImOVY.png",
"href": "https://ant.design",
"updatedAt": 1599497334333,
"createdAt": 1599497334333,
"subDescription": "At that time I only thought about what I wanted, never wanted what I had",
"description": "In the development process of Zhongtai products, different design specifications and implementation methods will appear, but there are often many similar pages and components, and these similar components will be separated into a set of standard specifications.",
"activeUser": 150379,
"newUser": 1405,
"star": 174,
"like": 123,
"message": 20,
"content": "Paragraph: Ant.design, the design platform of Ant Financial, seamlessly connects to the ecosystem of Ant Financial with minimal workload, and provides experience solutions that span design and development. Ant.design, the design platform of Ant Financial, uses the smallestWorkload, seamless access to Ant Financial's ecology, providing experience solutions that span design and development.",
"members": [
{
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/ZiESqWwCXBRQoaPONSJe.png",
"name": "Qu Lili",
"id": "member1"
},
{
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/tBOxZPlITHqwlGjsJWaF.png",
"name": "Wang Zhaojun",
"id": "member2"
},
{
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/sBxjgqiuHMGRkIjqlQCd.png",
"name": "Dong Nana",
"id": "member3"
}
]
},
{
"id": "fake-list-10",
"owner": "Fu Xiaoxiao",
"title": "Ant Design",
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/dURIMkkrRFpPgTuzkwnB.png",
"cover": "https://gw.alipayobjects.com/zos/rmsportal/iXjVmWVHbCJAyqvDxdtx.png",
"status": "exception",
"percent": 99,
"logo": "https://gw.alipayobjects.com/zos/rmsportal/dURIMkkrRFpPgTuzkwnB.png",
"href": "https://ant.design",
"updatedAt": 1599490134333,
"createdAt": 1599490134333,
"subDescription": "It's an inner thing, which they can't reach and can't reach",
"description": "In the development process of Zhongtai products, different design specifications and implementation methods will appear, but there are often many similar pages and components, and these similar components will be separated into a set of standard specifications.",
"activeUser": 192197,
"newUser": 1748,
"star": 200,
"like": 141,
"message": 20,
"content": "Paragraph: Ant.design, the design platform of Ant Financial, seamlessly connects to the ecosystem of Ant Financial with minimal workload, and provides experience solutions that span design and development. Ant.design, the design platform of Ant Financial, uses the smallestWorkload, seamless access to Ant Financial's ecology, providing experience solutions that span design and development.",
"members": [
{
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/ZiESqWwCXBRQoaPONSJe.png",
"name": "Qu Lili",
"id": "member1"
},
{
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/tBOxZPlITHqwlGjsJWaF.png",
"name": "Wang Zhaojun",
"id": "member2"
},
{
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/sBxjgqiuHMGRkIjqlQCd.png",
"name": "Dong Nana",
"id": "member3"
}
]
},
{
"id": "fake-list-11",
"owner": "Qu Lili",
"title": "Ant Design Pro",
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/sfjbOqnsXXJgNCjCzDBL.png",
"cover": "https://gw.alipayobjects.com/zos/rmsportal/gLaIAoVWTtLbBWZNYEMg.png",
"status": "normal",
"percent": 55,
"logo": "https://gw.alipayobjects.com/zos/rmsportal/sfjbOqnsXXJgNCjCzDBL.png",
"href": "https://ant.design",
"updatedAt": 1599482934333,
"createdAt": 1599482934333,
"subDescription": "Hope is a good thing, maybe the best, good things will not die out",
"description": "In the development process of Zhongtai products, different design specifications and implementation methods will appear, but there are often many similar pages and components, and these similar components will be separated into a set of standard specifications.",
"activeUser": 125408,
"newUser": 1937,
"star": 158,
"like": 183,
"message": 17,
"content": "Paragraph: Ant.design, the design platform of Ant Financial, seamlessly connects to the ecosystem of Ant Financial with minimal workload, and provides experience solutions that span design and development. Ant.design, the design platform of Ant Financial, uses the smallestWorkload, seamless access to Ant Financial's ecology, providing experience solutions that span design and development.",
"members": [
{
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/ZiESqWwCXBRQoaPONSJe.png",
"name": "Qu Lili",
"id": "member1"
},
{
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/tBOxZPlITHqwlGjsJWaF.png",
"name": "Wang Zhaojun",
"id": "member2"
},
{
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/sBxjgqiuHMGRkIjqlQCd.png",
"name": "Dong Nana",
"id": "member3"
}
]
},
{
"id": "fake-list-12",
"owner": "Lin Dongdong",
"title": "Bootstrap",
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/siCrBXXhmvTQGWPNLBow.png",
"cover": "https://gw.alipayobjects.com/zos/rmsportal/gLaIAoVWTtLbBWZNYEMg.png",
"status": "active",
"percent": 62,
"logo": "https://gw.alipayobjects.com/zos/rmsportal/siCrBXXhmvTQGWPNLBow.png",
"href": "https://ant.design",
"updatedAt": 1599475734333,
"createdAt": 1599475734333,
"subDescription": "Life is like a box of chocolates, the results are often unexpected",
"description": "In the development process of Zhongtai products, different design specifications and implementation methods will appear, but there are often many similar pages and components, and these similar components will be separated into a set of standard specifications.",
"activeUser": 150702,
"newUser": 1303,
"star": 143,
"like": 101,
"message": 20,
"content": "Paragraph: Ant.design, the design platform of Ant Financial, seamlessly connects to the ecosystem of Ant Financial with minimal workload, and provides experience solutions that span design and development. Ant.design, the design platform of Ant Financial, uses the smallestWorkload, seamless access to Ant Financial's ecology, providing experience solutions that span design and development.",
"members": [
{
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/ZiESqWwCXBRQoaPONSJe.png",
"name": "Qu Lili",
"id": "member1"
},
{
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/tBOxZPlITHqwlGjsJWaF.png",
"name": "Wang Zhaojun",
"id": "member2"
},
{
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/sBxjgqiuHMGRkIjqlQCd.png",
"name": "Dong Nana",
"id": "member3"
}
]
},
{
"id": "fake-list-13",
"owner": "Zhou Xingxing",
"title": "React",
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/kZzEzemZyKLKFsojXItE.png",
"cover": "https://gw.alipayobjects.com/zos/rmsportal/iXjVmWVHbCJAyqvDxdtx.png",
"status": "exception",
"percent": 87,
"logo": "https://gw.alipayobjects.com/zos/rmsportal/kZzEzemZyKLKFsojXItE.png",
"href": "https://ant.design",
"updatedAt": 1599468534333,
"createdAt": 1599468534333,
"subDescription": "There are so many pubs in the town, but she just walked into my pub",
"description": "In the development process of middle and Taiwan products, different design specifications and implementation methods will appear, but there are often many similar pages and components, and these similar components will be separated into a set of standard specifications.",
"activeUser": 106681,
"newUser": 1051,
"star": 124,
"like": 194,
"message": 17,
"content": "Paragraph: Ant.design, the design platform of Ant Financial, seamlessly connects to the ecosystem of Ant Financial with minimal workload, and provides experience solutions that span design and development. Ant.design, the design platform of Ant Financial, uses the smallestWorkload, seamless access to Ant Financial's ecology, providing experience solutions that span design and development.",
"members": [
{
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/ZiESqWwCXBRQoaPONSJe.png",
"name": "Qu Lili",
"id": "member1"
},
{
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/tBOxZPlITHqwlGjsJWaF.png",
"name": "Wang Zhaojun",
"id": "member2"
},
{
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/sBxjgqiuHMGRkIjqlQCd.png",
"name": "Dong Nana",
"id": "member3"
}
]
},
{
"id": "fake-list-14",
"owner": "Wu Jiahao",
"title": "Vue",
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/ComBAopevLwENQdKWiIn.png",
"cover": "https://gw.alipayobjects.com/zos/rmsportal/iZBVOIhGJiAnhplqjvZW.png",
"status": "normal",
"percent": 74,
"logo": "https://gw.alipayobjects.com/zos/rmsportal/ComBAopevLwENQdKWiIn.png",
"href": "https://ant.design",
"updatedAt": 1599461334333,
"createdAt": 1599461334333,
"subDescription": "At that time I only thought about what I wanted, never wanted what I had",
"description": "In the development process of Zhongtai products, different design specifications and implementation methods will appear, but there are often many similar pages and components, and these similar components will be separated into a set of standard specifications.",
"activeUser": 192810,
"newUser": 1574,
"star": 188,
"like": 124,
"message": 16,
"content": "Paragraph: Ant.design, the design platform of Ant Financial, seamlessly connects to the ecosystem of Ant Financial with minimal workload, and provides experience solutions that span design and development. Ant.design, the design platform of Ant Financial, uses the smallestWorkload, seamless access to Ant Financial's ecology, providing experience solutions that span design and development.",
"members": [
{
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/ZiESqWwCXBRQoaPONSJe.png",
"name": "Qu Lili",
"id": "member1"
},
{
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/tBOxZPlITHqwlGjsJWaF.png",
"name": "Wang Zhaojun",
"id": "member2"
},
{
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/sBxjgqiuHMGRkIjqlQCd.png",
"name": "Dong Nana",
"id": "member3"
}
]
},
{
"id": "fake-list-15",
"owner": "Zhu Fang You",
"title": "Webpack",
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/nxkuOJlFJuAUhzlMTCEe.png",
"cover": "https://gw.alipayobjects.com/zos/rmsportal/uMfMFlvUuceEyPpotzlq.png",
"status": "active",
"percent": 58,
"logo": "https://gw.alipayobjects.com/zos/rmsportal/nxkuOJlFJuAUhzlMTCEe.png",
"href": "https://ant.design",
"updatedAt": 1599454134333,
"createdAt": 1599454134333,
"subDescription": "It's an inner thing, which they can't reach and can't reach",
"description": "In the development process of Zhongtai products, different design specifications and implementation methods will appear, but there are often many similar pages and components, and these similar components will be separated into a set of standard specifications.",
"activeUser": 129396,
"newUser": 1837,
"star": 106,
"like": 160,
"message": 13,
"content": "Paragraph: Ant.design, the design platform of Ant Financial, seamlessly connects to the ecosystem of Ant Financial with minimal workload, and provides experience solutions that span design and development. Ant.design, the design platform of Ant Financial, uses the smallestWorkload, seamless access to Ant Financial's ecology, providing experience solutions that span design and development.",
"members": [
{
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/ZiESqWwCXBRQoaPONSJe.png",
"name": "Qu Lili",
"id": "member1"
},
{
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/tBOxZPlITHqwlGjsJWaF.png",
"name": "Wang Zhaojun",
"id": "member2"
},
{
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/sBxjgqiuHMGRkIjqlQCd.png",
"name": "Dong Nana",
"id": "member3"
}
]
},
{
"id": "fake-list-16",
"owner": "Fish sauce",
"title": "Alipay",
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/WdGqmHpayyMjiEhcKoVE.png",
"cover": "https://gw.alipayobjects.com/zos/rmsportal/uMfMFlvUuceEyPpotzlq.png",
"status": "exception",
"percent": 77,
"logo": "https://gw.alipayobjects.com/zos/rmsportal/WdGqmHpayyMjiEhcKoVE.png",
"href": "https://ant.design",
"updatedAt": 1599446934333,
"createdAt": 1599446934333,
"subDescription": "Hope is a good thing, maybe the best, good things will not die out",
"description": "In the development process of Zhongtai products, different design specifications and implementation methods will appear, but there are often many similar pages and components, and these similar components will be separated into a set of standard specifications.",
"activeUser": 101826,
"newUser": 1050,
"star": 124,
"like": 111,
"message": 12,
"content": "Paragraph: Ant.design, the design platform of Ant Financial, seamlessly connects to the ecosystem of Ant Financial with minimal workload, and provides experience solutions that span design and development. Ant.design, the design platform of Ant Financial, uses the smallestWorkload, seamless access to Ant Financial's ecology, providing experience solutions that span design and development.",
"members": [
{
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/ZiESqWwCXBRQoaPONSJe.png",
"name": "Qu Lili",
"id": "member1"
},
{
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/tBOxZPlITHqwlGjsJWaF.png",
"name": "Wang Zhaojun",
"id": "member2"
},
{
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/sBxjgqiuHMGRkIjqlQCd.png",
"name": "Dong Nana",
"id": "member3"
}
]
},
{
"id": "fake-list-17",
"owner": "Le brother",
"title": "Angular",
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/zOsKZmFRdUtvpqCImOVY.png",
"cover": "https://gw.alipayobjects.com/zos/rmsportal/iZBVOIhGJiAnhplqjvZW.png",
"status": "normal",
"percent": 79,
"logo": "https://gw.alipayobjects.com/zos/rmsportal/zOsKZmFRdUtvpqCImOVY.png",
"href": "https://ant.design",
"updatedAt": 1599439734333,
"createdAt": 1599439734333,
"subDescription": "Life is like a box of chocolates, the results are often unexpected",
"description": "In the development process of Zhongtai products, different design specifications and implementation methods will appear, but there are often many similar pages and components, and these similar components will be separated into a set of standard specifications.",
"activeUser": 156853,
"newUser": 1826,
"star": 118,
"like": 136,
"message": 19,
"content": "Paragraph: Ant.design, the design platform of Ant Financial, seamlessly connects to the ecosystem of Ant Financial with minimal workload, and provides experience solutions that span design and development. Ant.design, the design platform of Ant Financial, uses the smallestWorkload, seamless access to Ant Financial's ecology, providing experience solutions that span design and development.",
"members": [
{
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/ZiESqWwCXBRQoaPONSJe.png",
"name": "Qu Lili",
"id": "member1"
},
{
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/tBOxZPlITHqwlGjsJWaF.png",
"name": "Wang Zhaojun",
"id": "member2"
},
{
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/sBxjgqiuHMGRkIjqlQCd.png",
"name": "Dong Na",
"id": "member3"
}
]
},
{
"id": "fake-list-18",
"owner": "Tan Xiaoyi",
"title": "Ant Design",
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/dURIMkkrRFpPgTuzkwnB.png",
"cover": "https://gw.alipayobjects.com/zos/rmsportal/iXjVmWVHbCJAyqvDxdtx.png",
"status": "active",
"percent": 77,
"logo": "https://gw.alipayobjects.com/zos/rmsportal/dURIMkkrRFpPgTuzkwnB.png",
"href": "https://ant.design",
"updatedAt": 1599432534333,
"createdAt": 1599432534333,
"subDescription": "There are so many pubs in the town, but she just walked into my pub",
"description": "In the development process of Zhongtai products, different design specifications and implementation methods will appear, but there are often many similar pages and components, and these similar components will be separated into a set of standard specifications.",
"activeUser": 101902,
"newUser": 1352,
"star": 131,
"like": 118,
"message": 12,
"content": "Paragraph: Ant.design, the design platform of Ant Financial, seamlessly connects to the ecosystem of Ant Financial with minimal workload, and provides experience solutions that span design and development. Ant.design, the design platform of Ant Financial, uses the smallestWorkload, seamless access to Ant Financial's ecology, providing experience solutions that span design and development.",
"members": [
{
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/ZiESqWwCXBRQoaPONSJe.png",
"name": "Qu Lili",
"id": "member1"
},
{
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/tBOxZPlITHqwlGjsJWaF.png",
"name": "Wang Zhaojun",
"id": "member2"
},
{
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/sBxjgqiuHMGRkIjqlQCd.png",
"name": "Dong Nana",
"id": "member3"
}
]
},
{
"id": "fake-list-19",
"owner": "Zoni",
"title": "Ant Design Pro",
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/sfjbOqnsXXJgNCjCzDBL.png",
"cover": "https://gw.alipayobjects.com/zos/rmsportal/gLaIAoVWTtLbBWZNYEMg.png",
"status": "exception",
"percent": 75,
"logo": "https://gw.alipayobjects.com/zos/rmsportal/sfjbOqnsXXJgNCjCzDBL.png",
"href": "https://ant.design",
"updatedAt": 1599425334333,
"createdAt": 1599425334333,
"subDescription": "At that time I only thought about what I wanted, never wanted what I had",
"description": "Different design specifications and implementations in the research and development of the MTD product, but there are often many similar pages and components, which will be detached into a standard specification.",
"activeUser": 125791,
"newUser": 1504,
"star": 174,
"like": 195,
"message": 17,
"content": "Paragraph: Ant.design, the design platform of Ant Financial, seamlessly connects to the ecosystem of Ant Financial with minimal workload, and provides experience solutions that span design and development. Ant.design, the design platform of Ant Financial, uses the smallestWorkload, seamless access to Ant Financial's ecology, providing experience solutions that span design and development.",
"members": [
{
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/ZiESqWwCXBRQoaPONSJe.png",
"name": "Qu Lili",
"id": "member1"
},
{
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/tBOxZPlITHqwlGjsJWaF.png",
"name": "Wang Zhaojun",
"id": "member2"
},
{
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/sBxjgqiuHMGRkIjqlQCd.png",
"name": "Dong Nana",
"id": "member3"
}
]
}
]

170
aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/wwwroot/data/menu.json

@ -0,0 +1,170 @@
[
{
"path": "/dashboard",
"name": "Dashboard",
"key": "dashboard",
"icon": "dashboard",
"children": [
{
"path": "/",
"name": "Analysis Page",
"key": "dashboard.analysis"
},
{
"path": "/dashboard/monitor",
"name": "Monitoring Page",
"key": "dashboard.monitor"
},
{
"path": "/dashboard/workplace",
"name": "Workbench",
"key": "dashboard.workplace"
}
]
},
{
"path": "/form",
"name": "Form page",
"key": "form",
"icon": "form",
"children": [
{
"path": "/form/basic-form",
"name": "Basic Form",
"key": "form.basic-form"
},
{
"path": "/form/step-form",
"name": "Step Form",
"key": "form.step-form"
},
{
"path": "/form/advanced-form",
"name": "Advanced Form",
"key": "form.advanced-form"
}
]
},
{
"path": "/list",
"name": "List",
"key": "list",
"icon": "table",
"children": [
{
"path": "/list/search",
"name": "Search List",
"key": "list.search",
"children": [
{
"path": "/list/search/articles",
"name": "Search List (Article)",
"key": "list.search.articles"
},
{
"path": "/list/search/projects",
"name": "Search List (Items)",
"key": "list.search.projects"
},
{
"path": "/list/search/applications",
"name": "Search List (Application)",
"key": "list.search.applications"
}
]
},
{
"path": "/list/table-list",
"name": "Inquiry Form",
"key": "list.table-list"
},
{
"path": "/list/basic-list",
"name": "Basic List",
"key": "list.basic-list"
},
{
"path": "/list/card-list",
"name": "Card List",
"key": "list.card-list"
}
]
},
{
"path": "/profile",
"name": "Profile",
"key": "profile",
"icon": "profile",
"children": [
{
"path": "/profile/basic",
"name": "Basic Profile",
"key": "profile.basic"
},
{
"path": "/profile/advanced",
"name": "Advanced Profile",
"key": "profile.advanced"
}
]
},
{
"path": "/result",
"name": "Result Pages",
"key": "result",
"icon": "check-circle",
"children": [
{
"path": "/result/success",
"name": "Success Page",
"key": "result.success"
},
{
"path": "/result/fail",
"name": "Failed page",
"key": "result.fail"
}
]
},
{
"path": "/exception",
"name": "Error Pages",
"key": "exception",
"icon": "exception",
"children": [
{
"path": "/exception/403",
"name": "403",
"key": "exception.403"
},
{
"path": "/exception/404",
"name": "404",
"key": "exception.404"
},
{
"path": "/exception/500",
"name": "500",
"key": "exception.500"
}
]
},
{
"path": "/account",
"name": "Account",
"key": "account",
"icon": "user",
"children": [
{
"path": "/account/center",
"name": "Account Center",
"key": "account.center"
},
{
"path": "/account/settings",
"name": "Personal settings",
"key": "account.settings"
}
]
}
]

62
aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/wwwroot/data/notice.json

@ -0,0 +1,62 @@
[
{
"id": "xxx1",
"title": "Alipay",
"logo": "https://gw.alipayobjects.com/zos/rmsportal/WdGqmHpayyMjiEhcKoVE.png",
"description": "It's an inner thing, which they can't reach and can't reach",
"updatedAt": "2020-08-26T10:21:19.719Z",
"member": "Scientific Moving Brick Group",
"href": "",
"memberLink": ""
},
{
"id": "xxx2",
"title": "Angular",
"logo": "https://gw.alipayobjects.com/zos/rmsportal/zOsKZmFRdUtvpqCImOVY.png",
"description": "Hope is a good thing, maybe the best, good things will not die out",
"updatedAt": "2017-07-24T00:00:00.000Z",
"member": "The whole group is Wu Yanzu",
"href": "",
"memberLink": ""
},
{
"id": "xxx3",
"title": "Ant Design",
"logo": "https://gw.alipayobjects.com/zos/rmsportal/dURIMkkrRFpPgTuzkwnB.png",
"description": "There are so many pubs in the town, but she just walked into my pub",
"updatedAt": "2020-08-26T10:21:19.719Z",
"member": "Second Girl Group",
"href": "",
"memberLink": ""
},
{
"id": "xxx4",
"title": "Ant Design Pro",
"logo": "https://gw.alipayobjects.com/zos/rmsportal/sfjbOqnsXXJgNCjCzDBL.png",
"description": "At that time I only thought about what I wanted, never wanted what I had",
"updatedAt": "2017-07-23T00:00:00.000Z",
"member": "Programmer's Daily",
"href": "",
"memberLink": ""
},
{
"id": "xxx5",
"title": "Bootstrap",
"logo": "https://gw.alipayobjects.com/zos/rmsportal/siCrBXXhmvTQGWPNLBow.png",
"description": "Shiver",
"updatedAt": "2017-07-23T00:00:00.000Z",
"member": "Highly Compelling Design Sky Mission",
"href": "",
"memberLink": ""
},
{
"id": "xxx6",
"title": "React",
"logo": "https://gw.alipayobjects.com/zos/rmsportal/kZzEzemZyKLKFsojXItE.png",
"description": "Life is like a box of chocolates, the results are often unexpected",
"updatedAt": "2017-07-23T00:00:00.000Z",
"member": "Lie to you to learn computer",
"href": "",
"memberLink": ""
}
]

97
aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/wwwroot/data/notices.json

@ -0,0 +1,97 @@
[
{
"id": "000000001",
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/ThXAXghbEsBCCSDihZxY.png",
"title": "You have received 14 new weekly reports",
"datetime": "2017-08-09",
"type": "notification"
},
{
"id": "000000002",
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/OKJXDXrmkNshAMvwtvhu.png",
"title":"The Qu Nini you recommended has passed the third round of interview",
"datetime": "2017-08-08",
"type": "notification"
},
{
"id": "000000003",
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/kISTdvpyTAhtGxpovNWd.png",
"title": "This template can distinguish multiple notification types",
"datetime": "2017-08-07",
"read": true,
"type": "notification"
},
{
"id": "000000004",
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/GvqBnKhFgObvnSGkDsje.png",
"title": "The icon on the left is used to distinguish different types",
"datetime": "2017-08-07",
"type": "notification"
},
{
"id": "000000005",
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/ThXAXghbEsBCCSDihZxY.png",
"title": "The content should not exceed two lines, and it will be automatically truncated when exceeded",
"datetime": "2017-08-07",
"type": "notification"
},
{
"id": "000000006",
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/fcHMVNCjPOsbUGdEduuv.jpeg",
"title": "Qu Lili commented on you",
"description": "Description information description information description information",
"datetime": "2017-08-07",
"type": "message",
"clickClose": true
},
{
"id": "000000007",
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/fcHMVNCjPOsbUGdEduuv.jpeg",
"title": "Zhu Fangyou replied to you",
"description": "This template is used to remind who has interacted with you, put the avatar of 'who' on the left",
"datetime": "2017-08-07",
"type": "message",
"clickClose": true
},
{
"id": "000000008",
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/fcHMVNCjPOsbUGdEduuv.jpeg",
"title": "Title",
"description": "This template is used to remind who has interacted with you, put the avatar of 'who' on the left",
"datetime": "2017-08-07",
"type": "message",
"clickClose": true
},
{
"id": "000000009",
"title": "Task Name",
"description": "The task needs to be started before 20:00 on 2017-01-12",
"extra": "has not started",
"status": "todo",
"type": "event"
},
{
"id": "000000010",
"title": "Emergency third-party code changes",
"description": "Guan Lin is submitted to 2017-01-06, you need to complete the code change task before 2017-01-07",
"extra": "Expiring soon",
"status": "urgent",
"type": "event"
},
{
"id": "000000011",
"title": "Information Security Exam",
"description": "Assign Zhuer to complete the update and release before 2017-01-09",
"extra": "It took 8 days",
"status": "doing",
"type": "event"
},
{
"id": "000000012",
"title": "ABCD Version release",
"description": "Guanlin submitted on 2017-01-06, the code change task must be completed before 2017-01-07",
"extra": "processing",
"status": "processing",
"type": "event"
}
]

209
aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/wwwroot/index.html

@ -0,0 +1,209 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="keywords" content="antd,umi,umijs,ant design,脚手架,布局, Ant Design,项目,Pro,admin,控制台,主页,开箱即用,中后台,解决方案,组件库" />
<meta name="description" content="An out-of-box UI solution for enterprise applications as a React boilerplate." />
<meta name="description" content="开箱即用的中台前端/设计解决方案。" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" />
<title>Ant Design Pro Blazor</title>
<link rel="icon" href="favicon.ico" type="image/x-icon" />
<base href="/" />
<link href="_content/AntDesign/css/ant-design-blazor.css" rel="stylesheet" />
<link href="_content/AntDesign.ProLayout/css/ant-design-pro-layout-blazor.css" rel="stylesheet" />
<link href="./css/site.css" rel="stylesheet" />
</head>
<body>
<noscript>Out-of-the-box mid-stage front/design solution!</noscript>
<div id="app">
<style>
html,
body,
#app {
height: 100%;
margin: 0;
padding: 0;
}
#app {
background-repeat: no-repeat;
background-size: 100% auto;
}
.page-loading-warp {
padding: 98px;
display: flex;
justify-content: center;
align-items: center;
}
.ant-spin {
-webkit-box-sizing: border-box;
box-sizing: border-box;
margin: 0;
padding: 0;
color: rgba(0, 0, 0, 0.65);
font-size: 14px;
font-variant: tabular-nums;
line-height: 1.5;
list-style: none;
-webkit-font-feature-settings: 'tnum';
font-feature-settings: 'tnum';
position: absolute;
display: none;
color: #1890ff;
text-align: center;
vertical-align: middle;
opacity: 0;
-webkit-transition: -webkit-transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86);
transition: -webkit-transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86);
transition: transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86);
transition: transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86),
-webkit-transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86);
}
.ant-spin-spinning {
position: static;
display: inline-block;
opacity: 1;
}
.ant-spin-dot {
position: relative;
display: inline-block;
font-size: 20px;
width: 20px;
height: 20px;
}
.ant-spin-dot-item {
position: absolute;
display: block;
width: 9px;
height: 9px;
background-color: #1890ff;
border-radius: 100%;
-webkit-transform: scale(0.75);
-ms-transform: scale(0.75);
transform: scale(0.75);
-webkit-transform-origin: 50% 50%;
-ms-transform-origin: 50% 50%;
transform-origin: 50% 50%;
opacity: 0.3;
-webkit-animation: antSpinMove 1s infinite linear alternate;
animation: antSpinMove 1s infinite linear alternate;
}
.ant-spin-dot-item:nth-child(1) {
top: 0;
left: 0;
}
.ant-spin-dot-item:nth-child(2) {
top: 0;
right: 0;
-webkit-animation-delay: 0.4s;
animation-delay: 0.4s;
}
.ant-spin-dot-item:nth-child(3) {
right: 0;
bottom: 0;
-webkit-animation-delay: 0.8s;
animation-delay: 0.8s;
}
.ant-spin-dot-item:nth-child(4) {
bottom: 0;
left: 0;
-webkit-animation-delay: 1.2s;
animation-delay: 1.2s;
}
.ant-spin-dot-spin {
-webkit-transform: rotate(45deg);
-ms-transform: rotate(45deg);
transform: rotate(45deg);
-webkit-animation: antRotate 1.2s infinite linear;
animation: antRotate 1.2s infinite linear;
}
.ant-spin-lg .ant-spin-dot {
font-size: 32px;
width: 32px;
height: 32px;
}
.ant-spin-lg .ant-spin-dot i {
width: 14px;
height: 14px;
}
@media all and (-ms-high-contrast: none),
(-ms-high-contrast: active) {
.ant-spin-blur {
background: #fff;
opacity: 0.5;
}
}
@-webkit-keyframes antSpinMove {
to {
opacity: 1;
}
}
@keyframes antSpinMove {
to {
opacity: 1;
}
}
@-webkit-keyframes antRotate {
to {
-webkit-transform: rotate(405deg);
transform: rotate(405deg);
}
}
@keyframes antRotate {
to {
-webkit-transform: rotate(405deg);
transform: rotate(405deg);
}
}
</style>
<div style="
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
min-height: 420px;
height: 100%;
">
<img src="./pro_icon.svg" alt="logo" width="256" />
<div class="page-loading-warp">
<div class="ant-spin ant-spin-lg ant-spin-spinning">
<span class="ant-spin-dot ant-spin-dot-spin"><i class="ant-spin-dot-item"></i><i
class="ant-spin-dot-item"></i><i class="ant-spin-dot-item"></i><i
class="ant-spin-dot-item"></i></span>
</div>
</div>
<div style="display: flex; justify-content: center; align-items: center;">
<img src="https://gw.alipayobjects.com/zos/rmsportal/KDpgvguMpGfqaHPjicRK.svg" width="32"
style="margin-right: 8px;" />
Ant Design Blazor
</div>
</div>
</div>
<script src="_content/AntDesign.Charts/g2plot.js"></script>
<script src="_content/AntDesign/js/ant-design-blazor.js"></script>
<script src="_content/AntDesign.Charts/ant-design-charts-blazor.js"></script>
<script src="_framework/blazor.webassembly.js"></script>
</body>
</html>

5
aspnet-core/services/src/CompanyName.ProjectName.Blazor.Layout.AntDesignTheme/wwwroot/pro_icon.svg

@ -0,0 +1,5 @@
<svg width="42" height="42" xmlns="http://www.w3.org/2000/svg">
<g>
<path fill="#070707" d="m6.717392,13.773912l5.6,0c2.8,0 4.7,1.9 4.7,4.7c0,2.8 -2,4.7 -4.9,4.7l-2.5,0l0,4.3l-2.9,0l0,-13.7zm2.9,2.2l0,4.9l1.9,0c1.6,0 2.6,-0.9 2.6,-2.4c0,-1.6 -0.9,-2.4 -2.6,-2.4l-1.9,0l0,-0.1zm8.9,11.5l2.7,0l0,-5.7c0,-1.4 0.8,-2.3 2.2,-2.3c0.4,0 0.8,0.1 1,0.2l0,-2.4c-0.2,-0.1 -0.5,-0.1 -0.8,-0.1c-1.2,0 -2.1,0.7 -2.4,2l-0.1,0l0,-1.9l-2.7,0l0,10.2l0.1,0zm11.7,0.1c-3.1,0 -5,-2 -5,-5.3c0,-3.3 2,-5.3 5,-5.3s5,2 5,5.3c0,3.4 -1.9,5.3 -5,5.3zm0,-2.1c1.4,0 2.2,-1.1 2.2,-3.2c0,-2 -0.8,-3.2 -2.2,-3.2c-1.4,0 -2.2,1.2 -2.2,3.2c0,2.1 0.8,3.2 2.2,3.2z" class="st0" id="Ant-Design-Pro"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 677 B

Loading…
Cancel
Save