Compare commits
11 Commits
main
...
MassTech_App
| Author | SHA1 | Date | |
|---|---|---|---|
| 3bd8076bf5 | |||
| b8a0d4afe9 | |||
| d30d3d31f0 | |||
| 5e83d6fa30 | |||
| 7a1248bf19 | |||
| 76049afe29 | |||
| 728187d049 | |||
| aef74182ff | |||
| 06972a5764 | |||
| 34c361e7df | |||
| f9288ec245 |
@@ -0,0 +1,7 @@
|
||||
bin/
|
||||
obj/
|
||||
node_modules/
|
||||
wwwroot/lib/
|
||||
*.user
|
||||
*.suo
|
||||
*.swp
|
||||
@@ -1,8 +1,10 @@
|
||||
@using LayoutLib
|
||||
|
||||
@if (_isLoaded)
|
||||
{
|
||||
<CascadingAuthenticationState>
|
||||
<Router AppAssembly="@typeof(Program).Assembly" AdditionalAssemblies="new[] {
|
||||
typeof(ECommerceModule.Components.Pages.Shop.Shop).Assembly
|
||||
typeof(ECommerce.Module.Components.Pages.Shop.Shop).Assembly
|
||||
}">
|
||||
|
||||
<Found Context="routeData">
|
||||
@@ -16,7 +18,7 @@
|
||||
</Found>
|
||||
<NotFound>
|
||||
<LayoutView Layout="@typeof(MainLayout)">
|
||||
<p>Sorry, there's nothing at this address.</p>
|
||||
<div class="p-4 text-white">404 - Page not found at @DateTime.Now</div>
|
||||
</LayoutView>
|
||||
</NotFound>
|
||||
</Router>
|
||||
@@ -24,7 +26,7 @@
|
||||
}
|
||||
else
|
||||
{
|
||||
<div>Loading translations...</div>
|
||||
<div class="text-white">Loading translations... @DateTime.Now</div>
|
||||
}
|
||||
|
||||
@code {
|
||||
|
||||
@@ -12,7 +12,6 @@
|
||||
@using UI.Components
|
||||
@using Layout
|
||||
@using System.Net.Http.Headers
|
||||
@using ECommerceModule.Components
|
||||
|
||||
@using System.Text
|
||||
@using System;
|
||||
|
||||
@@ -12,9 +12,9 @@ namespace UI.Config.PostBuild
|
||||
{
|
||||
public static async Task LoadTranslations(this IServiceProvider services)
|
||||
{
|
||||
var authLocalizer = services.GetRequiredService<IStringLocalizer<Auth.RCL.SharedRes>>();
|
||||
var layoutLocalizer = services.GetRequiredService<IStringLocalizer<LayoutLib.RCL.SharedRes>>();
|
||||
var ecommerceLocalizer = services.GetRequiredService<IStringLocalizer<ECommerce.RCL.SharedRes>>();
|
||||
var authLocalizer = services.GetRequiredService<IStringLocalizer<Auth.Module.SharedRes>>();
|
||||
var layoutLocalizer = services.GetRequiredService<IStringLocalizer<LayoutLib.Layout.SharedRes>>();
|
||||
var ecommerceLocalizer = services.GetRequiredService<IStringLocalizer<ECommerce.Module.SharedRes>>();
|
||||
|
||||
await Task.WhenAll(
|
||||
authLocalizer.LoadAsync().AsTask(),
|
||||
|
||||
@@ -27,7 +27,7 @@ namespace UI.Config.Register
|
||||
{
|
||||
|
||||
options.ResourcesPath = "resources";
|
||||
options.Assemblies = [typeof(LayoutLib.RCL.SharedRes).Assembly, typeof(Auth.RCL.SharedRes).Assembly, typeof(ECommerce.RCL.SharedRes).Assembly];
|
||||
options.Assemblies = [typeof(LayoutLib.Layout.SharedRes).Assembly, typeof(Auth.Module.SharedRes).Assembly, typeof(ECommerce.Module.SharedRes).Assembly];
|
||||
options.HttpClientBuilder = sp => sp.GetRequiredService<IHttpClientFactory>().CreateClient(nameof(LocalizationHttpClient));
|
||||
|
||||
});
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
// using AuthModule;
|
||||
// using AuthModule.Services;
|
||||
using Auth.Module.Config;
|
||||
using Auth.Module.Services;
|
||||
using ECommerceModule.Config;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Components.Authorization;
|
||||
@@ -28,7 +28,7 @@ public static class RegisteringServices
|
||||
|
||||
public static IServiceCollection RegisteredServices(this IServiceCollection services)
|
||||
{
|
||||
// services.AuthModuleServices();
|
||||
services.AuthModuleServices();
|
||||
services.ECommerceModuleServices();
|
||||
|
||||
// Common Services
|
||||
@@ -44,25 +44,29 @@ public static class RegisteringServices
|
||||
IConfiguration config
|
||||
)
|
||||
{
|
||||
var authUrl = config.GetValue<string>("ApiBaseUrls:Auth") ?? "https://api.mass-tech.net/api/v1/";
|
||||
var commerceUrl = config.GetValue<string>("ApiBaseUrls:Commerce") ?? "https://ecommerceapi.mass-tech.net/api/v1/";
|
||||
var cdnUrl = config.GetValue<string>("ApiBaseUrls:CDN") ?? "https://cdn.mass-tech.net/api/v1/";
|
||||
|
||||
services.AddHttpClient(
|
||||
"Auth",
|
||||
client =>
|
||||
{
|
||||
client.BaseAddress = new Uri("http://localhost:2002/api/v1/");
|
||||
client.BaseAddress = new Uri(authUrl);
|
||||
}
|
||||
);
|
||||
services.AddHttpClient(
|
||||
"Commerce",
|
||||
client =>
|
||||
{
|
||||
client.BaseAddress = new Uri("http://localhost:2001/api/v1/");
|
||||
client.BaseAddress = new Uri(commerceUrl);
|
||||
}
|
||||
);
|
||||
services.AddHttpClient(
|
||||
"CDN",
|
||||
client =>
|
||||
{
|
||||
client.BaseAddress = new Uri("http://localhost:2003/api/v1/");
|
||||
client.BaseAddress = new Uri(cdnUrl);
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
# Build stage
|
||||
FROM mcr.microsoft.com/dotnet/sdk:10.0-alpine AS build
|
||||
WORKDIR /src
|
||||
|
||||
COPY UI.csproj ./
|
||||
RUN dotnet restore
|
||||
|
||||
COPY . ./
|
||||
RUN dotnet build -c Release -o /build
|
||||
RUN dotnet publish -c Release -o /app/publish /p:BlazorWebAssemblyLoadAllGlobalizationData=true
|
||||
|
||||
# Serve with nginx
|
||||
FROM nginx:alpine AS runtime
|
||||
COPY --from=build /app/publish/wwwroot /usr/share/nginx/html
|
||||
COPY nginx.conf /etc/nginx/nginx.conf
|
||||
EXPOSE 80
|
||||
CMD ["nginx", "-g", "daemon off;"]
|
||||
+1
-1
@@ -25,7 +25,7 @@ builder.RootComponents.Add<HeadOutlet>("head::after");
|
||||
builder.Services.AddSingleton(new Uri(builder.HostEnvironment.BaseAddress));
|
||||
|
||||
|
||||
builder.Services.RegLocalization("http://localhost:2004/");
|
||||
builder.Services.RegLocalization(builder.HostEnvironment.BaseAddress);
|
||||
|
||||
builder.Services.RegisterServices(builder.Configuration);
|
||||
|
||||
|
||||
@@ -1,25 +1,16 @@
|
||||
{
|
||||
"$schema": "https://json.schemastore.org/launchsettings.json",
|
||||
"profiles": {
|
||||
"http": {
|
||||
"UI": {
|
||||
"commandName": "Project",
|
||||
"dotnetRunMessages": true,
|
||||
"launchBrowser": true,
|
||||
"launchUrl": "http://localhost:2004",
|
||||
"inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}",
|
||||
"applicationUrl": "http://localhost:2004",
|
||||
"environmentVariables": {
|
||||
"ASPNETCORE_ENVIRONMENT": "Development"
|
||||
}
|
||||
},
|
||||
"https": {
|
||||
"commandName": "Project",
|
||||
"dotnetRunMessages": true,
|
||||
"launchBrowser": true,
|
||||
"inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}",
|
||||
"applicationUrl": "https://localhost:7062;http://localhost:5055",
|
||||
"environmentVariables": {
|
||||
"ASPNETCORE_ENVIRONMENT": "Development"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -32,10 +32,10 @@
|
||||
</ItemGroup> -->
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\..\Libs\Layouts\LayoutLib\LayoutLib.RCL\LayoutLib.RCL.csproj" />
|
||||
<ProjectReference Include="..\..\..\Libs\Generic\Media\Media.RCL\Media.RCL.csproj" />
|
||||
<ProjectReference Include="..\..\..\Libs\Modules\ERP\Commerce\ECommerce\ECommerce.RCL\ECommerce.RCL.csproj" />
|
||||
<ProjectReference Include="..\..\..\Libs\Modules\Auth\Auth.RCL\Auth.RCL.csproj" />
|
||||
<ProjectReference Include="..\..\..\Libs\Layouts\LayoutLib.Layout\LayoutLib.Layout.csproj" />
|
||||
<ProjectReference Include="..\..\..\Libs\Generic\Media.RCL\Media.RCL.csproj" />
|
||||
<ProjectReference Include="..\..\..\Libs\Modules\ERP\Commerce\ECommerce.Module\ECommerce.Module.csproj" />
|
||||
<ProjectReference Include="..\..\..\Libs\Modules\Auth.Module\Auth.Module.csproj" />
|
||||
|
||||
|
||||
<!-- <ProjectReference Include="..\..\..\Libs\Libs\LandingPagesLib\LandingPagesLib.csproj" /> -->
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"ApiBaseUrls": {
|
||||
"Auth": "http://localhost:2002/api/v1/",
|
||||
"Commerce": "http://localhost:2001/api/v1/",
|
||||
"CDN": "http://localhost:2003/api/v1/"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"ApiBaseUrls": {
|
||||
"Auth": "https://api.mass-tech.net/api/v1/",
|
||||
"Commerce": "https://ecommerceapi.mass-tech.net/api/v1/",
|
||||
"CDN": "https://cdn.mass-tech.net/api/v1/"
|
||||
}
|
||||
}
|
||||
+28
@@ -0,0 +1,28 @@
|
||||
events {
|
||||
worker_connections 1024;
|
||||
}
|
||||
|
||||
http {
|
||||
include /etc/nginx/mime.types;
|
||||
default_type application/octet-stream;
|
||||
|
||||
server {
|
||||
listen 80;
|
||||
server_name _;
|
||||
root /usr/share/nginx/html;
|
||||
index index.html;
|
||||
|
||||
location / {
|
||||
try_files $uri $uri/ /index.html =404;
|
||||
}
|
||||
|
||||
location /api/ {
|
||||
proxy_pass http://masstech-api:80/api/;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
}
|
||||
|
||||
gzip on;
|
||||
gzip_types text/plain text/css application/json application/javascript text/xml application/xml;
|
||||
}
|
||||
}
|
||||
@@ -13,7 +13,7 @@ using System.Reflection;
|
||||
[assembly: System.Reflection.AssemblyCompanyAttribute("UI")]
|
||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+206dfeabd74212fb6442b2ac195b5904b0472cb7")]
|
||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+b8a0d4afe9e3be7089649c581f84a739a2257a72")]
|
||||
[assembly: System.Reflection.AssemblyProductAttribute("UI")]
|
||||
[assembly: System.Reflection.AssemblyTitleAttribute("UI")]
|
||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||
|
||||
@@ -1 +1 @@
|
||||
768650b9279d15badf39b6fcf029357ead37478028cce29567c771b2298f1b20
|
||||
b300afb94f22e242f1efa88cb0387c02b34a9602ad55eaa04a417d72753aac9a
|
||||
|
||||
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
+421
-685
File diff suppressed because it is too large
Load Diff
+67
-67
@@ -756,7 +756,7 @@
|
||||
"bin/placeholder/Auth.Contracts.dll": {}
|
||||
}
|
||||
},
|
||||
"Auth.RCL/1.0.0": {
|
||||
"Auth.Module/1.0.0": {
|
||||
"type": "project",
|
||||
"framework": ".NETCoreApp,Version=v10.0",
|
||||
"dependencies": {
|
||||
@@ -764,7 +764,7 @@
|
||||
"Blazored.LocalStorage": "4.5.0",
|
||||
"Common.RCL": "1.0.0",
|
||||
"Generic.CL": "1.0.0",
|
||||
"LayoutLib.RCL": "1.0.0",
|
||||
"LayoutLib.Layout": "1.0.0",
|
||||
"Media.RCL": "1.0.0",
|
||||
"Microsoft.AspNetCore.Components.Authorization": "10.0.1",
|
||||
"Microsoft.AspNetCore.Components.Web": "10.0.1",
|
||||
@@ -773,23 +773,23 @@
|
||||
"MudBlazor": "8.9.0"
|
||||
},
|
||||
"compile": {
|
||||
"bin/placeholder/Auth.RCL.dll": {}
|
||||
"bin/placeholder/Auth.Module.dll": {}
|
||||
},
|
||||
"runtime": {
|
||||
"bin/placeholder/Auth.RCL.dll": {}
|
||||
"bin/placeholder/Auth.Module.dll": {}
|
||||
}
|
||||
},
|
||||
"Carousel.RCL/1.0.0": {
|
||||
"Carousel/1.0.0": {
|
||||
"type": "project",
|
||||
"framework": ".NETCoreApp,Version=v10.0",
|
||||
"framework": ".NETCoreApp,Version=v9.0",
|
||||
"dependencies": {
|
||||
"Microsoft.AspNetCore.Components.Web": "10.0.1"
|
||||
"Microsoft.AspNetCore.Components.Web": "9.0.0"
|
||||
},
|
||||
"compile": {
|
||||
"bin/placeholder/Carousel.RCL.dll": {}
|
||||
"bin/placeholder/Carousel.dll": {}
|
||||
},
|
||||
"runtime": {
|
||||
"bin/placeholder/Carousel.RCL.dll": {}
|
||||
"bin/placeholder/Carousel.dll": {}
|
||||
}
|
||||
},
|
||||
"Common.RCL/1.0.0": {
|
||||
@@ -819,28 +819,28 @@
|
||||
"bin/placeholder/ECommerce.Contracts.dll": {}
|
||||
}
|
||||
},
|
||||
"ECommerce.RCL/1.0.0": {
|
||||
"ECommerce.Module/1.0.0": {
|
||||
"type": "project",
|
||||
"framework": ".NETCoreApp,Version=v10.0",
|
||||
"dependencies": {
|
||||
"Blazored.FluentValidation": "2.2.0",
|
||||
"Blazored.LocalStorage": "4.5.0",
|
||||
"Carousel.RCL": "1.0.0",
|
||||
"Carousel": "1.0.0",
|
||||
"Common.RCL": "1.0.0",
|
||||
"ECommerce.Contracts": "1.0.0",
|
||||
"Generic.CL": "1.0.0",
|
||||
"ImageViewer.RCL": "1.0.0",
|
||||
"LayoutLib.RCL": "1.0.0",
|
||||
"LayoutLib.Layout": "1.0.0",
|
||||
"Media.RCL": "1.0.0",
|
||||
"Microsoft.AspNetCore.Components.Web": "10.0.1",
|
||||
"Microsoft.Extensions.Localization": "10.0.1",
|
||||
"MudBlazor": "8.9.0"
|
||||
},
|
||||
"compile": {
|
||||
"bin/placeholder/ECommerce.RCL.dll": {}
|
||||
"bin/placeholder/ECommerce.Module.dll": {}
|
||||
},
|
||||
"runtime": {
|
||||
"bin/placeholder/ECommerce.RCL.dll": {}
|
||||
"bin/placeholder/ECommerce.Module.dll": {}
|
||||
}
|
||||
},
|
||||
"Generic.CL/1.0.0": {
|
||||
@@ -866,7 +866,7 @@
|
||||
"bin/placeholder/ImageViewer.RCL.dll": {}
|
||||
}
|
||||
},
|
||||
"LayoutLib.RCL/1.0.0": {
|
||||
"LayoutLib.Layout/1.0.0": {
|
||||
"type": "project",
|
||||
"framework": ".NETCoreApp,Version=v10.0",
|
||||
"dependencies": {
|
||||
@@ -875,10 +875,10 @@
|
||||
"MudBlazor": "8.9.0"
|
||||
},
|
||||
"compile": {
|
||||
"bin/placeholder/LayoutLib.RCL.dll": {}
|
||||
"bin/placeholder/LayoutLib.Layout.dll": {}
|
||||
},
|
||||
"runtime": {
|
||||
"bin/placeholder/LayoutLib.RCL.dll": {}
|
||||
"bin/placeholder/LayoutLib.Layout.dll": {}
|
||||
}
|
||||
},
|
||||
"Media.RCL/1.0.0": {
|
||||
@@ -1654,7 +1654,7 @@
|
||||
"bin/placeholder/Auth.Contracts.dll": {}
|
||||
}
|
||||
},
|
||||
"Auth.RCL/1.0.0": {
|
||||
"Auth.Module/1.0.0": {
|
||||
"type": "project",
|
||||
"framework": ".NETCoreApp,Version=v10.0",
|
||||
"dependencies": {
|
||||
@@ -1662,7 +1662,7 @@
|
||||
"Blazored.LocalStorage": "4.5.0",
|
||||
"Common.RCL": "1.0.0",
|
||||
"Generic.CL": "1.0.0",
|
||||
"LayoutLib.RCL": "1.0.0",
|
||||
"LayoutLib.Layout": "1.0.0",
|
||||
"Media.RCL": "1.0.0",
|
||||
"Microsoft.AspNetCore.Components.Authorization": "10.0.1",
|
||||
"Microsoft.AspNetCore.Components.Web": "10.0.1",
|
||||
@@ -1671,23 +1671,23 @@
|
||||
"MudBlazor": "8.9.0"
|
||||
},
|
||||
"compile": {
|
||||
"bin/placeholder/Auth.RCL.dll": {}
|
||||
"bin/placeholder/Auth.Module.dll": {}
|
||||
},
|
||||
"runtime": {
|
||||
"bin/placeholder/Auth.RCL.dll": {}
|
||||
"bin/placeholder/Auth.Module.dll": {}
|
||||
}
|
||||
},
|
||||
"Carousel.RCL/1.0.0": {
|
||||
"Carousel/1.0.0": {
|
||||
"type": "project",
|
||||
"framework": ".NETCoreApp,Version=v10.0",
|
||||
"framework": ".NETCoreApp,Version=v9.0",
|
||||
"dependencies": {
|
||||
"Microsoft.AspNetCore.Components.Web": "10.0.1"
|
||||
"Microsoft.AspNetCore.Components.Web": "9.0.0"
|
||||
},
|
||||
"compile": {
|
||||
"bin/placeholder/Carousel.RCL.dll": {}
|
||||
"bin/placeholder/Carousel.dll": {}
|
||||
},
|
||||
"runtime": {
|
||||
"bin/placeholder/Carousel.RCL.dll": {}
|
||||
"bin/placeholder/Carousel.dll": {}
|
||||
}
|
||||
},
|
||||
"Common.RCL/1.0.0": {
|
||||
@@ -1717,28 +1717,28 @@
|
||||
"bin/placeholder/ECommerce.Contracts.dll": {}
|
||||
}
|
||||
},
|
||||
"ECommerce.RCL/1.0.0": {
|
||||
"ECommerce.Module/1.0.0": {
|
||||
"type": "project",
|
||||
"framework": ".NETCoreApp,Version=v10.0",
|
||||
"dependencies": {
|
||||
"Blazored.FluentValidation": "2.2.0",
|
||||
"Blazored.LocalStorage": "4.5.0",
|
||||
"Carousel.RCL": "1.0.0",
|
||||
"Carousel": "1.0.0",
|
||||
"Common.RCL": "1.0.0",
|
||||
"ECommerce.Contracts": "1.0.0",
|
||||
"Generic.CL": "1.0.0",
|
||||
"ImageViewer.RCL": "1.0.0",
|
||||
"LayoutLib.RCL": "1.0.0",
|
||||
"LayoutLib.Layout": "1.0.0",
|
||||
"Media.RCL": "1.0.0",
|
||||
"Microsoft.AspNetCore.Components.Web": "10.0.1",
|
||||
"Microsoft.Extensions.Localization": "10.0.1",
|
||||
"MudBlazor": "8.9.0"
|
||||
},
|
||||
"compile": {
|
||||
"bin/placeholder/ECommerce.RCL.dll": {}
|
||||
"bin/placeholder/ECommerce.Module.dll": {}
|
||||
},
|
||||
"runtime": {
|
||||
"bin/placeholder/ECommerce.RCL.dll": {}
|
||||
"bin/placeholder/ECommerce.Module.dll": {}
|
||||
}
|
||||
},
|
||||
"Generic.CL/1.0.0": {
|
||||
@@ -1764,7 +1764,7 @@
|
||||
"bin/placeholder/ImageViewer.RCL.dll": {}
|
||||
}
|
||||
},
|
||||
"LayoutLib.RCL/1.0.0": {
|
||||
"LayoutLib.Layout/1.0.0": {
|
||||
"type": "project",
|
||||
"framework": ".NETCoreApp,Version=v10.0",
|
||||
"dependencies": {
|
||||
@@ -1773,10 +1773,10 @@
|
||||
"MudBlazor": "8.9.0"
|
||||
},
|
||||
"compile": {
|
||||
"bin/placeholder/LayoutLib.RCL.dll": {}
|
||||
"bin/placeholder/LayoutLib.Layout.dll": {}
|
||||
},
|
||||
"runtime": {
|
||||
"bin/placeholder/LayoutLib.RCL.dll": {}
|
||||
"bin/placeholder/LayoutLib.Layout.dll": {}
|
||||
}
|
||||
},
|
||||
"Media.RCL/1.0.0": {
|
||||
@@ -3020,58 +3020,58 @@
|
||||
"path": "../../../../Backend/APIs/Auth/Auth.Contracts/Auth.Contracts.csproj",
|
||||
"msbuildProject": "../../../../Backend/APIs/Auth/Auth.Contracts/Auth.Contracts.csproj"
|
||||
},
|
||||
"Auth.RCL/1.0.0": {
|
||||
"Auth.Module/1.0.0": {
|
||||
"type": "project",
|
||||
"path": "../../../Libs/Modules/Auth/Auth.RCL/Auth.RCL.csproj",
|
||||
"msbuildProject": "../../../Libs/Modules/Auth/Auth.RCL/Auth.RCL.csproj"
|
||||
"path": "../../../Libs/Modules/Auth.Module/Auth.Module.csproj",
|
||||
"msbuildProject": "../../../Libs/Modules/Auth.Module/Auth.Module.csproj"
|
||||
},
|
||||
"Carousel.RCL/1.0.0": {
|
||||
"Carousel/1.0.0": {
|
||||
"type": "project",
|
||||
"path": "../../../Libs/Generic/Carousel/Carousel.RCL/Carousel.RCL.csproj",
|
||||
"msbuildProject": "../../../Libs/Generic/Carousel/Carousel.RCL/Carousel.RCL.csproj"
|
||||
"path": "../../../Libs/Generic/Carousel.RCL/Carousel.csproj",
|
||||
"msbuildProject": "../../../Libs/Generic/Carousel.RCL/Carousel.csproj"
|
||||
},
|
||||
"Common.RCL/1.0.0": {
|
||||
"type": "project",
|
||||
"path": "../../../Libs/Generic/Common/Common.RCL/Common.RCL.csproj",
|
||||
"msbuildProject": "../../../Libs/Generic/Common/Common.RCL/Common.RCL.csproj"
|
||||
"path": "../../../Libs/Generic/Common.RCL/Common.RCL.csproj",
|
||||
"msbuildProject": "../../../Libs/Generic/Common.RCL/Common.RCL.csproj"
|
||||
},
|
||||
"ECommerce.Contracts/1.0.0": {
|
||||
"type": "project",
|
||||
"path": "../../../../Backend/TempProjects/Templates/API_Template/ECommerce.Contracts/ECommerce.Contracts.csproj",
|
||||
"msbuildProject": "../../../../Backend/TempProjects/Templates/API_Template/ECommerce.Contracts/ECommerce.Contracts.csproj"
|
||||
"path": "../../../../Backend/APIs/ERP/Commerce/ECommerce/ECommerce.Contracts/ECommerce.Contracts.csproj",
|
||||
"msbuildProject": "../../../../Backend/APIs/ERP/Commerce/ECommerce/ECommerce.Contracts/ECommerce.Contracts.csproj"
|
||||
},
|
||||
"ECommerce.RCL/1.0.0": {
|
||||
"ECommerce.Module/1.0.0": {
|
||||
"type": "project",
|
||||
"path": "../../../Libs/Modules/ERP/Commerce/ECommerce/ECommerce.RCL/ECommerce.RCL.csproj",
|
||||
"msbuildProject": "../../../Libs/Modules/ERP/Commerce/ECommerce/ECommerce.RCL/ECommerce.RCL.csproj"
|
||||
"path": "../../../Libs/Modules/ERP/Commerce/ECommerce.Module/ECommerce.Module.csproj",
|
||||
"msbuildProject": "../../../Libs/Modules/ERP/Commerce/ECommerce.Module/ECommerce.Module.csproj"
|
||||
},
|
||||
"Generic.CL/1.0.0": {
|
||||
"type": "project",
|
||||
"path": "../../../../Backend/SharedLogic/Generic/Generic.CL/Generic.CL.csproj",
|
||||
"msbuildProject": "../../../../Backend/SharedLogic/Generic/Generic.CL/Generic.CL.csproj"
|
||||
"path": "../../../../Backend/SharedLogic/Generic/Generic.CL.csproj",
|
||||
"msbuildProject": "../../../../Backend/SharedLogic/Generic/Generic.CL.csproj"
|
||||
},
|
||||
"ImageViewer.RCL/1.0.0": {
|
||||
"type": "project",
|
||||
"path": "../../../Libs/Generic/ImageViewer/ImageViewer.RCL/ImageViewer.RCL.csproj",
|
||||
"msbuildProject": "../../../Libs/Generic/ImageViewer/ImageViewer.RCL/ImageViewer.RCL.csproj"
|
||||
"path": "../../../Libs/Generic/ImageViewer.RCL/ImageViewer.RCL.csproj",
|
||||
"msbuildProject": "../../../Libs/Generic/ImageViewer.RCL/ImageViewer.RCL.csproj"
|
||||
},
|
||||
"LayoutLib.RCL/1.0.0": {
|
||||
"LayoutLib.Layout/1.0.0": {
|
||||
"type": "project",
|
||||
"path": "../../../Libs/Layouts/LayoutLib/LayoutLib.RCL/LayoutLib.RCL.csproj",
|
||||
"msbuildProject": "../../../Libs/Layouts/LayoutLib/LayoutLib.RCL/LayoutLib.RCL.csproj"
|
||||
"path": "../../../Libs/Layouts/LayoutLib.Layout/LayoutLib.Layout.csproj",
|
||||
"msbuildProject": "../../../Libs/Layouts/LayoutLib.Layout/LayoutLib.Layout.csproj"
|
||||
},
|
||||
"Media.RCL/1.0.0": {
|
||||
"type": "project",
|
||||
"path": "../../../Libs/Generic/Media/Media.RCL/Media.RCL.csproj",
|
||||
"msbuildProject": "../../../Libs/Generic/Media/Media.RCL/Media.RCL.csproj"
|
||||
"path": "../../../Libs/Generic/Media.RCL/Media.RCL.csproj",
|
||||
"msbuildProject": "../../../Libs/Generic/Media.RCL/Media.RCL.csproj"
|
||||
}
|
||||
},
|
||||
"projectFileDependencyGroups": {
|
||||
"net10.0": [
|
||||
"Auth.RCL >= 1.0.0",
|
||||
"Auth.Module >= 1.0.0",
|
||||
"Blazored.LocalStorage >= 4.5.0",
|
||||
"ECommerce.RCL >= 1.0.0",
|
||||
"LayoutLib.RCL >= 1.0.0",
|
||||
"ECommerce.Module >= 1.0.0",
|
||||
"LayoutLib.Layout >= 1.0.0",
|
||||
"Media.RCL >= 1.0.0",
|
||||
"Microsoft.AspNetCore.App.Internal.Assets >= 10.0.2",
|
||||
"Microsoft.AspNetCore.Components.Authorization >= 10.0.1",
|
||||
@@ -3111,17 +3111,17 @@
|
||||
"net10.0": {
|
||||
"targetAlias": "net10.0",
|
||||
"projectReferences": {
|
||||
"/mnt/data/Work/Programming/MainProgram/Frontend/Libs/Generic/Media/Media.RCL/Media.RCL.csproj": {
|
||||
"projectPath": "/mnt/data/Work/Programming/MainProgram/Frontend/Libs/Generic/Media/Media.RCL/Media.RCL.csproj"
|
||||
"/mnt/data/Work/Programming/MainProgram/Frontend/Libs/Generic/Media.RCL/Media.RCL.csproj": {
|
||||
"projectPath": "/mnt/data/Work/Programming/MainProgram/Frontend/Libs/Generic/Media.RCL/Media.RCL.csproj"
|
||||
},
|
||||
"/mnt/data/Work/Programming/MainProgram/Frontend/Libs/Layouts/LayoutLib/LayoutLib.RCL/LayoutLib.RCL.csproj": {
|
||||
"projectPath": "/mnt/data/Work/Programming/MainProgram/Frontend/Libs/Layouts/LayoutLib/LayoutLib.RCL/LayoutLib.RCL.csproj"
|
||||
"/mnt/data/Work/Programming/MainProgram/Frontend/Libs/Layouts/LayoutLib.Layout/LayoutLib.Layout.csproj": {
|
||||
"projectPath": "/mnt/data/Work/Programming/MainProgram/Frontend/Libs/Layouts/LayoutLib.Layout/LayoutLib.Layout.csproj"
|
||||
},
|
||||
"/mnt/data/Work/Programming/MainProgram/Frontend/Libs/Modules/Auth/Auth.RCL/Auth.RCL.csproj": {
|
||||
"projectPath": "/mnt/data/Work/Programming/MainProgram/Frontend/Libs/Modules/Auth/Auth.RCL/Auth.RCL.csproj"
|
||||
"/mnt/data/Work/Programming/MainProgram/Frontend/Libs/Modules/Auth.Module/Auth.Module.csproj": {
|
||||
"projectPath": "/mnt/data/Work/Programming/MainProgram/Frontend/Libs/Modules/Auth.Module/Auth.Module.csproj"
|
||||
},
|
||||
"/mnt/data/Work/Programming/MainProgram/Frontend/Libs/Modules/ERP/Commerce/ECommerce/ECommerce.RCL/ECommerce.RCL.csproj": {
|
||||
"projectPath": "/mnt/data/Work/Programming/MainProgram/Frontend/Libs/Modules/ERP/Commerce/ECommerce/ECommerce.RCL/ECommerce.RCL.csproj"
|
||||
"/mnt/data/Work/Programming/MainProgram/Frontend/Libs/Modules/ERP/Commerce/ECommerce.Module/ECommerce.Module.csproj": {
|
||||
"projectPath": "/mnt/data/Work/Programming/MainProgram/Frontend/Libs/Modules/ERP/Commerce/ECommerce.Module/ECommerce.Module.csproj"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"version": 2,
|
||||
"dgSpecHash": "R09/Z/OaVVM=",
|
||||
"dgSpecHash": "v65Eq0loLbI=",
|
||||
"success": true,
|
||||
"projectFilePath": "/mnt/data/Work/Programming/MainProgram/Frontend/Apps/MassTech/UI/UI.csproj",
|
||||
"expectedPackageFiles": [
|
||||
|
||||
@@ -12,6 +12,11 @@
|
||||
"description": "",
|
||||
"main": "tailwind.config.js",
|
||||
"scripts": {
|
||||
"build:css": "npx tailwindcss -o ./wwwroot/css/app.css",
|
||||
"watch:css": "npx tailwindcss -o ./wwwroot/css/app.css --watch",
|
||||
"publish": "npm run build:css && dotnet publish --configuration Release -o ../Infrastructure/Deployable/Apps/MassTech_App/dist/UI/wwwroot",
|
||||
"rebuild:ui": "cd ../Infrastructure/Deployable/Apps/MassTech_App && docker build --no-cache -f DockerImages/UI/Dockerfile -t masstech-ui:MassTech_App . && docker-compose up -d ui",
|
||||
"deploy": "npm run publish && npm run rebuild:ui",
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
},
|
||||
"keywords": [],
|
||||
|
||||
+3
-3
@@ -42,12 +42,12 @@ module.exports = {
|
||||
themes: [
|
||||
{
|
||||
test: {
|
||||
primary: "#4ECEDA",
|
||||
secondary: "#44B4BE",
|
||||
primary: "#E9B135",
|
||||
secondary: "#D4A030",
|
||||
accent: "#E9B135",
|
||||
neutral: "#27666C",
|
||||
"base-100": "#ffffff",
|
||||
info: "#fde047",
|
||||
info: "#fbbf24",
|
||||
success: "#15803d",
|
||||
warning: "#b91c1c",
|
||||
error: "#ffffff",
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"ApiBaseUrls": {
|
||||
"Auth": "http://localhost:2002/api/v1/",
|
||||
"Commerce": "http://localhost:2001/api/v1/",
|
||||
"CDN": "http://localhost:2003/api/v1/"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"ApiBaseUrls": {
|
||||
"Auth": "https://api.mass-tech.net/api/v1/",
|
||||
"Commerce": "https://ecommerceapi.mass-tech.net/api/v1/",
|
||||
"CDN": "https://cdn.mass-tech.net/api/v1/"
|
||||
}
|
||||
}
|
||||
+3726
-789
File diff suppressed because it is too large
Load Diff
Vendored
-8616
File diff suppressed because it is too large
Load Diff
+275
-25
@@ -1,13 +1,217 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<html lang="en" data-theme="test">
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>UI</title>
|
||||
<title>MassTech - Premium Marketplace</title>
|
||||
<base href="/" />
|
||||
<link rel="stylesheet" href="css/app.css" />
|
||||
<link rel="stylesheet" href="css/app.min.css" />
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900&display=swap" rel="stylesheet">
|
||||
|
||||
<style>
|
||||
/* Site-wide Gradient Background (TEST) */
|
||||
.site-gradient-bg {
|
||||
background: linear-gradient(135deg, #0f172a 0%, #1e293b 50%, #312e81 100%) !important;
|
||||
min-height: 100vh;
|
||||
}
|
||||
|
||||
.site-gradient-bg::before {
|
||||
content: '';
|
||||
position: fixed;
|
||||
inset: 0;
|
||||
background: radial-gradient(circle at 30% 20%, rgba(99, 102, 241, 0.15) 0%, transparent 50%),
|
||||
radial-gradient(circle at 70% 80%, rgba(168, 85, 247, 0.15) 0%, transparent 50%);
|
||||
pointer-events: none;
|
||||
z-index: -1;
|
||||
animation: gradient-shift 8s ease-in-out infinite;
|
||||
}
|
||||
|
||||
/* App Loader - Professional Loading Screen */
|
||||
.app-loader {
|
||||
position: fixed;
|
||||
inset: 0;
|
||||
background: linear-gradient(135deg, #0f172a 0%, #1e293b 50%, #312e81 100%);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
z-index: 9999;
|
||||
font-family: 'Inter', system-ui, -apple-system, sans-serif;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.app-loader::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
background: radial-gradient(circle at 30% 20%, rgba(99, 102, 241, 0.3) 0%, transparent 50%),
|
||||
radial-gradient(circle at 70% 80%, rgba(168, 85, 247, 0.3) 0%, transparent 50%);
|
||||
animation: gradient-shift 8s ease-in-out infinite;
|
||||
}
|
||||
|
||||
@keyframes gradient-shift {
|
||||
0%, 100% { opacity: 1; transform: scale(1); }
|
||||
50% { opacity: 0.7; transform: scale(1.1); }
|
||||
}
|
||||
|
||||
.loader-content {
|
||||
position: relative;
|
||||
text-align: center;
|
||||
color: white;
|
||||
padding: 2rem;
|
||||
animation: fade-in 0.8s ease-out;
|
||||
}
|
||||
|
||||
@keyframes fade-in {
|
||||
from { opacity: 0; transform: translateY(20px); }
|
||||
to { opacity: 1; transform: translateY(0); }
|
||||
}
|
||||
|
||||
.logo-wrapper {
|
||||
position: relative;
|
||||
width: 96px;
|
||||
height: 96px;
|
||||
margin: 0 auto 2rem;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.gear-wrapper {
|
||||
position: relative;
|
||||
width: 180px;
|
||||
height: 180px;
|
||||
margin: 0 auto 2.5rem;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.gear-orbit {
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
border-radius: 50%;
|
||||
border: 2px dashed rgba(255, 215, 0, 0.3);
|
||||
animation: orbit-rotate 12s linear infinite;
|
||||
}
|
||||
|
||||
@keyframes orbit-rotate {
|
||||
from { transform: rotate(0deg); }
|
||||
to { transform: rotate(360deg); }
|
||||
}
|
||||
|
||||
.gear {
|
||||
position: absolute;
|
||||
filter: drop-shadow(0 0 20px rgba(255, 215, 0, 0.6))
|
||||
drop-shadow(0 0 40px rgba(255, 215, 0, 0.3));
|
||||
}
|
||||
|
||||
.gear-large {
|
||||
width: 110px;
|
||||
height: 110px;
|
||||
animation: gear-spin 4s linear infinite;
|
||||
}
|
||||
|
||||
.gear-large svg {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
fill: url(#goldGradient);
|
||||
}
|
||||
|
||||
.gear-small {
|
||||
width: 60px;
|
||||
height: 60px;
|
||||
top: 10px;
|
||||
right: 10px;
|
||||
animation: gear-spin-reverse 3s linear infinite;
|
||||
}
|
||||
|
||||
.gear-small svg {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
fill: url(#goldGradient);
|
||||
}
|
||||
|
||||
@keyframes gear-spin {
|
||||
from { transform: rotate(0deg); }
|
||||
to { transform: rotate(360deg); }
|
||||
}
|
||||
|
||||
@keyframes gear-spin-reverse {
|
||||
from { transform: rotate(0deg); }
|
||||
to { transform: rotate(-360deg); }
|
||||
}
|
||||
|
||||
.logo-icon {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.brand-name {
|
||||
font-size: 3rem;
|
||||
font-weight: 900;
|
||||
letter-spacing: -0.05em;
|
||||
margin: 0 0 0.5rem;
|
||||
background: linear-gradient(135deg, #ffffff 0%, #c7d2fe 100%);
|
||||
-webkit-background-clip: text;
|
||||
background-clip: text;
|
||||
-webkit-text-fill-color: transparent;
|
||||
text-shadow: 0 4px 30px rgba(255, 255, 255, 0.1);
|
||||
}
|
||||
|
||||
.brand-tagline {
|
||||
font-size: 0.95rem;
|
||||
font-weight: 500;
|
||||
color: #94a3b8;
|
||||
margin: 0 0 2.5rem;
|
||||
letter-spacing: 0.025em;
|
||||
}
|
||||
|
||||
.progress-bar {
|
||||
width: 240px;
|
||||
height: 4px;
|
||||
background: rgba(255, 255, 255, 0.1);
|
||||
border-radius: 999px;
|
||||
margin: 0 auto 1rem;
|
||||
overflow: hidden;
|
||||
backdrop-filter: blur(10px);
|
||||
}
|
||||
|
||||
.progress-fill {
|
||||
height: 100%;
|
||||
background: linear-gradient(90deg, #6366f1, #a855f7, #ec4899);
|
||||
background-size: 200% 100%;
|
||||
border-radius: 999px;
|
||||
animation: progress-slide 2s ease-in-out infinite, gradient-flow 3s linear infinite;
|
||||
}
|
||||
|
||||
@keyframes progress-slide {
|
||||
0% { width: 0%; margin-left: 0; }
|
||||
50% { width: 60%; margin-left: 20%; }
|
||||
100% { width: 0%; margin-left: 100%; }
|
||||
}
|
||||
|
||||
@keyframes gradient-flow {
|
||||
0% { background-position: 0% 50%; }
|
||||
100% { background-position: 200% 50%; }
|
||||
}
|
||||
|
||||
.loading-text {
|
||||
font-size: 0.875rem;
|
||||
font-weight: 500;
|
||||
color: #64748b;
|
||||
margin: 0;
|
||||
letter-spacing: 0.025em;
|
||||
animation: text-pulse 2s ease-in-out infinite;
|
||||
}
|
||||
|
||||
@keyframes text-pulse {
|
||||
0%, 100% { opacity: 0.6; }
|
||||
50% { opacity: 1; }
|
||||
}
|
||||
</style>
|
||||
|
||||
<link rel="icon" type="image/png" href="favicon.png" />
|
||||
<link href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700&display=swap" rel="stylesheet" />
|
||||
@@ -15,13 +219,43 @@
|
||||
<link href="_content/MudBlazor/MudBlazor.min.css?v=1" rel="stylesheet" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div id="app">
|
||||
<svg class="loading-progress">
|
||||
<circle r="40%" cx="50%" cy="50%" />
|
||||
<circle r="40%" cx="50%" cy="50%" />
|
||||
<body class="site-gradient-bg">
|
||||
<!-- SVG Gradient Definition for Gold Gears -->
|
||||
<svg width="0" height="0" style="position:absolute">
|
||||
<defs>
|
||||
<linearGradient id="goldGradient" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||
<stop offset="0%" style="stop-color:#fef3c7;stop-opacity:1" />
|
||||
<stop offset="30%" style="stop-color:#fde68a;stop-opacity:1" />
|
||||
<stop offset="60%" style="stop-color:#fbbf24;stop-opacity:1" />
|
||||
<stop offset="100%" style="stop-color:#d97706;stop-opacity:1" />
|
||||
</linearGradient>
|
||||
</defs>
|
||||
</svg>
|
||||
<div class="loading-progress-text"></div>
|
||||
|
||||
<div id="app">
|
||||
<div class="app-loader">
|
||||
<div class="loader-content">
|
||||
<div class="gear-wrapper">
|
||||
<div class="gear-orbit"></div>
|
||||
<div class="gear gear-large">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
|
||||
<path d="M19.14,12.94c0.04-0.3,0.06-0.61,0.06-0.94c0-0.32-0.02-0.64-0.07-0.94l2.03-1.58c0.18-0.14,0.23-0.41,0.12-0.61 l-1.92-3.32c-0.12-0.22-0.37-0.29-0.59-0.22l-2.39,0.96c-0.5-0.38-1.03-0.7-1.62-0.94L14.4,2.81c-0.04-0.24-0.24-0.41-0.48-0.41 h-3.84c-0.24,0-0.43,0.17-0.47,0.41L9.25,5.35C8.66,5.59,8.12,5.92,7.63,6.29L5.24,5.33c-0.22-0.08-0.47,0-0.59,0.22L2.74,8.87 C2.62,9.08,2.66,9.34,2.86,9.48l2.03,1.58C4.84,11.36,4.8,11.69,4.8,12s0.02,0.64,0.07,0.94l-2.03,1.58 c-0.18,0.14-0.23,0.41-0.12,0.61l1.92,3.32c0.12,0.22,0.37,0.29,0.59,0.22l2.39-0.96c0.5,0.38,1.03,0.7,1.62,0.94l0.36,2.54 c0.05,0.24,0.24,0.41,0.48,0.41h3.84c0.24,0,0.44-0.17,0.47-0.41l0.36-2.54c0.59-0.24,1.13-0.56,1.62-0.94l2.39,0.96 c0.22,0.08,0.47,0,0.59-0.22l1.92-3.32c0.12-0.22,0.07-0.47-0.12-0.61L19.14,12.94z M12,15.6c-1.98,0-3.6-1.62-3.6-3.6 s1.62-3.6,3.6-3.6s3.6,1.62,3.6,3.6S13.98,15.6,12,15.6z"/>
|
||||
</svg>
|
||||
</div>
|
||||
<div class="gear gear-small">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
|
||||
<path d="M19.14,12.94c0.04-0.3,0.06-0.61,0.06-0.94c0-0.32-0.02-0.64-0.07-0.94l2.03-1.58c0.18-0.14,0.23-0.41,0.12-0.61 l-1.92-3.32c-0.12-0.22-0.37-0.29-0.59-0.22l-2.39,0.96c-0.5-0.38-1.03-0.7-1.62-0.94L14.4,2.81c-0.04-0.24-0.24-0.41-0.48-0.41 h-3.84c-0.24,0-0.43,0.17-0.47,0.41L9.25,5.35C8.66,5.59,8.12,5.92,7.63,6.29L5.24,5.33c-0.22-0.08-0.47,0-0.59,0.22L2.74,8.87 C2.62,9.08,2.66,9.34,2.86,9.48l2.03,1.58C4.84,11.36,4.8,11.69,4.8,12s0.02,0.64,0.07,0.94l-2.03,1.58 c-0.18,0.14-0.23,0.41-0.12,0.61l1.92,3.32c0.12,0.22,0.37,0.29,0.59,0.22l2.39-0.96c0.5,0.38,1.03,0.7,1.62,0.94l0.36,2.54 c0.05,0.24,0.24,0.41,0.48,0.41h3.84c0.24,0,0.44-0.17,0.47-0.41l0.36-2.54c0.59-0.24,1.13-0.56,1.62-0.94l2.39,0.96 c0.22,0.08,0.47,0,0.59-0.22l1.92-3.32c0.12-0.22,0.07-0.47-0.12-0.61L19.14,12.94z M12,15.6c-1.98,0-3.6-1.62-3.6-3.6 s1.62-3.6,3.6-3.6s3.6,1.62,3.6,3.6S13.98,15.6,12,15.6z"/>
|
||||
</svg>
|
||||
</div>
|
||||
</div>
|
||||
<h1 class="brand-name">MassTech</h1>
|
||||
<p class="brand-tagline">Premium Quality Marketplace</p>
|
||||
<div class="progress-bar">
|
||||
<div class="progress-fill"></div>
|
||||
</div>
|
||||
<p class="loading-text">Loading your experience...</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="blazor-error-ui">
|
||||
@@ -29,25 +263,22 @@
|
||||
<a href="." class="reload">Reload</a>
|
||||
<span class="dismiss">🗙</span>
|
||||
</div>
|
||||
<script src="_framework/blazor.webassembly.js"></script>
|
||||
<script src="_content/MudBlazor/MudBlazor.min.js?v=1"></script>
|
||||
|
||||
<!-- Media Component Assets -->
|
||||
<link href="_content/Media/lib/cropper.min.css" rel="stylesheet" />
|
||||
<script src="_content/Media/lib/cropper.min.js"></script>
|
||||
<!-- <script src="_content/LayoutLib/Resources"></script>
|
||||
<script src="_content/LayoutLib"></script> -->
|
||||
|
||||
<script src="_content/Media/"></script>
|
||||
<script src="_content/Media/lib/cropper.min.js"></script>
|
||||
|
||||
<script src="_content/Media/js/mediaInterop.js"></script>
|
||||
|
||||
<!-- Carousel Scripts -->
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/animejs/3.2.1/anime.min.js"></script>
|
||||
<script src="_content/Common/css/carousal.js"></script>
|
||||
|
||||
<script>
|
||||
// Set initial direction and language from cookie on page load
|
||||
(function() {
|
||||
const value = "; " + document.cookie;
|
||||
const parts = value.split("; .AspNetCore.Culture=");
|
||||
if (parts.length == 2) {
|
||||
const cookieValue = decodeURIComponent(parts.pop().split(";").shift());
|
||||
// Extract just the culture code (format: "c=en|uic=en")
|
||||
const culture = cookieValue.split('|')[0].split('=')[1];
|
||||
const rtlLanguages = ['ar', 'he', 'fa', 'ur'];
|
||||
document.documentElement.dir = rtlLanguages.some(lang => culture === lang) ? 'rtl' : 'ltr';
|
||||
document.documentElement.lang = culture;
|
||||
}
|
||||
})();
|
||||
|
||||
window.cultureInfo = {
|
||||
get: () => {
|
||||
const value = "; " + document.cookie;
|
||||
@@ -57,10 +288,29 @@
|
||||
set: (value) => {
|
||||
const cookieValue = encodeURIComponent(`c=${value}|uic=${value}`);
|
||||
document.cookie = `.AspNetCore.Culture=${cookieValue}; path=/; max-age=31536000`;
|
||||
// Set RTL direction for Arabic and other RTL languages
|
||||
const rtlLanguages = ['ar', 'he', 'fa', 'ur'];
|
||||
document.documentElement.dir = rtlLanguages.some(lang => value === lang) ? 'rtl' : 'ltr';
|
||||
document.documentElement.lang = value;
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<script src="_framework/blazor.webassembly.js"></script>
|
||||
<script src="_content/MudBlazor/MudBlazor.min.js?v=1"></script>
|
||||
|
||||
<!-- Media Component Assets -->
|
||||
<link href="_content/Media.RCL/lib/cropper.min.css" rel="stylesheet" />
|
||||
<script src="_content/Media.RCL/lib/cropper.min.js"></script>
|
||||
<!-- <script src="_content/LayoutLib/Resources"></script>
|
||||
<script src="_content/LayoutLib"></script> -->
|
||||
|
||||
<script src="_content/Media.RCL/js/mediaInterop.js"></script>
|
||||
|
||||
<!-- Carousel Scripts -->
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/animejs/3.2.1/anime.min.js"></script>
|
||||
<script src="_content/Common.RCL/css/carousal.js"></script>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
Reference in New Issue
Block a user