import { BellIcon, ChatBubbleLeftRightIcon, CodeBracketIcon, FlagIcon, GiftIcon, GlobeAltIcon, HeartIcon, LightBulbIcon, MagnifyingGlassIcon, MegaphoneIcon, ScaleIcon, SparklesIcon, } from '@heroicons/react/24/outline' import clsx from 'clsx' import {discordLink, formLink, githubRepo} from 'common/constants' import {DEPLOYED_WEB_URL} from 'common/envs/constants' import Link from 'next/link' import {ComponentType, ReactNode, SVGProps} from 'react' import {CopyLinkOrShareButton, ShareProfileOnXButton} from 'web/components/buttons/copy-link-button' import {GeneralButton} from 'web/components/buttons/general-button' import {Row} from 'web/components/layout/row' import {PageBase} from 'web/components/page-base' import {SEO} from 'web/components/SEO' import {useT} from 'web/lib/locale' // ─── Types ──────────────────────────────────────────────────────────────────── type IconType = ComponentType> interface FeatureCardProps { icon: IconType title: string text: ReactNode } interface HelpCardProps { icon: IconType title: string text: ReactNode buttonLabel: string buttonUrl: string buttonPrimary?: boolean id?: string } // ─── Feature Card ───────────────────────────────────────────────────────────── function FeatureCard({icon: Icon, title, text}: FeatureCardProps) { return (

{title}

{text}

) } // ─── Full-width Feature Card ────────────────────────────────────────────────── function FeatureCardWide({icon: Icon, title, text}: FeatureCardProps) { return (

{title}

{text}

) } // ─── Help Card ──────────────────────────────────────────────────────────────── function HelpCard({ icon: Icon, title, text, buttonLabel, buttonUrl, buttonPrimary, id, }: HelpCardProps) { return (

{title}

{text}

) } // ─── Section Label ──────────────────────────────────────────────────────────── function SectionLabel({children}: {children: ReactNode}) { return (
{children}
) } // ─── Share Strip ────────────────────────────────────────────────────────────── function ShareStrip({title, text}: {title: string; text: string}) { const t = useT() return (

{title}

{text}

{/*// */} {/*// ${*/} {/*// primary*/} {/*// ? 'bg-primary-500 text-white border-primary-500 hover:bg-primary-600'*/} {/*// : 'bg-white/[0.06] text-canvas-200 border-white/10 hover:bg-white/[0.12] hover:text-canvas-50'*/} {/*// }*/}
) } // ─── Divider ────────────────────────────────────────────────────────────────── function Divider() { return (
) } // ─── Page ───────────────────────────────────────────────────────────────────── export default function About() { const t = useT() const features: (FeatureCardProps & {wide?: boolean})[] = [ { icon: MagnifyingGlassIcon, title: t('about.block.keyword.title', 'Keyword Search the Database'), text: t( 'about.block.keyword.text', '"Meditation", "Hiking", "Neuroscience", "Nietzsche". Access any profile and get niche.', ), }, { icon: BellIcon, title: t('about.block.notify.title', 'Get Notified About Searches'), text: t( 'about.block.notify.text', "No need to constantly check the app! We'll contact you when new users fit your searches.", ), }, { icon: SparklesIcon, title: t('about.block.personality.title', 'Personality-Centered'), text: t('about.block.personality.text', 'Values and interests first, photos are secondary.'), }, { icon: GiftIcon, title: t('about.block.free.title', 'Completely Free'), text: t('about.block.free.text', 'Subscription-free. Paywall-free. Ad-free.'), }, { icon: ScaleIcon, title: t('about.block.democratic.title', 'Democratic'), text: ( {t('about.block.democratic.prefix', 'Governed and ')} {t('about.block.democratic.link_voted', 'voted')} {t( 'about.block.democratic.middle', ' by the community, while ensuring no drift through our ', )} {t('about.block.democratic.link_constitution', 'constitution')} {t('about.block.democratic.suffix', '.')} ), }, { icon: FlagIcon, title: t('about.block.mission.title', 'One Mission'), text: t( 'about.block.mission.text', 'Our only mission is to create more genuine human connections, and every decision must serve that goal.', ), }, { icon: GlobeAltIcon, title: t('about.block.vision.title', 'Vision'), text: t( 'about.block.vision.text', 'Compass is to human connection what Linux, Wikipedia, and Firefox are to software and knowledge: a public good built by the people who use it, for the benefit of everyone.', ), wide: true, }, ] const helpCards: HelpCardProps[] = [ { icon: LightBulbIcon, id: 'give-suggestions-or-contribute', title: t('about.suggestions.title', 'Give Suggestions or Contribute'), text: t( 'about.suggestions.text', 'Give suggestions or let us know you want to help through this form. Every idea matters.', ), buttonLabel: t('about.suggestions.button', 'Suggest Here →'), buttonUrl: formLink, // buttonPrimary: true, }, { icon: CodeBracketIcon, id: 'share', title: t('about.dev.title', 'Develop the App'), text: t( 'about.dev.text', 'The full source code and instructions are available on GitHub. PRs welcome.', ), buttonLabel: t('about.dev.button', 'View Code →'), buttonUrl: githubRepo, }, { icon: ChatBubbleLeftRightIcon, id: 'join-chats', title: t('about.join.title', 'Join the Community'), text: t( 'about.join.text', "Let's shape the platform together. Share ideas, give feedback, meet other builders.", ), buttonLabel: t('about.join.button', 'Join the Discord →'), buttonUrl: discordLink, }, { icon: HeartIcon, id: 'donate', title: t('about.donate.title', 'Donate'), text: t( 'about.donate.text', 'Support our not-for-profit infrastructure. Every contribution keeps the lights on.', ), buttonLabel: t('about.donate.button', 'Donation Options →'), buttonUrl: '/support', }, ] return (
{/* ── Page header ── */}

{t('about.eyebrow', 'About Compass')}

{t('about.title', 'Why Choose Compass?')}

{t( 'about.subtitle', 'To find your people with ease — based on who they are, not how they look.', )}

{/* ── Features ── */} {t('about.features.label', 'What makes us different')}
{features.map((f) => f.wide ? ( ) : ( ), )}
{/* ── Help ── */} {t('about.help.label', 'Help Compass grow')}
{helpCards.map((card) => ( ))}
{/* ── Share strip ── */}
) }