File size: 1,475 Bytes
76fb273
 
 
2f67ecf
349f22c
2f67ecf
76fb273
 
973dd4c
90b88af
76fb273
 
 
 
 
90b88af
76fb273
90b88af
76fb273
867aec4
90b88af
76fb273
 
90b88af
 
76fb273
 
 
90b88af
76fb273
 
 
 
 
90b88af
76fb273
 
90b88af
76fb273
2f67ecf
76fb273
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
'use client';

import { useState } from 'react';
import { motion } from 'framer-motion';
import { X, User } from '@phosphor-icons/react';
import { fadeUp } from '@/lib/animations';
import { useAuth } from '@/contexts/auth';

export function GuestBanner() {
  const { isGuest, upgradeToAccount } = useAuth();
  const [dismissed, setDismissed] = useState(false);

  if (!isGuest || dismissed) return null;

  return (
    <motion.div variants={fadeUp} className="mb-6 glass-card p-4 flex items-start justify-between gap-4 border border-accent-amber/20">
      <div className="flex items-start gap-3">
        <User className="w-5 h-5 text-accent-amber shrink-0 mt-0.5" />
        <div>
          <p className="text-sm font-medium text-text-primary">You&apos;re browsing as a guest</p>
          <p className="text-sm text-text-secondary mt-1">
            Your results are saved for 24 hours.{' '}
            <button
              onClick={upgradeToAccount}
              className="font-medium text-accent-cyan hover:text-accent-cyan/80 underline underline-offset-2"
            >
              Sign in with Google
            </button>{' '}
            to keep them forever.
          </p>
        </div>
      </div>
      <button
        onClick={() => setDismissed(true)}
        className="p-1 hover:bg-surface-2 rounded transition shrink-0"
        aria-label="Dismiss"
      >
        <X className="w-4 h-4 text-text-muted" />
      </button>
    </motion.div>
  );
}