import { type ReactNode, useState } from 'react'; import { Compass } from 'lucide-react'; import { Button } from '@/components/ui/button'; import { useLicense } from '@/context/LicenseContext'; interface PaidGateProps { children: ReactNode; featureName?: string; } const DISMISS_KEY = 'sencho-upgrade-prompt-dismissed'; const DISMISS_DURATION_MS = 24 * 60 * 60 * 1000; // 24 hours (session-like) function isDismissedFromStorage(): boolean { const dismissedAt = localStorage.getItem(DISMISS_KEY); return !!dismissedAt && Date.now() - parseInt(dismissedAt, 10) < DISMISS_DURATION_MS; } export function PaidGate({ children, featureName = 'This feature' }: PaidGateProps) { const { isPaid } = useLicense(); const [dismissed, setDismissed] = useState(isDismissedFromStorage); if (isPaid) return <>{children}>; if (dismissed) { return (
Unlock features like fleet management, viewer accounts, and more with a Skipper or Admiral license. For enterprise pricing or questions, contact{' '} licensing@sencho.io.