Css düzenleme

This commit is contained in:
Sedat ÖZTÜRK 2025-08-13 17:58:33 +03:00
parent 10d6e22cec
commit bac78eec46
12 changed files with 1165 additions and 1150 deletions

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.rs1dfl4jqho" "revision": "0.u7hl29mc92g"
}], {}); }], {});
workbox.cleanupOutdatedCaches(); workbox.cleanupOutdatedCaches();
workbox.registerRoute(new workbox.NavigationRoute(workbox.createHandlerBoundToURL("index.html"), { workbox.registerRoute(new workbox.NavigationRoute(workbox.createHandlerBoundToURL("index.html"), {

View file

@ -1,14 +1,9 @@
import React from 'react' import React from 'react'
import { import { LayoutDashboard, Database, Zap, Server, Puzzle } from 'lucide-react'
LayoutDashboard,
Database,
Zap,
Server,
Puzzle,
} from 'lucide-react'
import { useLocalization } from '@/utils/hooks/useLocalization' import { useLocalization } from '@/utils/hooks/useLocalization'
import { useLocation, useNavigate } from 'react-router-dom' import { useLocation, useNavigate } from 'react-router-dom'
import { ROUTES_ENUM } from '@/routes/route.constant' import { ROUTES_ENUM } from '@/routes/route.constant'
import { Container } from '../shared'
interface DeveloperLayoutProps { interface DeveloperLayoutProps {
children: React.ReactNode children: React.ReactNode
@ -53,11 +48,11 @@ const DeveloperLayout: React.FC<DeveloperLayoutProps> = ({ children }) => {
] ]
return ( return (
<div className="min-h-screen bg-gray-50"> <Container>
<div className="mx-auto px-4 sm:px-6 lg:px-8 py-8"> <div className="mx-auto px-4 sm:px-6 lg:px-8 py-8">
<div className="flex flex-col lg:flex-row gap-8"> <div className="flex flex-col lg:flex-row gap-8">
{/* Sidebar */} {/* Sidebar */}
<div className="lg:w-64 flex-shrink-0"> <div className="lg:w-64 flex-shrink-0 p-4 bg-gray-50">
<nav className="space-y-2"> <nav className="space-y-2">
{navigation.map((item) => { {navigation.map((item) => {
const Icon = item.icon const Icon = item.icon
@ -84,7 +79,7 @@ const DeveloperLayout: React.FC<DeveloperLayoutProps> = ({ children }) => {
<div className="flex-1">{children}</div> <div className="flex-1">{children}</div>
</div> </div>
</div> </div>
</div> </Container>
) )
} }

View file

@ -55,10 +55,10 @@ const DefaultItem = ({ nav, onLinkClick }: DefaultItemProps) => {
} }
target={subNav.isExternalLink ? '_blank' : ''} target={subNav.isExternalLink ? '_blank' : ''}
> >
<span>{nav.title}</span> <span>{subNav.title}</span>
</Link> </Link>
) : ( ) : (
<span>{nav.title}</span> <span>{subNav.title}</span>
)} )}
</MenuItem> </MenuItem>
</PermissionCheck> </PermissionCheck>

View file

@ -1,4 +1,5 @@
import { MenuItem } from '@/@types/menu' import { MenuItem } from '@/@types/menu'
import isDisabled from '@/components/ui/DatePicker/tables/components/props/isDisabled'
import { getMenus, MenuService } from '@/services/menu.service' import { getMenus, MenuService } from '@/services/menu.service'
import { useStoreActions } from '@/store/store' import { useStoreActions } from '@/store/store'
import { useState, useEffect } from 'react' import { useState, useEffect } from 'react'
@ -57,7 +58,7 @@ export const useMenuData = () => {
const response = await getMenus() const response = await getMenus()
if (response.data) { if (response.data) {
const hierarchicalMenu = buildHierarchy(response.data.items) const hierarchicalMenu = buildHierarchy(response.data.items || [])
setMenuItems(hierarchicalMenu) setMenuItems(hierarchicalMenu)
} }
} catch (err) { } catch (err) {

View file

@ -129,8 +129,6 @@ const Wizard = () => {
const navigate = useNavigate() const navigate = useNavigate()
return ( return (
<>
<div className="grid lg:grid-cols-2 xl:grid-cols-3">
<Container> <Container>
<Helmet <Helmet
titleTemplate="%s | Kurs Platform" titleTemplate="%s | Kurs Platform"
@ -138,6 +136,7 @@ const Wizard = () => {
defaultTitle="Kurs Platform" defaultTitle="Kurs Platform"
></Helmet> ></Helmet>
<div className="grid lg:grid-cols-2 xl:grid-cols-3">
<Formik <Formik
initialValues={{ ...initialValues }} initialValues={{ ...initialValues }}
validationSchema={listFormValidationSchema} validationSchema={listFormValidationSchema}
@ -274,9 +273,7 @@ const Wizard = () => {
<div className="grid grid-cols-2 gap-1"> <div className="grid grid-cols-2 gap-1">
<FormItem <FormItem
label="Parent Menu Code (En)" label="Parent Menu Code (En)"
invalid={ invalid={errors.languageTextMenuParentEn && touched.languageTextMenuParentEn}
errors.languageTextMenuParentEn && touched.languageTextMenuParentEn
}
errorMessage={errors.languageTextMenuParentEn} errorMessage={errors.languageTextMenuParentEn}
asterisk={true} asterisk={true}
> >
@ -290,9 +287,7 @@ const Wizard = () => {
</FormItem> </FormItem>
<FormItem <FormItem
label="Parent Menu Code (Tr)" label="Parent Menu Code (Tr)"
invalid={ invalid={errors.languageTextMenuParentTr && touched.languageTextMenuParentTr}
errors.languageTextMenuParentTr && touched.languageTextMenuParentTr
}
errorMessage={errors.languageTextMenuParentTr} errorMessage={errors.languageTextMenuParentTr}
asterisk={true} asterisk={true}
> >
@ -329,9 +324,7 @@ const Wizard = () => {
options={dataSourceList} options={dataSourceList}
value={ value={
values.dataSourceCode values.dataSourceCode
? (dataSourceList?.find( ? (dataSourceList?.find((o) => o.value === values.dataSourceCode) ?? {
(o) => o.value === values.dataSourceCode,
) ?? {
label: values.dataSourceCode, label: values.dataSourceCode,
value: values.dataSourceCode, value: values.dataSourceCode,
}) })
@ -385,9 +378,7 @@ const Wizard = () => {
field={field} field={field}
form={form} form={form}
options={selectCommandTypeOptions} options={selectCommandTypeOptions}
value={selectCommandTypeOptions.find( value={selectCommandTypeOptions.find((o: any) => o.value === field.value)}
(o: any) => o.value === field.value,
)}
onChange={(o) => form.setFieldValue(field.name, o?.value)} onChange={(o) => form.setFieldValue(field.name, o?.value)}
/> />
)} )}
@ -540,22 +531,15 @@ const Wizard = () => {
/> />
</FormItem> </FormItem>
</div> </div>
<Button <Button block className="mt-4" variant="solid" loading={isSubmitting} type="submit">
block
className="mt-4"
variant="solid"
loading={isSubmitting}
type="submit"
>
{isSubmitting ? translate('::SavingWithThreeDot') : translate('::Save')} {isSubmitting ? translate('::SavingWithThreeDot') : translate('::Save')}
</Button> </Button>
</FormContainer> </FormContainer>
</Form> </Form>
)} )}
</Formik> </Formik>
</Container>
</div> </div>
</> </Container>
) )
} }

View file

@ -457,7 +457,6 @@ const OrganizationUnits = () => {
></Helmet> ></Helmet>
<Loading type="cover" loading={loading}> <Loading type="cover" loading={loading}>
<Container> <Container>
<AdaptableCard>
<div className="flex flex-col lg:flex-row gap-4"> <div className="flex flex-col lg:flex-row gap-4">
<Card <Card
className="md:w-2/12 min-w-fit" className="md:w-2/12 min-w-fit"
@ -666,7 +665,6 @@ const OrganizationUnits = () => {
</Tabs> </Tabs>
</Card> </Card>
</div> </div>
</AdaptableCard>
</Container> </Container>
</Loading> </Loading>

View file

@ -38,7 +38,7 @@ import { MdDelete } from 'react-icons/md'
import { useParams } from 'react-router-dom' import { useParams } from 'react-router-dom'
import * as Yup from 'yup' import * as Yup from 'yup'
import { SelectBoxOption } from '@/shared/types' import { SelectBoxOption } from '@/shared/types'
import { ConfirmDialog } from '@/components/shared' import { ConfirmDialog, Container } from '@/components/shared'
import { AssignedClaimViewModel, UserInfoViewModel } from '@/proxy/admin/models' import { AssignedClaimViewModel, UserInfoViewModel } from '@/proxy/admin/models'
export interface ClaimTypeDto { export interface ClaimTypeDto {
@ -109,6 +109,7 @@ function UserDetails() {
title={userDetails.email} title={userDetails.email}
defaultTitle="Kurs Platform" defaultTitle="Kurs Platform"
></Helmet> ></Helmet>
<Container>
<Tabs defaultValue="user"> <Tabs defaultValue="user">
<TabList> <TabList>
<TabNav value="user" icon={<HiOutlineUser />}> <TabNav value="user" icon={<HiOutlineUser />}>
@ -154,8 +155,15 @@ function UserDetails() {
<div className="grid grid-cols-1 lg:grid-cols-2 gap-4 w-full"> <div className="grid grid-cols-1 lg:grid-cols-2 gap-4 w-full">
{/* Personal Information */} {/* Personal Information */}
<div> <div>
<FormItem label={translate('::Abp.Identity.User.UserInformation.Name')}> <FormItem
<Field type="text" name="name" placeholder="Name" component={Input} /> label={translate('::Abp.Identity.User.UserInformation.Name')}
>
<Field
type="text"
name="name"
placeholder="Name"
component={Input}
/>
</FormItem> </FormItem>
</div> </div>
@ -240,10 +248,14 @@ function UserDetails() {
{/* Contact Information */} {/* Contact Information */}
<div> <div>
<h6 className="mb-4"> <h6 className="mb-4">
{translate('::Abp.Identity.User.UserInformation.ContactInformation')} {translate(
'::Abp.Identity.User.UserInformation.ContactInformation',
)}
</h6> </h6>
<FormItem <FormItem
label={translate('::Abp.Identity.User.UserInformation.EmailAddress')} label={translate(
'::Abp.Identity.User.UserInformation.EmailAddress',
)}
> >
<Field <Field
type="text" type="text"
@ -293,7 +305,9 @@ function UserDetails() {
onChange={(date: any) => { onChange={(date: any) => {
form.setFieldValue( form.setFieldValue(
field.name, field.name,
date ? dayjs(date).format('YYYY-MM-DDTHH:mm:ss[Z]') : null, date
? dayjs(date).format('YYYY-MM-DDTHH:mm:ss[Z]')
: null,
) )
}} }}
/> />
@ -494,7 +508,9 @@ function UserDetails() {
onChange={(date) => { onChange={(date) => {
form.setFieldValue( form.setFieldValue(
field.name, field.name,
date ? dayjs(date).format('YYYY-MM-DDTHH:mm:ss[Z]') : null, date
? dayjs(date).format('YYYY-MM-DDTHH:mm:ss[Z]')
: null,
) )
}} }}
/> />
@ -556,7 +572,9 @@ function UserDetails() {
onChange={(date) => { onChange={(date) => {
form.setFieldValue( form.setFieldValue(
field.name, field.name,
date ? dayjs(date).format('YYYY-MM-DDTHH:mm:ss[Z]') : null, date
? dayjs(date).format('YYYY-MM-DDTHH:mm:ss[Z]')
: null,
) )
}} }}
/> />
@ -661,6 +679,7 @@ function UserDetails() {
</div> </div>
</TabContent> </TabContent>
</Tabs> </Tabs>
</Container>
<Dialog isOpen={open} onClose={() => setOpen(false)} onRequestClose={() => setOpen(false)}> <Dialog isOpen={open} onClose={() => setOpen(false)} onRequestClose={() => setOpen(false)}>
<Formik <Formik

View file

@ -6,6 +6,7 @@ import LoadAiPostsFromLocalStorage from './LoadAiPostsFromLocalStorage'
import { useLocalization } from '@/utils/hooks/useLocalization' import { useLocalization } from '@/utils/hooks/useLocalization'
import { getAi } from '@/services/ai.service' import { getAi } from '@/services/ai.service'
import { AiDto } from '@/proxy/ai/models' import { AiDto } from '@/proxy/ai/models'
import { Container } from '@/components/shared'
// Types // Types
type ChatType = 'chat' | 'query' | 'analyze' type ChatType = 'chat' | 'query' | 'analyze'
@ -262,9 +263,8 @@ const Assistant = () => {
// Render // Render
return ( return (
<> <Container>
<LoadAiPostsFromLocalStorage /> <LoadAiPostsFromLocalStorage />
<div className="h-[calc(100vh-140px)] flex flex-col"> <div className="h-[calc(100vh-140px)] flex flex-col">
<div className="flex-1 overflow-y-auto p-4 space-y-4"> <div className="flex-1 overflow-y-auto p-4 space-y-4">
{messages.length === 0 && ( {messages.length === 0 && (
@ -359,7 +359,7 @@ const Assistant = () => {
</div> </div>
</form> </form>
</div> </div>
</> </Container>
) )
} }

View file

@ -3,6 +3,7 @@ import { useStoreState } from '@/store/store'
import React, { useState, useEffect } from 'react' import React, { useState, useEffect } from 'react'
import { useForumData } from './useForumData' import { useForumData } from './useForumData'
import { ForumView } from './forum/ForumView' import { ForumView } from './forum/ForumView'
import { Container } from '@/components/shared'
export function Forum() { export function Forum() {
const { user, tenant } = useStoreState((state) => state.auth) const { user, tenant } = useStoreState((state) => state.auth)
@ -45,7 +46,7 @@ export function Forum() {
}, [error, clearError]) }, [error, clearError])
return ( return (
<div className="min-h-screen bg-gray-50"> <Container>
{error && ( {error && (
<div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-4"> <div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-4">
<div className="bg-red-100 border border-red-400 text-red-700 px-4 py-3 rounded relative"> <div className="bg-red-100 border border-red-400 text-red-700 px-4 py-3 rounded relative">
@ -76,7 +77,7 @@ export function Forum() {
onTopicSelect={setSelectedTopic} onTopicSelect={setSelectedTopic}
onViewStateChange={setForumViewState} onViewStateChange={setForumViewState}
/> />
</div> </Container>
) )
} }

View file

@ -1,6 +1,7 @@
import { useEffect } from 'react' import { useEffect } from 'react'
import { useForumData } from './useForumData' import { useForumData } from './useForumData'
import { AdminView } from './admin/AdminView' import { AdminView } from './admin/AdminView'
import { Container } from '@/components/shared'
export function Management() { export function Management() {
const { const {
@ -52,7 +53,7 @@ export function Management() {
}, [error, clearError]) }, [error, clearError])
return ( return (
<div className="min-h-screen bg-gray-50"> <Container>
{error && ( {error && (
<div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-4"> <div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-4">
<div className="bg-red-100 border border-red-400 text-red-700 px-4 py-3 rounded relative"> <div className="bg-red-100 border border-red-400 text-red-700 px-4 py-3 rounded relative">
@ -90,7 +91,7 @@ export function Management() {
onMarkPostAsAcceptedAnswer={(id) => markPostAsAcceptedAnswer(id).then(() => {})} onMarkPostAsAcceptedAnswer={(id) => markPostAsAcceptedAnswer(id).then(() => {})}
onUnmarkPostAsAcceptedAnswer={(id) => unmarkPostAsAcceptedAnswer(id).then(() => {})} onUnmarkPostAsAcceptedAnswer={(id) => unmarkPostAsAcceptedAnswer(id).then(() => {})}
/> />
</div> </Container>
) )
} }

View file

@ -75,20 +75,36 @@ export function AdminView({
onUnmarkPostAsAcceptedAnswer, onUnmarkPostAsAcceptedAnswer,
}: AdminViewProps) { }: AdminViewProps) {
const [activeSection, setActiveSection] = useState<AdminSection>('stats') const [activeSection, setActiveSection] = useState<AdminSection>('stats')
const { translate } = useLocalization(); const { translate } = useLocalization()
const navigationItems = [ const navigationItems = [
{ id: 'stats' as AdminSection, label: translate('::App.Forum.Dashboard.Dashboard'), icon: BarChart3 }, {
{ id: 'categories' as AdminSection, label: translate('::App.Forum.Dashboard.Categories'), icon: Folder }, id: 'stats' as AdminSection,
{ id: 'topics' as AdminSection, label: translate('::App.Forum.Dashboard.Topics'), icon: MessageSquare }, label: translate('::App.Forum.Dashboard.Dashboard'),
{ id: 'posts' as AdminSection, label: translate('::App.Forum.Dashboard.Posts'), icon: FileText }, icon: BarChart3,
},
{
id: 'categories' as AdminSection,
label: translate('::App.Forum.Dashboard.Categories'),
icon: Folder,
},
{
id: 'topics' as AdminSection,
label: translate('::App.Forum.Dashboard.Topics'),
icon: MessageSquare,
},
{
id: 'posts' as AdminSection,
label: translate('::App.Forum.Dashboard.Posts'),
icon: FileText,
},
] ]
return ( return (
<div className="mx-auto px-4 sm:px-6 lg:px-8 py-8"> <div className="mx-auto px-4 sm:px-6 lg:px-8 py-8">
<div className="flex flex-col lg:flex-row gap-8"> <div className="flex flex-col lg:flex-row gap-8">
{/* Sidebar Navigation */} {/* Sidebar Navigation */}
<div className="lg:w-64 flex-shrink-0"> <div className="lg:w-64 flex-shrink-0 p-4 bg-gray-50">
<nav className="space-y-2"> <nav className="space-y-2">
{navigationItems.map((item) => { {navigationItems.map((item) => {
const Icon = item.icon const Icon = item.icon

View file

@ -3,6 +3,7 @@ import { SortableMenuTree } from './SortableMenuTree'
import { MenuItem } from '@/@types/menu' import { MenuItem } from '@/@types/menu'
import { useMenuData } from '@/utils/hooks/useMenuData' import { useMenuData } from '@/utils/hooks/useMenuData'
import { AlertCircle, Loader2, Menu, Save } from 'lucide-react' import { AlertCircle, Loader2, Menu, Save } from 'lucide-react'
import { Container } from '@/components/shared'
export const MenuManager = () => { export const MenuManager = () => {
const { menuItems, setMenuItems, loading, error, refetch, saveMenuData } = useMenuData() const { menuItems, setMenuItems, loading, error, refetch, saveMenuData } = useMenuData()
@ -76,9 +77,8 @@ export const MenuManager = () => {
} }
return ( return (
<div className="w-full h-full"> <Container>
{/* Menu Tree */} <div className="bg-white rounded px-4 sm:px-4 lg:px-6 py-6">
<div className="bg-white rounded-lg shadow-md p-6">
<div className="flex items-center justify-between mb-6 flex-wrap gap-4"> <div className="flex items-center justify-between mb-6 flex-wrap gap-4">
{/* Sol kısım: Başlık */} {/* Sol kısım: Başlık */}
<div className="flex items-center gap-2"> <div className="flex items-center gap-2">
@ -152,7 +152,7 @@ export const MenuManager = () => {
</div> </div>
)} )}
</div> </div>
</div> </Container>
) )
} }