This commit is contained in:
2026-07-21 23:39:19 +02:00
commit b33b217bdb
217 changed files with 32076 additions and 0 deletions

View File

@@ -0,0 +1,82 @@
<!DOCTYPE html>
<html lang="pl">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>{{ $title ?? \App\Support\Settings::get('company_name') }}</title>
<link rel="icon" type="image/svg+xml" href="{{ \App\Support\Settings::faviconUrl() }}">
<link rel="manifest" href="{{ route('manifest') }}">
<meta name="theme-color" content="{{ \App\Support\Settings::accentColor() }}">
<meta name="mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="default">
<meta name="apple-mobile-web-app-title" content="{{ \App\Support\Settings::get('company_name') }}">
<link rel="apple-touch-icon" href="{{ asset('pwa-icons/icon-192.png') }}">
<script>
if ('serviceWorker' in navigator) {
window.addEventListener('load', function () {
navigator.serviceWorker.register('/sw.js');
});
}
</script>
<script>
(function () {
function applyStoredTheme() {
var stored = localStorage.getItem('theme') || 'auto';
var systemDark = window.matchMedia('(prefers-color-scheme: dark)').matches;
var resolved = stored === 'auto' ? (systemDark ? 'dark' : 'light') : stored;
document.documentElement.setAttribute('data-theme', resolved);
}
// Apply immediately (avoids a flash of the wrong theme on first paint).
applyStoredTheme();
// wire:navigate swaps the page via AJAX and morphs <html> to match the
// freshly rendered (unthemed) markup, which can wipe the data-theme
// attribute back out — reapply the stored choice after every such swap,
// and again if the page is restored from the back/forward cache.
document.addEventListener('livewire:navigated', applyStoredTheme);
window.addEventListener('pageshow', function (e) {
if (e.persisted) applyStoredTheme();
});
// Keep "auto" in sync if the OS theme changes while the page is open.
window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', function () {
if ((localStorage.getItem('theme') || 'auto') === 'auto') applyStoredTheme();
});
})();
</script>
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20,400,0,0">
<style>.material-symbols-outlined{font-variation-settings:'FILL' 0,'wght' 400,'GRAD' 0,'opsz' 20;line-height:1;vertical-align:middle;font-size:18px}</style>
{{-- QuillJS powers the rich-text (HTML) editors for e-mail templates in Admin -> Szablony e-mail. --}}
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/quill@2/dist/quill.snow.css">
<script src="https://cdn.jsdelivr.net/npm/quill@2/dist/quill.js"></script>
<style>
.ql-toolbar.ql-snow { border-color: var(--color-divider); background: color-mix(in srgb, var(--color-text) 4%, var(--color-bg)); border-radius: 8px 8px 0 0; }
.ql-container.ql-snow { border-color: var(--color-divider); border-radius: 0 0 8px 8px; font-family: inherit; font-size: 13.5px; }
.ql-editor { color: var(--color-text); min-height: 160px; }
.ql-editor.ql-blank::before { color: color-mix(in srgb, var(--color-text) 45%, transparent); font-style: normal; }
.ql-snow .ql-picker { color: var(--color-text); }
.ql-snow .ql-stroke { stroke: color-mix(in srgb, var(--color-text) 75%, transparent); }
.ql-snow .ql-fill { fill: color-mix(in srgb, var(--color-text) 75%, transparent); }
.ql-snow .ql-picker-options { background: var(--color-surface); border-color: var(--color-divider); }
.ql-snow.ql-toolbar button:hover, .ql-snow .ql-toolbar button:hover { color: var(--color-accent); }
.ql-snow.ql-toolbar button:hover .ql-stroke, .ql-snow .ql-toolbar button:hover .ql-stroke { stroke: var(--color-accent); }
.ql-editor hr { border: none; border-top: 1px solid var(--color-divider); margin: 10px 0; }
</style>
@vite(['resources/css/app.css', 'resources/js/app.js'])
<style>:root{--color-accent: {{ \App\Support\Settings::accentColor() }};}</style>
@livewireStyles
</head>
<body style="min-height:100vh;display:flex;flex-direction:column">
{{ $slot }}
@livewireScripts
</body>
</html>