mirror of
https://github.com/Memo-2023/mana-monorepo.git
synced 2026-05-17 20:49:40 +02:00
feat: integrate uload and picture, unify package naming
- Add uload project with apps/web structure
- Reorganize from flat to monorepo structure
- Remove PocketBase binary and local data
- Update to pnpm and @uload/web namespace
- Add picture project to monorepo
- Remove embedded git repository
- Unify all package names to @{project}/{app} schema:
- @maerchenzauber/* (was @storyteller/*)
- @manacore/* (was manacore-*, manacore)
- @manadeck/* (was web, backend, manadeck)
- @memoro/* (was memoro-web, landing, memoro)
- @picture/* (already unified)
- @uload/web
- Add convenient dev scripts for all apps:
- pnpm dev:{project}:web
- pnpm dev:{project}:landing
- pnpm dev:{project}:mobile
- pnpm dev:{project}:backend
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
c6c4c5a552
commit
c712a2504a
1031 changed files with 189301 additions and 290 deletions
103
uload/apps/web/src/app.html
Normal file
103
uload/apps/web/src/app.html
Normal file
|
|
@ -0,0 +1,103 @@
|
|||
<!doctype html>
|
||||
<html lang="%paraglide.lang%" dir="%paraglide.dir%">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
|
||||
|
||||
<!-- PWA Meta Tags -->
|
||||
<meta name="theme-color" content="#3b82f6" />
|
||||
<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="uLoad" />
|
||||
<meta name="mobile-web-app-capable" content="yes" />
|
||||
|
||||
<!-- PWA Manifest -->
|
||||
<link rel="manifest" href="/manifest.json" />
|
||||
|
||||
<!-- Apple Touch Icons -->
|
||||
<link rel="apple-touch-icon" href="/icons/icon-192x192.png" />
|
||||
<link rel="apple-touch-icon" sizes="152x152" href="/icons/icon-152x152.png" />
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/icons/icon-192x192.png" />
|
||||
|
||||
<!-- Preconnect für Performance -->
|
||||
<link rel="preconnect" href="https://pb.ulo.ad" />
|
||||
<link rel="dns-prefetch" href="https://pb.ulo.ad" />
|
||||
|
||||
%sveltekit.head%
|
||||
<!-- Umami Analytics -->
|
||||
<script>
|
||||
// Only load Umami if configured
|
||||
if ('%sveltekit.env.PUBLIC_UMAMI_URL%'.startsWith('http')) {
|
||||
const script = document.createElement('script');
|
||||
script.defer = true;
|
||||
script.src = '%sveltekit.env.PUBLIC_UMAMI_URL%/script.js';
|
||||
script.dataset.websiteId = '%sveltekit.env.PUBLIC_UMAMI_WEBSITE_ID%';
|
||||
document.head.appendChild(script);
|
||||
}
|
||||
</script>
|
||||
<script>
|
||||
// Initialize theme early to prevent flash
|
||||
(function () {
|
||||
// Load theme mode (light/dark/system)
|
||||
const themeMode = localStorage.getItem('theme-mode') || 'system';
|
||||
const themePreset = localStorage.getItem('theme-preset') || 'minimal';
|
||||
|
||||
// Determine if dark mode should be active
|
||||
let isDark = false;
|
||||
if (themeMode === 'dark') {
|
||||
isDark = true;
|
||||
} else if (themeMode === 'system') {
|
||||
isDark = window.matchMedia('(prefers-color-scheme: dark)').matches;
|
||||
}
|
||||
|
||||
// Apply dark class if needed
|
||||
if (isDark) {
|
||||
document.documentElement.classList.add('dark');
|
||||
}
|
||||
|
||||
// Load theme preset colors
|
||||
const themes = {
|
||||
minimal: {
|
||||
light: {
|
||||
primary: '#171717',
|
||||
primaryHover: '#0a0a0a',
|
||||
background: '#fafafa',
|
||||
surface: '#ffffff',
|
||||
surfaceHover: '#f5f5f5',
|
||||
text: '#171717',
|
||||
textMuted: '#737373',
|
||||
border: '#e5e5e5',
|
||||
accent: '#525252',
|
||||
accentHover: '#404040'
|
||||
},
|
||||
dark: {
|
||||
primary: '#fafafa',
|
||||
primaryHover: '#ffffff',
|
||||
background: '#0a0a0a',
|
||||
surface: '#171717',
|
||||
surfaceHover: '#262626',
|
||||
text: '#fafafa',
|
||||
textMuted: '#a3a3a3',
|
||||
border: '#404040',
|
||||
accent: '#d4d4d4',
|
||||
accentHover: '#e5e5e5'
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
// Apply CSS variables for the theme
|
||||
const preset = themes[themePreset] || themes.minimal;
|
||||
const colors = isDark ? preset.dark : preset.light;
|
||||
const root = document.documentElement;
|
||||
|
||||
Object.entries(colors).forEach(([key, value]) => {
|
||||
const cssKey = key.replace(/[A-Z]/g, (m) => '-' + m.toLowerCase());
|
||||
root.style.setProperty(`--theme-${cssKey}`, value);
|
||||
});
|
||||
})();
|
||||
</script>
|
||||
</head>
|
||||
<body data-sveltekit-preload-data="hover">
|
||||
<div style="display: contents">%sveltekit.body%</div>
|
||||
</body>
|
||||
</html>
|
||||
Loading…
Add table
Add a link
Reference in a new issue