// lib/core/auth/auth_guard.dart
import 'package:flutter/material.dart';
import '../../screens/login_screen.dart';

class AuthGuard {
  static bool _isGuest = false;

  static bool get isGuest => _isGuest;
  static bool get isLoggedIn => !_isGuest;

  static void setGuest(bool value) => _isGuest = value;

  /// Call before any action that requires login.
  /// Returns true if logged in (proceed). Returns false if guest (shows prompt).
  static bool requireLogin(BuildContext context,
      {String reason = 'This feature requires an account.'}) {
    if (!_isGuest) return true;
    _showLoginPrompt(context, reason);
    return false;
  }

  static void _showLoginPrompt(BuildContext context, String reason) {
    showModalBottomSheet(
      context: context,
      shape: const RoundedRectangleBorder(
        borderRadius: BorderRadius.vertical(top: Radius.circular(20)),
      ),
      builder: (ctx) => Padding(
        padding: const EdgeInsets.all(24),
        child: Column(
          mainAxisSize: MainAxisSize.min,
          children: [
            const Icon(Icons.lock_outline, size: 48, color: Color(0xFF0B63D6)),
            const SizedBox(height: 16),
            Text(reason,
                textAlign: TextAlign.center,
                style: const TextStyle(
                    fontSize: 16, fontWeight: FontWeight.w600)),
            const SizedBox(height: 8),
            const Text('Sign in or create an account to continue.',
                textAlign: TextAlign.center,
                style: TextStyle(color: Colors.grey, fontSize: 14)),
            const SizedBox(height: 24),
            SizedBox(
              width: double.infinity,
              height: 48,
              child: ElevatedButton(
                style: ElevatedButton.styleFrom(
                  backgroundColor: const Color(0xFF0B63D6),
                  shape: RoundedRectangleBorder(
                      borderRadius: BorderRadius.circular(12)),
                ),
                onPressed: () {
                  Navigator.of(ctx).pop();
                  Navigator.of(context).pushAndRemoveUntil(
                    MaterialPageRoute(builder: (_) => const LoginScreen()),
                    (route) => false,
                  );
                },
                child: const Text('Sign In',
                    style: TextStyle(
                        color: Colors.white, fontWeight: FontWeight.w700)),
              ),
            ),
            const SizedBox(height: 12),
          ],
        ),
      ),
    );
  }
}
