diff --git a/frontend/src/components/TrialBanner.jsx b/frontend/src/components/TrialBanner.jsx new file mode 100644 index 0000000..6208700 --- /dev/null +++ b/frontend/src/components/TrialBanner.jsx @@ -0,0 +1,86 @@ +import { useEffect, useState } from 'react' +import { Link } from 'react-router-dom' + +export default function TrialBanner({ profile }) { + const [daysLeft, setDaysLeft] = useState(null) + + useEffect(() => { + if (!profile?.trial_ends_at) { + setDaysLeft(null) + return + } + + const trialEnd = new Date(profile.trial_ends_at) + const now = new Date() + const diff = trialEnd - now + const days = Math.ceil(diff / (1000 * 60 * 60 * 24)) + + setDaysLeft(days) + }, [profile]) + + // No trial or trial ended + if (daysLeft === null || daysLeft <= 0) return null + + // Determine severity + const isUrgent = daysLeft <= 3 + const isWarning = daysLeft <= 7 + + const bgColor = isUrgent ? '#FCEBEB' : isWarning ? '#FFF4E6' : 'var(--accent-light)' + const borderColor = isUrgent ? '#D85A30' : isWarning ? '#F59E0B' : 'var(--accent)' + const textColor = isUrgent ? '#D85A30' : isWarning ? '#D97706' : 'var(--accent-dark)' + + return ( +