diff --git a/electron.vite.config.ts b/electron.vite.config.ts
index de357f2..561fc4a 100644
--- a/electron.vite.config.ts
+++ b/electron.vite.config.ts
@@ -12,8 +12,8 @@ export default defineConfig({
renderer: {
resolve: {
alias: {
- '@renderer': resolve('src/renderer/src'),
- '@locales': resolve('locales')
+ '@renderer': resolve(__dirname, 'src/renderer/src'),
+ '@locales': resolve(__dirname, 'src/renderer/src/locales')
}
},
plugins: [react()]
diff --git a/src/renderer/src/App.tsx b/src/renderer/src/App.tsx
index 4196849..a6423e5 100644
--- a/src/renderer/src/App.tsx
+++ b/src/renderer/src/App.tsx
@@ -34,7 +34,9 @@ import {
Tab,
InputAdornment,
CircularProgress,
- Stack
+ Stack,
+ Grid,
+ Avatar
} from '@mui/material'
import {
Dashboard as DashboardIcon,
@@ -55,11 +57,14 @@ import {
Save as SaveIcon,
LanguageOutlined as WebIcon,
Terminal as TerminalIcon,
- ContentCopy as CopyIcon,
Close as CloseIcon,
ContentCopy as ContentCopyIcon,
OpenInNew as OpenIcon,
- Edit as EditIcon
+ Edit as EditIcon,
+ Folder as FolderIcon,
+ Storage as MySQLIcon,
+ Language as HostIcon,
+ Launch as LaunchIcon
} from '@mui/icons-material'
import { useTranslation } from 'react-i18next'
@@ -810,33 +815,110 @@ function App(): JSX.Element {
Henüz bir proje eklenmemiş.
) : (
-
+
{projects.map((project) => (
-
-
- {
- setNewProject(project)
- setIsProjectDialogOpen(true)
- }} sx={{ mr: 1 }}>
-
-
- handleRemoveProject(project.id)}>
-
-
-
- }
+
+
-
-
-
-
+
+
+
+
+
+
+
+ {project.name}
+
+
+ {project.path.length > 40 ? '...' + project.path.slice(-37) : project.path}
+
+
+
+
+
+ {
+ setNewProject(project)
+ setIsProjectDialogOpen(true)
+ }} sx={{ color: 'rgba(255,255,255,0.4)', '&:hover': { color: '#39A7FF' } }}>
+
+
+
+
+ handleRemoveProject(project.id)} sx={{ color: 'rgba(255,255,255,0.4)', '&:hover': { color: '#ff4444' } }}>
+
+
+
+
+
+
+
+
+ }
+ label={`PHP ${project.phpVersion}`}
+ sx={{ bgcolor: 'rgba(71, 74, 255, 0.1)', color: '#777bb4', fontWeight: 600, border: '1px solid rgba(71, 74, 255, 0.2)' }}
+ />
+ {project.mySqlVersion && (
+ }
+ label={`MySQL ${project.mySqlVersion}`}
+ sx={{ bgcolor: 'rgba(242, 145, 17, 0.1)', color: '#f29111', fontWeight: 600, border: '1px solid rgba(242, 145, 17, 0.2)' }}
+ />
+ )}
+
+
+
+
+
+
+ {project.host}
+
+
+ }
+ onClick={() => window.open(`http://${project.host}`, '_blank')}
+ sx={{
+ color: '#39A7FF',
+ textTransform: 'none',
+ fontSize: '0.75rem',
+ p: '2px 8px',
+ '&:hover': { bgcolor: 'rgba(57, 167, 255, 0.1)' }
+ }}
+ >
+ Gözat
+
+
+
+
+
))}
-
+
)}
)}
@@ -1046,51 +1128,12 @@ function App(): JSX.Element {
variant="contained"
disabled={!newProject.name || !newProject.path || installedPhpVersions.length === 0 || mySqlVersions.filter(v => v.status === 'installed').length === 0}
>
-
-
- {/* Log Dialog */}
-
-
- )
+ {newProject.id ? 'Güncelle' : 'Ekle'}
+
+
+
+
+ )
}
- export default App
+export default App
diff --git a/src/renderer/src/i18n.ts b/src/renderer/src/i18n.ts
index 28d984a..e5499fd 100644
--- a/src/renderer/src/i18n.ts
+++ b/src/renderer/src/i18n.ts
@@ -1,8 +1,8 @@
import i18n from 'i18next'
import { initReactI18next } from 'react-i18next'
-import tr from '@locales/tr.json'
-import en from '@locales/en.json'
-import de from '@locales/de.json'
+import tr from './locales/tr.json'
+import en from './locales/en.json'
+import de from './locales/de.json'
i18n
.use(initReactI18next)
diff --git a/locales/de.json b/src/renderer/src/locales/de.json
similarity index 100%
rename from locales/de.json
rename to src/renderer/src/locales/de.json
diff --git a/locales/en.json b/src/renderer/src/locales/en.json
similarity index 100%
rename from locales/en.json
rename to src/renderer/src/locales/en.json
diff --git a/locales/tr.json b/src/renderer/src/locales/tr.json
similarity index 100%
rename from locales/tr.json
rename to src/renderer/src/locales/tr.json
diff --git a/tsconfig.web.json b/tsconfig.web.json
index 4a4ff1f..c3c4125 100644
--- a/tsconfig.web.json
+++ b/tsconfig.web.json
@@ -13,6 +13,9 @@
"paths": {
"@renderer/*": [
"src/renderer/src/*"
+ ],
+ "@locales/*": [
+ "src/renderer/src/locales/*"
]
}
}