From 6a7169e2ae0d37c4adb618d982a9f361fafba0ee Mon Sep 17 00:00:00 2001 From: DIKER0K Date: Sat, 6 Dec 2025 14:14:01 +0500 Subject: [PATCH] new style VersionExplorer --- src/renderer/pages/VersionsExplorer.tsx | 204 +++++++++++++++--------- 1 file changed, 133 insertions(+), 71 deletions(-) diff --git a/src/renderer/pages/VersionsExplorer.tsx b/src/renderer/pages/VersionsExplorer.tsx index f781fbc..144128b 100644 --- a/src/renderer/pages/VersionsExplorer.tsx +++ b/src/renderer/pages/VersionsExplorer.tsx @@ -4,19 +4,15 @@ import { Typography, Grid, Card, - CardMedia, CardContent, - CardActions, Button, Modal, List, ListItem, ListItemText, - IconButton, } from '@mui/material'; import { useNavigate } from 'react-router-dom'; import AddIcon from '@mui/icons-material/Add'; -import DownloadIcon from '@mui/icons-material/Download'; import { FullScreenLoader } from '../components/FullScreenLoader'; interface VersionCardProps { @@ -30,10 +26,13 @@ interface VersionCardProps { hoveredCardId: string | null; } +const gradientPrimary = + 'linear-gradient(71deg, #F27121 0%, #E940CD 70%, #8A2387 100%)'; + export const VersionCard: React.FC = ({ id, name, - imageUrl, + imageUrl, // пока не используется, но оставляем для будущего version, onSelect, isHovered, @@ -43,24 +42,28 @@ export const VersionCard: React.FC = ({ return ( onSelect(id)} @@ -74,7 +77,8 @@ export const VersionCard: React.FC = ({ flexDirection: 'column', alignItems: 'center', justifyContent: 'center', - height: '10%', + gap: '1vh', + textAlign: 'center', }} > = ({ component="div" sx={{ fontWeight: 'bold', - color: '#ffffff', - fontSize: '1.5rem', + fontFamily: 'Benzin-Bold', + fontSize: '2vw', + backgroundImage: gradientPrimary, + WebkitBackgroundClip: 'text', + WebkitTextFillColor: 'transparent', }} > {name} + + Версия {version} + ); @@ -168,7 +184,6 @@ export const VersionsExplorer = () => { } } catch (error) { console.error('Ошибка при загрузке версий:', error); - // Можно добавить обработку ошибки, например показать уведомление } finally { setLoading(false); } @@ -181,10 +196,8 @@ export const VersionsExplorer = () => { const cfg: any = (version as any).config; if (cfg && (cfg.downloadUrl || cfg.apiReleaseUrl)) { - // Версия из Gist — у неё есть нормальный config localStorage.setItem('selected_version_config', JSON.stringify(cfg)); } else { - // Установленная версия без config — не засоряем localStorage пустым объектом localStorage.removeItem('selected_version_config'); } @@ -203,7 +216,6 @@ export const VersionsExplorer = () => { try { setDownloadLoading(version.id); - // Скачивание и установка выбранной версии const downloadResult = await window.electron.ipcRenderer.invoke( 'download-and-extract', { @@ -216,7 +228,6 @@ export const VersionsExplorer = () => { ); if (downloadResult?.success) { - // Добавляем скачанную версию в список установленных setInstalledVersions((prev) => [...prev, version]); setModalOpen(false); } @@ -231,49 +242,42 @@ export const VersionsExplorer = () => { const AddVersionCard = () => ( setHoveredCardId('add')} onMouseLeave={() => setHoveredCardId(null)} > - + - Добавить - - - версию + Добавить версию ); @@ -292,20 +296,51 @@ export const VersionsExplorer = () => { overflow: 'hidden', }} > - {/* Глобальный фоновый слой для размытия всего интерфейса */} + {/* Заголовок страницы в стиле Registration */} + + Выбор версии клиента + + + Выберите установленную версию или добавьте новую сборку + + + + {/* Глобальный фоновый слой (мягкий эффект) */} + {/* + /> */} {loading ? ( @@ -318,13 +353,12 @@ export const VersionsExplorer = () => { height: '100%', overflowY: 'auto', justifyContent: 'center', - alignContent: 'center', + alignContent: 'flex-start', position: 'relative', - zIndex: 6, - padding: '2vh 0', + zIndex: 1, + pt: '3vh', }} > - {/* Показываем установленные версии или дефолтную, если она есть */} {installedVersions.length > 0 ? ( installedVersions.map((version) => ( { )) ) : ( - // Если нет ни одной версии, показываем карточку добавления { )} - {/* Всегда добавляем карточку для добавления новых версий */} {installedVersions.length > 0 && ( { top: '50%', left: '50%', transform: 'translate(-50%, -50%)', - width: 400, + width: 420, + maxWidth: '90vw', maxHeight: '80vh', overflowY: 'auto', - background: 'linear-gradient(45deg, #000000 10%, #3b4187 184.73%)', - border: '2px solid #000', - boxShadow: 24, + background: 'linear-gradient(145deg, #000000 10%, #8A2387 100%)', + border: '1px solid rgba(255,255,255,0.16)', + boxShadow: '0 20px 60px rgba(0,0,0,0.85)', p: 4, - borderRadius: '3vw', - gap: '1vh', + borderRadius: '2.5vw', + gap: '1.5vh', display: 'flex', flexDirection: 'column', - backdropFilter: 'blur(10px)', + backdropFilter: 'blur(18px)', }} > - + Доступные версии для скачивания @@ -426,17 +467,22 @@ export const VersionsExplorer = () => { Загрузка доступных версий... ) : ( - + {availableVersions.map((version) => ( handleSelectVersion(version)} @@ -444,11 +490,22 @@ export const VersionsExplorer = () => { + {downloadLoading === version.id && ( + + Загрузка... + + )} ))} @@ -456,15 +513,20 @@ export const VersionsExplorer = () => {