Login Layout

This commit is contained in:
Sedat Öztürk 2025-05-28 21:30:08 +03:00
parent 9671116426
commit 3bf7d70dea
13 changed files with 3994 additions and 69 deletions

View file

@ -44,7 +44,7 @@ public static class LanguagesDbContextModelCreatingExtensions
b.Property(a => a.CultureName).HasMaxLength(10).IsRequired();
b.Property(a => a.ResourceName).HasMaxLength(50);
b.Property(a => a.Key).HasMaxLength(100);
b.Property(a => a.Value).HasMaxLength(250).IsRequired();
b.Property(a => a.Value).HasMaxLength(1000).IsRequired();
});
}
}

View file

@ -4255,6 +4255,18 @@
"en": "Blank",
"tr": "Boş"
},
{
"resourceName": "Platform",
"key": "LoginPanel.Profil",
"en": "Founder",
"tr": "Kurucu"
},
{
"resourceName": "Platform",
"key": "LoginPanel.Message",
"en": "From interactive desktop applications to immersive web and mobile solutions, from AI-powered systems to data-driven decision-making mechanisms, we are here to provide intelligent solutions to your needs today and ensure your sustainable success in the future.",
"tr": "Etkileşimli masaüstü uygulamalarından sürükleyici web ve mobil çözümlere, yapay zekâ destekli sistemlerden veri odaklı karar mekanizmalarına kadar, bugünkü ihtiyaçlarınıza akıllı çözümler sunmak ve gelecekte de sürdürülebilir başarınızı garanti altına almak için buradayız."
},
{
"resourceName": "Platform",
"key": "AI.Welcome",

View file

@ -1,15 +0,0 @@
using System;
using System.Text.Json;
using Volo.Abp.Domain.Entities;
namespace Kurs.Platform.Entities;
public class LogEntry: Entity<Guid>
{
public DateTime Timestamp { get; set; }
public string Level { get; set; }
public string Message { get; set; }
public string? MessageTemplate { get; set; }
public string? Exception { get; set; }
public JsonDocument? Properties { get; set; }
}

View file

@ -39,7 +39,6 @@ public class PlatformDbContext :
public DbSet<PublicApi> PublicApis { get; set; }
public DbSet<GlobalSearch> GlobalSearchs { get; set; }
public DbSet<AiBot> AiBots { get; set; }
public DbSet<LogEntry> LogEntrys { get; set; }
#region Entities from the modules
@ -206,11 +205,5 @@ public class PlatformDbContext :
b.ToTable(PlatformConsts.DbTablePrefix + nameof(AiBot), PlatformConsts.DbSchema);
b.ConfigureByConvention();
});
builder.Entity<LogEntry>(b =>
{
b.ToTable(PlatformConsts.DbTablePrefix + nameof(LogEntry), PlatformConsts.DbSchema);
b.ConfigureByConvention();
});
}
}

View file

@ -0,0 +1,42 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace Kurs.Platform.Migrations
{
/// <inheritdoc />
public partial class UpdateLanguageTextValueLength : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AlterColumn<string>(
name: "Value",
table: "PLanguageText",
type: "character varying(1000)",
maxLength: 1000,
nullable: false,
collation: "tr-x-icu",
oldClrType: typeof(string),
oldType: "character varying(250)",
oldMaxLength: 250,
oldCollation: "tr-x-icu");
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.AlterColumn<string>(
name: "Value",
table: "PLanguageText",
type: "character varying(250)",
maxLength: 250,
nullable: false,
collation: "tr-x-icu",
oldClrType: typeof(string),
oldType: "character varying(1000)",
oldMaxLength: 1000,
oldCollation: "tr-x-icu");
}
}
}

View file

@ -198,8 +198,8 @@ namespace Kurs.Platform.Migrations
b.Property<string>("Value")
.IsRequired()
.HasMaxLength(250)
.HasColumnType("character varying(250)")
.HasMaxLength(1000)
.HasColumnType("character varying(1000)")
.UseCollation("tr-x-icu");
b.HasKey("Id");

View file

@ -82,7 +82,7 @@ define(['./workbox-54d0af47'], (function (workbox) { 'use strict';
"revision": "3ca0b8505b4bec776b69afdba2768812"
}, {
"url": "index.html",
"revision": "0.i5lc19up29o"
"revision": "0.8b8tnlffsvo"
}], {});
workbox.cleanupOutdatedCaches();
workbox.registerRoute(new workbox.NavigationRoute(workbox.createHandlerBoundToURL("index.html"), {

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 71 KiB

View file

@ -1,6 +1,6 @@
import Side from './Side'
// import Cover from './Cover'
// import Simple from './Simple'
//import Side from './Side'
//import Cover from './Cover'
import Simple from './Simple'
import View from '@/views'
import { useStoreState } from '@/store'
import { LAYOUT_TYPE_BLANK } from '@/constants/theme.constant'
@ -13,9 +13,9 @@ const AuthLayout = () => {
{layoutType === LAYOUT_TYPE_BLANK ? (
<View />
) : (
<Side>
<Simple>
<View />
</Side>
</Simple>
)}
</div>
)

View file

@ -3,46 +3,55 @@ import Logo from '@/components/template/Logo'
import { APP_NAME } from '@/constants/app.constant'
import type { CommonProps } from '@/@types/common'
import type { ReactNode, ReactElement } from 'react'
import { Avatar } from '@/components/ui'
import { useLocalization } from '@/utils/hooks/useLocalization'
interface CoverProps extends CommonProps {
content?: ReactNode
content?: ReactNode
}
const Cover = ({ children, content, ...rest }: CoverProps) => {
return (
<div className="grid lg:grid-cols-3 h-full">
<div
className="col-span-2 bg-no-repeat bg-cover py-6 px-16 flex-col justify-between bg-white dark:bg-gray-800 hidden lg:flex"
style={{
backgroundImage: `url('/img/others/auth-cover-bg.jpg')`,
}}
>
<Logo mode="dark" />
<div>
<h3 className="text-white mb-4">
Jump start your project with Elstar
</h3>
<p className="text-lg text-white opacity-80 max-w-[700px]">
From interactive desktop applications to immersive web and mobile
solutions, we exist to meet your needs today and ensure continued
success tomorrow.
</p>
</div>
<span className="text-white">
Copyright &copy; {`${new Date().getFullYear()}`}{' '}
<span className="font-semibold">{`${APP_NAME}`}</span>{' '}
</span>
</div>
<div className="flex flex-col justify-center items-center bg-white dark:bg-gray-800">
<div className="w-full xl:max-w-[450px] px-8 max-w-[380px]">
<div className="mb-8">{content}</div>
{children
? cloneElement(children as ReactElement, { ...rest })
: null}
</div>
const { translate } = useLocalization()
return (
<div className="grid lg:grid-cols-3 h-full">
<div
className="col-span-2 bg-no-repeat bg-cover py-6 px-16 flex-col justify-between dark:bg-gray-800 hidden lg:flex relative"
style={{
backgroundImage: `url('/img/others/auth-cover-bg.jpg')`,
}}
>
{/* Koyulaştırıcı katman */}
<div className="absolute inset-0 bg-black bg-opacity-50 z-0"></div>
<div className="relative z-10 flex flex-col h-full justify-between">
<Logo mode="dark" />
<div>
<div className="mb-6 flex items-center gap-4">
<Avatar className="border-2 border-white" shape="circle" src="/img/others/cto.png" />
<div className="text-white">
<div className="font-semibold text-base">Sedat ÖZTÜRK</div>
<span className="opacity-80">{translate('::LoginPanel.Profil')}</span>
</div>
</div>
<p className="text-lg text-white opacity-80">{translate('::LoginPanel.Message')}</p>
</div>
<span className="text-white">
Copyright &copy; {`${new Date().getFullYear()}`}{' '}
<span className="font-semibold">{`${APP_NAME}`}</span>{' '}
</span>
</div>
)
</div>
<div className="flex flex-col justify-center items-center bg-white dark:bg-gray-800">
<div className="w-full xl:max-w-[450px] px-8 max-w-[380px]">
<div className="mb-8">{content}</div>
{children ? cloneElement(children as ReactElement, { ...rest }) : null}
</div>
</div>
</div>
)
}
export default Cover

View file

@ -3,13 +3,16 @@ import Avatar from '@/components/ui/Avatar'
import Logo from '@/components/template/Logo'
import { APP_NAME } from '@/constants/app.constant'
import type { CommonProps } from '@/@types/common'
import { useLocalization } from '@/utils/hooks/useLocalization'
interface SideProps extends CommonProps {
content?: React.ReactNode
}
const Side = ({ children, content, ...rest }: SideProps) => {
return (
const { translate } = useLocalization()
return (
<div className="grid lg:grid-cols-3 h-full">
<div
className="relative bg-no-repeat bg-cover py-6 px-16 flex-col justify-between hidden lg:flex"
@ -25,12 +28,11 @@ const Side = ({ children, content, ...rest }: SideProps) => {
<Avatar className="border-2 border-white" shape="circle" src="/img/others/cto.png" />
<div className="text-white">
<div className="font-semibold text-base">Sedat ÖZTÜRK</div>
<span className="opacity-80">Founder</span>
<span className="opacity-80">{ translate('::LoginPanel.Profil')}</span>
</div>
</div>
<p className="text-lg text-white opacity-80">
From interactive desktop applications to immersive web and mobile solutions, we exist to
meet your needs today and ensure continued success tomorrow.
{ translate('::LoginPanel.Message')}
</p>
</div>
<span className="text-white">

View file

@ -37,7 +37,7 @@ export const themeConfig: ThemeConfig = {
controlSize: 'md',
navMode: THEME_ENUM.NAV_MODE_LIGHT,
layout: {
type: THEME_ENUM.LAYOUT_TYPE_MODERN,
type: THEME_ENUM.LAYOUT_TYPE_SIMPLE,
sideNavCollapse: false,
},
}