aggiunto e testato quasar apps
This commit is contained in:
5
web/static/vendor/flags/ch.svg
vendored
Normal file
5
web/static/vendor/flags/ch.svg
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" role="img" aria-label="Swiss flag">
|
||||
<rect width="32" height="32" fill="#d52b1e"/>
|
||||
<rect x="13" y="6" width="6" height="20" fill="#ffffff"/>
|
||||
<rect x="6" y="13" width="20" height="6" fill="#ffffff"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 271 B |
5
web/static/vendor/flags/de.svg
vendored
Normal file
5
web/static/vendor/flags/de.svg
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 32" role="img" aria-label="German flag">
|
||||
<rect width="48" height="10.67" x="0" y="0" fill="#000000"/>
|
||||
<rect width="48" height="10.67" x="0" y="10.67" fill="#dd0000"/>
|
||||
<rect width="48" height="10.66" x="0" y="21.34" fill="#ffce00"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 301 B |
9
web/static/vendor/flags/en.svg
vendored
Normal file
9
web/static/vendor/flags/en.svg
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 32" role="img" aria-label="English flag">
|
||||
<rect width="48" height="32" fill="#012169"/>
|
||||
<path d="M0 0 48 32M48 0 0 32" stroke="#ffffff" stroke-width="6"/>
|
||||
<path d="M0 0 48 32M48 0 0 32" stroke="#c8102e" stroke-width="3"/>
|
||||
<rect x="20" y="0" width="8" height="32" fill="#ffffff"/>
|
||||
<rect x="0" y="12" width="48" height="8" fill="#ffffff"/>
|
||||
<rect x="22" y="0" width="4" height="32" fill="#c8102e"/>
|
||||
<rect x="0" y="14" width="48" height="4" fill="#c8102e"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 531 B |
53
web/static/vendor/flags/en_us.svg
vendored
Normal file
53
web/static/vendor/flags/en_us.svg
vendored
Normal file
@@ -0,0 +1,53 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 32" role="img" aria-label="United States flag">
|
||||
<rect width="48" height="32" fill="#b22234"/>
|
||||
<g fill="#ffffff">
|
||||
<rect y="2.46" width="48" height="2.46"/>
|
||||
<rect y="7.38" width="48" height="2.46"/>
|
||||
<rect y="12.30" width="48" height="2.46"/>
|
||||
<rect y="17.22" width="48" height="2.46"/>
|
||||
<rect y="22.14" width="48" height="2.46"/>
|
||||
<rect y="27.06" width="48" height="2.46"/>
|
||||
</g>
|
||||
<rect width="20" height="17.23" fill="#3c3b6e"/>
|
||||
<g fill="#ffffff">
|
||||
<circle cx="2.2" cy="2.2" r="0.7"/>
|
||||
<circle cx="5.4" cy="2.2" r="0.7"/>
|
||||
<circle cx="8.6" cy="2.2" r="0.7"/>
|
||||
<circle cx="11.8" cy="2.2" r="0.7"/>
|
||||
<circle cx="15.0" cy="2.2" r="0.7"/>
|
||||
<circle cx="18.2" cy="2.2" r="0.7"/>
|
||||
<circle cx="3.8" cy="4.4" r="0.7"/>
|
||||
<circle cx="7.0" cy="4.4" r="0.7"/>
|
||||
<circle cx="10.2" cy="4.4" r="0.7"/>
|
||||
<circle cx="13.4" cy="4.4" r="0.7"/>
|
||||
<circle cx="16.6" cy="4.4" r="0.7"/>
|
||||
<circle cx="2.2" cy="6.6" r="0.7"/>
|
||||
<circle cx="5.4" cy="6.6" r="0.7"/>
|
||||
<circle cx="8.6" cy="6.6" r="0.7"/>
|
||||
<circle cx="11.8" cy="6.6" r="0.7"/>
|
||||
<circle cx="15.0" cy="6.6" r="0.7"/>
|
||||
<circle cx="18.2" cy="6.6" r="0.7"/>
|
||||
<circle cx="3.8" cy="8.8" r="0.7"/>
|
||||
<circle cx="7.0" cy="8.8" r="0.7"/>
|
||||
<circle cx="10.2" cy="8.8" r="0.7"/>
|
||||
<circle cx="13.4" cy="8.8" r="0.7"/>
|
||||
<circle cx="16.6" cy="8.8" r="0.7"/>
|
||||
<circle cx="2.2" cy="11" r="0.7"/>
|
||||
<circle cx="5.4" cy="11" r="0.7"/>
|
||||
<circle cx="8.6" cy="11" r="0.7"/>
|
||||
<circle cx="11.8" cy="11" r="0.7"/>
|
||||
<circle cx="15.0" cy="11" r="0.7"/>
|
||||
<circle cx="18.2" cy="11" r="0.7"/>
|
||||
<circle cx="3.8" cy="13.2" r="0.7"/>
|
||||
<circle cx="7.0" cy="13.2" r="0.7"/>
|
||||
<circle cx="10.2" cy="13.2" r="0.7"/>
|
||||
<circle cx="13.4" cy="13.2" r="0.7"/>
|
||||
<circle cx="16.6" cy="13.2" r="0.7"/>
|
||||
<circle cx="2.2" cy="15.4" r="0.7"/>
|
||||
<circle cx="5.4" cy="15.4" r="0.7"/>
|
||||
<circle cx="8.6" cy="15.4" r="0.7"/>
|
||||
<circle cx="11.8" cy="15.4" r="0.7"/>
|
||||
<circle cx="15.0" cy="15.4" r="0.7"/>
|
||||
<circle cx="18.2" cy="15.4" r="0.7"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.1 KiB |
5
web/static/vendor/flags/fr.svg
vendored
Normal file
5
web/static/vendor/flags/fr.svg
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 32" role="img" aria-label="French flag">
|
||||
<rect width="16" height="32" x="0" y="0" fill="#0055a4"/>
|
||||
<rect width="16" height="32" x="16" y="0" fill="#ffffff"/>
|
||||
<rect width="16" height="32" x="32" y="0" fill="#ef4135"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 286 B |
5
web/static/vendor/flags/it.svg
vendored
Normal file
5
web/static/vendor/flags/it.svg
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 32" role="img" aria-label="Italian flag">
|
||||
<rect width="16" height="32" x="0" y="0" fill="#009246"/>
|
||||
<rect width="16" height="32" x="16" y="0" fill="#ffffff"/>
|
||||
<rect width="16" height="32" x="32" y="0" fill="#ce2b37"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 287 B |
1
web/static/vendor/htmx.min.js
vendored
Normal file
1
web/static/vendor/htmx.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
62
web/static/vendor/theme.js
vendored
Normal file
62
web/static/vendor/theme.js
vendored
Normal file
@@ -0,0 +1,62 @@
|
||||
(function () {
|
||||
var STORAGE_KEY = 'theme';
|
||||
var isAuthenticated = !!window.__TC_IS_AUTHENTICATED;
|
||||
var serverTheme = (window.__TC_SERVER_THEME || '').toLowerCase();
|
||||
var hasStoredTheme = false;
|
||||
|
||||
function getPreferredTheme() {
|
||||
var stored = localStorage.getItem(STORAGE_KEY);
|
||||
hasStoredTheme = stored === 'dark' || stored === 'light';
|
||||
if (hasStoredTheme) return stored;
|
||||
if (serverTheme === 'dark' || serverTheme === 'light') return serverTheme;
|
||||
return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';
|
||||
}
|
||||
|
||||
function applyTheme(theme) {
|
||||
var isDark = theme === 'dark';
|
||||
document.documentElement.classList.toggle('dark', isDark);
|
||||
var button = document.getElementById('themeToggle');
|
||||
if (button) {
|
||||
button.setAttribute('aria-pressed', isDark ? 'true' : 'false');
|
||||
button.textContent = isDark ? 'Light mode' : 'Dark mode';
|
||||
}
|
||||
}
|
||||
|
||||
function persistTheme(theme) {
|
||||
localStorage.setItem(STORAGE_KEY, theme);
|
||||
hasStoredTheme = true;
|
||||
}
|
||||
|
||||
function sendThemeToServer(theme) {
|
||||
if (!isAuthenticated) return;
|
||||
fetch('/preferences/theme', {
|
||||
method: 'POST',
|
||||
credentials: 'same-origin',
|
||||
headers: { 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' },
|
||||
body: 'theme=' + encodeURIComponent(theme),
|
||||
}).catch(function () {});
|
||||
}
|
||||
|
||||
window.toggleTheme = function toggleTheme() {
|
||||
var currentIsDark = document.documentElement.classList.contains('dark');
|
||||
var nextTheme = currentIsDark ? 'light' : 'dark';
|
||||
applyTheme(nextTheme);
|
||||
persistTheme(nextTheme);
|
||||
sendThemeToServer(nextTheme);
|
||||
};
|
||||
|
||||
window.initThemeToggle = function initThemeToggle() {
|
||||
applyTheme(document.documentElement.classList.contains('dark') ? 'dark' : 'light');
|
||||
};
|
||||
|
||||
var initialTheme = getPreferredTheme();
|
||||
applyTheme(initialTheme);
|
||||
|
||||
var mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');
|
||||
if (typeof mediaQuery.addEventListener === 'function') {
|
||||
mediaQuery.addEventListener('change', function (event) {
|
||||
if (hasStoredTheme) return;
|
||||
applyTheme(event.matches ? 'dark' : 'light');
|
||||
});
|
||||
}
|
||||
})();
|
||||
Reference in New Issue
Block a user