48 lines
1.5 KiB
HTML
48 lines
1.5 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="ru">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>{% block title %}BerryFlow | Timelapse Manager{% endblock %}</title>
|
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
|
|
<style>
|
|
.main-content { min-height: 80vh; padding: 20px 0; }
|
|
</style>
|
|
<script>
|
|
const getStoredTheme = () => localStorage.getItem('theme')
|
|
const setStoredTheme = theme => localStorage.setItem('theme', theme)
|
|
|
|
const getPreferredTheme = () => {
|
|
const storedTheme = getStoredTheme()
|
|
if (storedTheme) return storedTheme
|
|
return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'
|
|
}
|
|
|
|
const setTheme = theme => {
|
|
document.documentElement.setAttribute('data-bs-theme', theme)
|
|
}
|
|
|
|
setTheme(getPreferredTheme())
|
|
|
|
window.addEventListener('DOMContentLoaded', () => {
|
|
document.getElementById('theme-toggle').addEventListener('click', () => {
|
|
const theme = getStoredTheme() === 'dark' ? 'light' : 'dark'
|
|
setStoredTheme(theme)
|
|
setTheme(theme)
|
|
})
|
|
})
|
|
</script>
|
|
</head>
|
|
<body>
|
|
{% include 'inc/_navbar.html' %}
|
|
|
|
<div class="container main-content">
|
|
{% block content %}
|
|
{% endblock %}
|
|
</div>
|
|
|
|
{% include 'inc/_footer.html' %}
|
|
|
|
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
|
|
</body>
|
|
</html> |