Registration collects health-adjacent data (age, weight, height, health notes, goals) with no privacy policy or ToS anywhere in the app. Adds both as real pages at /privacy and /terms, a site-wide footer linking to them (the app had no footer at all outside the homepage), and a consent line on the registration form. Both pages are marked as a starting draft with bracketed placeholders for operator/jurisdiction details rather than inventing legal claims the app can't back up. Also removed the homepage's own footer, which duplicated the new global one and whose Privacy/Terms/About/Contact links were all dead `#` placeholders, and fixed APP_NAME (was "Laravel", site is branded FitAtlas everywhere else including the browser tab title). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
63 lines
2.6 KiB
PHP
63 lines
2.6 KiB
PHP
<!DOCTYPE html>
|
|
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<meta name="csrf-token" content="{{ csrf_token() }}">
|
|
|
|
<title>{{ config('app.name', 'Laravel') }}</title>
|
|
|
|
<!-- Fonts -->
|
|
<link rel="preconnect" href="https://fonts.bunny.net">
|
|
<link href="https://fonts.bunny.net/css?family=figtree:400,500,600&display=swap" rel="stylesheet" />
|
|
|
|
<script>
|
|
// Initialize theme early to avoid FOUC
|
|
(function() {
|
|
try {
|
|
const stored = localStorage.getItem('theme');
|
|
const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;
|
|
if (stored === 'dark' || (!stored && prefersDark)) {
|
|
document.documentElement.classList.add('dark');
|
|
} else {
|
|
document.documentElement.classList.remove('dark');
|
|
}
|
|
} catch (e) {}
|
|
})();
|
|
</script>
|
|
|
|
<!-- Scripts -->
|
|
@vite(['resources/css/app.css', 'resources/js/app.js'])
|
|
</head>
|
|
<body class="font-sans antialiased">
|
|
<div class="min-h-screen bg-gray-100 dark:bg-gray-900">
|
|
@include('layouts.navigation')
|
|
|
|
<!-- Page Heading -->
|
|
@isset($header)
|
|
<header class="bg-white dark:bg-gray-800 shadow">
|
|
<div class="max-w-7xl mx-auto py-6 px-4 sm:px-6 lg:px-8">
|
|
{{ $header }}
|
|
</div>
|
|
</header>
|
|
@endisset
|
|
|
|
<!-- Page Content -->
|
|
<main>
|
|
{{ $slot }}
|
|
</main>
|
|
|
|
<footer class="border-t border-gray-100 dark:border-gray-800 mt-12">
|
|
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-6 flex flex-col sm:flex-row items-center justify-between gap-3 text-sm text-gray-500 dark:text-gray-400">
|
|
<div>© {{ date('Y') }} {{ config('app.name') }}. {{ __('app.footer.rights') }}</div>
|
|
<div class="flex items-center gap-4">
|
|
<a href="{{ route('legal.privacy') }}" class="hover:text-gray-800 dark:hover:text-gray-200">{{ __('app.footer.privacy') }}</a>
|
|
<a href="{{ route('legal.terms') }}" class="hover:text-gray-800 dark:hover:text-gray-200">{{ __('app.footer.terms') }}</a>
|
|
</div>
|
|
</div>
|
|
</footer>
|
|
</div>
|
|
@stack('scripts')
|
|
</body>
|
|
</html>
|