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.CultureName).HasMaxLength(10).IsRequired();
b.Property(a => a.ResourceName).HasMaxLength(50); b.Property(a => a.ResourceName).HasMaxLength(50);
b.Property(a => a.Key).HasMaxLength(100); 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", "en": "Blank",
"tr": "Boş" "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", "resourceName": "Platform",
"key": "AI.Welcome", "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<PublicApi> PublicApis { get; set; }
public DbSet<GlobalSearch> GlobalSearchs { get; set; } public DbSet<GlobalSearch> GlobalSearchs { get; set; }
public DbSet<AiBot> AiBots { get; set; } public DbSet<AiBot> AiBots { get; set; }
public DbSet<LogEntry> LogEntrys { get; set; }
#region Entities from the modules #region Entities from the modules
@ -206,11 +205,5 @@ public class PlatformDbContext :
b.ToTable(PlatformConsts.DbTablePrefix + nameof(AiBot), PlatformConsts.DbSchema); b.ToTable(PlatformConsts.DbTablePrefix + nameof(AiBot), PlatformConsts.DbSchema);
b.ConfigureByConvention(); 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") b.Property<string>("Value")
.IsRequired() .IsRequired()
.HasMaxLength(250) .HasMaxLength(1000)
.HasColumnType("character varying(250)") .HasColumnType("character varying(1000)")
.UseCollation("tr-x-icu"); .UseCollation("tr-x-icu");
b.HasKey("Id"); b.HasKey("Id");

View file

@ -82,7 +82,7 @@ define(['./workbox-54d0af47'], (function (workbox) { 'use strict';
"revision": "3ca0b8505b4bec776b69afdba2768812" "revision": "3ca0b8505b4bec776b69afdba2768812"
}, { }, {
"url": "index.html", "url": "index.html",
"revision": "0.i5lc19up29o" "revision": "0.8b8tnlffsvo"
}], {}); }], {});
workbox.cleanupOutdatedCaches(); workbox.cleanupOutdatedCaches();
workbox.registerRoute(new workbox.NavigationRoute(workbox.createHandlerBoundToURL("index.html"), { 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 Side from './Side'
// import Cover from './Cover' //import Cover from './Cover'
// import Simple from './Simple' import Simple from './Simple'
import View from '@/views' import View from '@/views'
import { useStoreState } from '@/store' import { useStoreState } from '@/store'
import { LAYOUT_TYPE_BLANK } from '@/constants/theme.constant' import { LAYOUT_TYPE_BLANK } from '@/constants/theme.constant'
@ -13,9 +13,9 @@ const AuthLayout = () => {
{layoutType === LAYOUT_TYPE_BLANK ? ( {layoutType === LAYOUT_TYPE_BLANK ? (
<View /> <View />
) : ( ) : (
<Side> <Simple>
<View /> <View />
</Side> </Simple>
)} )}
</div> </div>
) )

View file

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

View file

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

View file

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