new folder structure / add de translation
|
@ -1 +0,0 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 212 212" width="32" height="32"><style>circle,path{fill:none;stroke:#000;stroke-width:15}path{stroke-width:25}.orange{stroke:#f60}.red{stroke:#d40000}</style><g transform="translate(6 6)"><path d="M58 168V70a50 50 0 0 1 50-50h20" class="orange"/><path d="M58 168v-30a50 50 0 0 1 50-50h20" class="red"/><circle cx="142" cy="20" r="18" class="orange"/><circle cx="142" cy="88" r="18" class="red"/><circle cx="58" cy="180" r="18" class="red"/></g></svg>
|
Before Width: | Height: | Size: 503 B |
Before Width: | Height: | Size: 740 B |
Before Width: | Height: | Size: 68 KiB |
Before Width: | Height: | Size: 6.8 KiB |
Before Width: | Height: | Size: 52 KiB |
Before Width: | Height: | Size: 8.1 KiB |
Before Width: | Height: | Size: 35 KiB |
Before Width: | Height: | Size: 5.9 KiB |
Before Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 2.5 KiB |
34
steam-gift-manager/static/manifest.json
Normal file
|
@ -0,0 +1,34 @@
|
|||
{
|
||||
"id": "/",
|
||||
"name": "Game Key Manager",
|
||||
"short_name": "GameKeys",
|
||||
"start_url": "/",
|
||||
"display": "standalone",
|
||||
"background_color": "#212529",
|
||||
"theme_color": "#212529",
|
||||
"description": "Manage Steam/GOG keys easily!",
|
||||
"orientation": "any",
|
||||
"launch_handler": {
|
||||
"client_mode": "navigate-existing"
|
||||
},
|
||||
"icons": [
|
||||
{
|
||||
"src": "/static/logo_small.webp",
|
||||
"sizes": "192x192",
|
||||
"type": "image/webp",
|
||||
"purpose": "any"
|
||||
},
|
||||
{
|
||||
"src": "/static/logo_small_maskable.webp",
|
||||
"sizes": "192x192",
|
||||
"type": "image/webp",
|
||||
"purpose": "maskable"
|
||||
},
|
||||
{
|
||||
"src": "/static/logo.webp",
|
||||
"sizes": "512x512",
|
||||
"type": "image/webp",
|
||||
"purpose": "any maskable"
|
||||
}
|
||||
]
|
||||
}
|
32
steam-gift-manager/static/serviceworker.js
Normal file
|
@ -0,0 +1,32 @@
|
|||
const CACHE_NAME = 'game-key-manager-v2';
|
||||
const ASSETS = [
|
||||
'/',
|
||||
'/static/style.css',
|
||||
'/static/logo.webp',
|
||||
'/static/logo_small.webp',
|
||||
'/static/gog_logo.webp',
|
||||
'/static/forgejo.webp'
|
||||
];
|
||||
|
||||
self.addEventListener('install', (event) => {
|
||||
event.waitUntil(
|
||||
caches.open(CACHE_NAME)
|
||||
.then(cache => cache.addAll(ASSETS))
|
||||
);
|
||||
});
|
||||
|
||||
self.addEventListener('fetch', (event) => {
|
||||
event.respondWith(
|
||||
caches.match(event.request)
|
||||
.then(cachedResponse => cachedResponse || fetch(event.request))
|
||||
);
|
||||
});
|
||||
|
||||
self.addEventListener('activate', (event) => {
|
||||
event.waitUntil(
|
||||
caches.keys().then(keys => Promise.all(
|
||||
keys.filter(key => key !== CACHE_NAME)
|
||||
.map(key => caches.delete(key))
|
||||
))
|
||||
);
|
||||
});
|
|
@ -60,3 +60,76 @@ body {
|
|||
.table-pdf td, .table-pdf th {
|
||||
padding: 4px 8px;
|
||||
}
|
||||
|
||||
.badge.bg-warning {
|
||||
background-color: #ffcc00 !important;
|
||||
color: #222 !important;
|
||||
}
|
||||
.badge.bg-success {
|
||||
background-color: #198754 !important;
|
||||
color: #fff !important;
|
||||
}
|
||||
|
||||
|
||||
.game-cover {
|
||||
width: 368px;
|
||||
height: 172px;
|
||||
max-width: 100%;
|
||||
max-height: 35vw;
|
||||
object-fit: contain;
|
||||
background: #222;
|
||||
border-radius: 8px;
|
||||
display: block;
|
||||
margin: 0 auto;
|
||||
transition: width 0.2s, height 0.2s;
|
||||
}
|
||||
|
||||
/* Responsive Cover Images */
|
||||
.game-cover {
|
||||
width: 368px;
|
||||
height: 172px;
|
||||
object-fit: contain;
|
||||
background: #222;
|
||||
border-radius: 6px;
|
||||
}
|
||||
|
||||
@media (max-width: 1200px) {
|
||||
.game-cover {
|
||||
width: 260px;
|
||||
height: 122px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 992px) {
|
||||
.game-cover {
|
||||
width: 180px;
|
||||
height: 84px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 768px) {
|
||||
.game-cover {
|
||||
width: 120px;
|
||||
height: 56px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 576px) {
|
||||
.game-cover {
|
||||
width: 90px;
|
||||
height: 42px;
|
||||
}
|
||||
}
|
||||
|
||||
/* Accessibility Improvements */
|
||||
.visually-hidden {
|
||||
position: absolute;
|
||||
width: 1px;
|
||||
height: 1px;
|
||||
padding: 0;
|
||||
margin: -1px;
|
||||
overflow: hidden;
|
||||
clip: rect(0, 0, 0, 0);
|
||||
border: 0;
|
||||
}
|
||||
|
||||
|
|