import { useMemo, useState } from 'react'; import { useSeoMeta } from '@unhead/react'; import { Link } from 'react-router-dom'; import { ArrowLeft, HeartHandshake, Lock, MessagesSquare, UserPlus } from 'lucide-react'; import { CordnNativePanel } from '@/components/crew/CordnNativePanel'; import { Button } from '@/components/ui/button'; import { Card, CardContent } from '@/components/ui/card'; import { useTranslation } from '@/contexts/language'; import { useCurrentUser } from '@/hooks/useCurrentUser'; import { isAdminPubkey } from '@/lib/admins'; import { COMMUNITY_BOT_PUBKEY, COMMUNITY_ROOM } from '@/lib/cordn/community'; import { isNativePlatform } from '@/lib/platform'; /** * Public, app-wide Cordn room for questions and feedback. Unlike a crew room it * has no crew membership gate; the coordinator only carries ciphertext, and an * admin or the community bot approves each new device. */ export default function CommunityPage() { const { t } = useTranslation(); const { user } = useCurrentUser(); const canManage = isAdminPubkey(user?.pubkey); const [pendingRequests, setPendingRequests] = useState(0); const inviteUrl = useMemo(() => { const origin = isNativePlatform() ? 'https://skate-spots.org' : window.location.origin; return `${origin}/#/community`; }, []); useSeoMeta({ title: t('communityUi.seoTitle'), description: t('communityUi.seoDescription'), }); return (
{t('communityUi.eyebrow')}

{t('communityUi.heading')}

{t('communityUi.subtitle')}

{t('communityUi.howItWorks')}

{canManage && pendingRequests > 0 && (

{t('communityUi.pendingRequests', { count: pendingRequests })}

{t('communityUi.pendingRequestsDesc')}

)}
{t('communityUi.feedbackNote')}
); }