Vibe-code дизайн fix

This commit is contained in:
anibus 2026-07-23 11:15:57 +03:00
parent c750e19443
commit 57779cacbd
6 changed files with 50 additions and 8 deletions

View File

@ -2,6 +2,9 @@
<html>
<head>
<meta charset="utf-8" />
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="0" />
<title>Webpack App</title>
</head>
<body>

View File

@ -2,6 +2,7 @@
<html lang="en">
<head>
<meta charset="utf-8" />
<meta http-equiv="Cache-Control" content="no-cache, must-revalidate" />
<link rel="icon" href="%PUBLIC_URL%/favicon.ico" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="theme-color" content="#000000" />
@ -30,7 +31,31 @@
<body>
<!-- Yandex.Metrika counter --> <script type="text/javascript" > (function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)}; m[i].l=1*new Date(); for (var j = 0; j < document.scripts.length; j++) {if (document.scripts[j].src === r) { return; }} k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)}) (window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym"); ym(99502794, "init", { clickmap:true, trackLinks:true, accurateTrackBounce:true, webvisor:true }); </script> <noscript><div><img src="https://mc.yandex.ru/watch/99502794" style="position:absolute; left:-9999px;" alt="" /></div></noscript> <!-- /Yandex.Metrika counter -->
<noscript>You need to enable JavaScript to run this app.</noscript>
<script type="text/babel" src="./index_bundle.js"></script>
<script>
(function () {
var VERSION = 'v1.0.1';
var stored = localStorage.getItem('app_version');
if (stored !== VERSION) {
localStorage.setItem('app_version', VERSION);
if ('caches' in window) {
caches.keys().then(function (names) {
names.forEach(function (name) { caches.delete(name); });
});
}
if ('serviceWorker' in navigator) {
navigator.serviceWorker.getRegistrations().then(function (regs) {
regs.forEach(function (r) { r.unregister(); });
});
}
}
// bfcache: если страница восстановлена из back-forward cache — перезагружаем
window.addEventListener('pageshow', function (event) {
if (event.persisted) {
window.location.reload();
}
});
})();
</script>
<div id="root"></div>
<!--
This HTML file is a template.

View File

@ -74,7 +74,7 @@ function AppBarContent() {
<Box sx={{ display: 'flex', alignItems: 'center', gap: 2 }}>
<img src="/images/dowdelogo.png" alt="logo" style={{ height: 32, cursor: 'pointer' }} onClick={handleLogoClick}/>
<LogoText variant="h6" sx={{ textDecoration: 'none', cursor: 'pointer' }} onClick={handleLogoClick}>
Autogenerated wiki
Wiki
</LogoText>
</Box>
<ThemeToggle onClick={toggleTheme} size="large">
@ -90,7 +90,7 @@ function AppBarContent() {
<Box sx={{ display: 'flex', alignItems: 'center', gap: 2 }}>
<img src="/images/dowdelogo.png" alt="logo" style={{ height: 32, cursor: 'pointer' }} onClick={handleLogoClick}/>
<LogoText variant="h6" sx={{ textDecoration: 'none', cursor: 'pointer' }} onClick={handleLogoClick}>
Autogenerated wiki
Wiki
</LogoText>
</Box>
<ThemeToggleLight onClick={toggleTheme} size="large">

View File

@ -3,7 +3,6 @@ import {styled} from '@mui/material/styles';
export const DescriptionBox = styled('div')(({ theme }) => ({
color: theme.palette.text.primary,
lineHeight: 1.7,
fontSize: '0.95rem',
padding: theme.spacing(3),
background: theme.palette.mode === 'dark' ? 'rgba(255, 255, 255, 0.03)' : 'rgba(0, 0, 0, 0.03)',
borderRadius: '12px',

View File

@ -93,7 +93,7 @@ const UnitListItem = styled(ListItem)(({ theme }) => ({
borderRadius: '8px',
border: `1px solid ${theme.palette.mode === 'dark' ? 'rgba(255,255,255,0.05)' : 'rgba(0,0,0,0.05)'}`,
transition: 'all 0.2s ease',
'&:hover': { background: theme.palette.mode === 'dark' ? 'rgba(255,255,255,0.1)' : 'rgba(233, 69, 96, 0.1)', borderColor: theme.palette.mode === 'dark' ? 'rgba(255,255,255,0.3)' : 'rgba(233, 69, 96, 0.3)' },
'&:hover': { background: theme.palette.mode === 'dark' ? 'rgba(255,255,255,0.1)' : 'rgba(0,0,0,0.08)', borderColor: theme.palette.mode === 'dark' ? 'rgba(255,255,255,0.3)' : 'rgba(0,0,0,0.2)' },
}));
interface UintPageState {

View File

@ -15,7 +15,7 @@ import {
Divider,
useTheme,
Paper,
LinearProgress
LinearProgress,
} from "@mui/material";
import { styled } from '@mui/material/styles';
@ -280,8 +280,6 @@ function Mods({ mods }: ModsProps) {
return (
<Box>
<Grid container spacing={3}>
{[...new Set(sortedMods.map(m => m.name))].map((modName, index) => (
<Grid item xs={12} sm={6} md={4} >
@ -310,6 +308,23 @@ class ModsPage extends React.Component<any, ModsPageState> {
}
async componentDidMount() {
// Очистка кэша сайта при заходе на главную страницу (один раз за сессию)
if (!sessionStorage.getItem('cache_cleared')) {
sessionStorage.setItem('cache_cleared', '1');
try {
if ('caches' in window) {
const names = await caches.keys();
await Promise.all(names.map(name => caches.delete(name)));
}
if ('serviceWorker' in navigator) {
const regs = await navigator.serviceWorker.getRegistrations();
await Promise.all(regs.map(r => r.unregister()));
}
} catch (e) {
console.error('Cache clear failed:', e);
}
}
try {
const response = await fetch(AvailableMods);
const data: IMod[] = await response.json();