Rename LovePage

This commit is contained in:
MartinBraquet
2025-10-20 16:24:22 +02:00
parent aa3680934b
commit 26a28175fd
26 changed files with 78 additions and 78 deletions

View File

@@ -1,4 +1,4 @@
import {LovePage} from "web/components/love-page";
import {PageBase} from "web/components/page-base";
import {Col} from "web/components/layout/col";
import ReactMarkdown from "react-markdown";
import React from "react";
@@ -27,7 +27,7 @@ const MarkdownLink = ({href, children}: { href?: string; children: React.ReactNo
export default function MarkdownPage({content, filename}: Props) {
return (
<LovePage trackPageView={filename} className={'col-span-8'}>
<PageBase trackPageView={filename} className={'col-span-8'}>
<Col className="items-center">
<Col className='w-full rounded px-3 py-4 sm:px-6 space-y-4 custom-link'>
<ReactMarkdown
@@ -38,6 +38,6 @@ export default function MarkdownPage({content, filename}: Props) {
</ReactMarkdown>
</Col>
</Col>
</LovePage>
</PageBase>
);
}

View File

@@ -27,7 +27,7 @@ import {IS_MAINTENANCE} from "common/constants";
import {MdThumbUp} from "react-icons/md";
import {FaEnvelope} from "react-icons/fa";
export function LovePage(props: {
export function PageBase(props: {
trackPageView: string | false
trackPageProps?: Record<string, any>
className?: string

View File

@@ -1,4 +1,4 @@
import { LovePage } from 'web/components/love-page'
import { PageBase } from 'web/components/page-base'
import Link from 'next/link'
import { Button } from 'web/components/buttons/button'
import { Col } from 'web/components/layout/col'
@@ -9,9 +9,9 @@ import {discordLink, formLink, githubIssues} from "common/constants";
export default function Custom404(props: { customText?: string }) {
return (
<LovePage trackPageView={'404'}>
<PageBase trackPageView={'404'}>
<Custom404Content customText={props.customText} />
</LovePage>
</PageBase>
)
}

View File

@@ -1,7 +1,7 @@
import {useState} from 'react'
import {useRouter} from 'next/router'
import Head from 'next/head'
import {LovePage} from 'web/components/love-page'
import {PageBase} from 'web/components/page-base'
import {useProfileByUser} from 'web/hooks/use-profile'
import {Col} from 'web/components/layout/col'
import {SEO} from 'web/components/SEO'
@@ -86,7 +86,7 @@ type ActiveUserPageProps = {
export default function UserPage(props: UserPageProps) {
// console.debug('Starting UserPage in /[username]')
if (!props.user) {
return <LovePage
return <PageBase
trackPageView={'user page'}
className={'relative p-2 sm:pt-0'}
>
@@ -95,11 +95,11 @@ export default function UserPage(props: UserPageProps) {
This account has been deleted.
</div>
</Col>
</LovePage>
</PageBase>
}
if (props.user.isBannedFromPosting) {
return <LovePage
return <PageBase
trackPageView={'user page'}
className={'relative p-2 sm:pt-0'}
>
@@ -108,7 +108,7 @@ export default function UserPage(props: UserPageProps) {
This account has been suspended.
</div>
</Col>
</LovePage>
</PageBase>
}
return <UserPageInner {...props} />
@@ -136,7 +136,7 @@ function UserPageInner(props: ActiveUserPageProps) {
// console.debug('profile:', user?.username, profile, clientProfile, staticProfile)
return (
<LovePage
<PageBase
trackPageView={'user page'}
trackPageProps={{username: user.username}}
className={'relative p-2 sm:pt-0'}
@@ -169,6 +169,6 @@ function UserPageInner(props: ActiveUserPageProps) {
)}
</Col>
)}
</LovePage>
</PageBase>
)
}

View File

@@ -1,4 +1,4 @@
import {LovePage} from 'web/components/love-page'
import {PageBase} from 'web/components/page-base'
import {ReactNode} from "react";
import Link from "next/link";
import {discordLink, formLink, githubRepo, stoatLink} from "common/constants";
@@ -17,7 +17,7 @@ export const AboutBlock = (props: {
export default function About() {
return (
<LovePage trackPageView={'about'}>
<PageBase trackPageView={'about'}>
<div className="text-gray-600 dark:text-white min-h-screen p-6">
<div className="w-full">
<div className="relative py-8 mb-8 overflow-hidden">
@@ -171,6 +171,6 @@ export default function About() {
</div>
</div>
</div>
</LovePage>
</PageBase>
)
}

View File

@@ -1,14 +1,14 @@
import {LovePage} from 'web/components/love-page'
import {PageBase} from 'web/components/page-base'
import {Col} from 'web/components/layout/col'
export default function ConfirmEmail() {
return (
<LovePage trackPageView={'private messages page'}>
<PageBase trackPageView={'private messages page'}>
<Col className="items-center justify-center h-full">
<div className="text-xl font-semibold text-center mt-8">
Thank you for confirming your email!
</div>
</Col>
</LovePage>
</PageBase>
)
}

View File

@@ -1,11 +1,11 @@
import {LovePage} from 'web/components/love-page'
import {PageBase} from 'web/components/page-base'
import {SEO} from 'web/components/SEO'
import {ContactComponent} from "web/components/contact";
export default function ContactPage() {
return (
<LovePage
<PageBase
trackPageView={'vote page'}
className={'relative p-2 sm:pt-0'}
>
@@ -15,6 +15,6 @@ export default function ContactPage() {
url={`/contact`}
/>
<ContactComponent/>
</LovePage>
</PageBase>
)
}

View File

@@ -1,4 +1,4 @@
import {LovePage} from 'web/components/love-page'
import {PageBase} from 'web/components/page-base'
import {SEO} from 'web/components/SEO'
import Link from 'next/link'
import {Col} from 'web/components/layout/col'
@@ -6,7 +6,7 @@ import {Row} from 'web/components/layout/row'
export default function HelpPage() {
return (
<LovePage trackPageView={'help'} className={'relative p-2 sm:pt-0'}>
<PageBase trackPageView={'help'} className={'relative p-2 sm:pt-0'}>
<SEO title={`Help`} description={'Get help with Compass'} url={`/help`}/>
<Col className="max-w-3xl w-full mx-auto gap-6 custom-link">
<h1 className="text-3xl font-semibold">Help & Support</h1>
@@ -73,6 +73,6 @@ export default function HelpPage() {
</Row>
</section>
</Col>
</LovePage>
</PageBase>
)
}

View File

@@ -1,4 +1,4 @@
import {LovePage} from 'web/components/love-page'
import {PageBase} from 'web/components/page-base'
import {Col} from 'web/components/layout/col'
import {useUser} from 'web/hooks/use-user'
import {LoggedOutHome} from "web/components/home/home";
@@ -14,12 +14,12 @@ export default function ProfilesPage() {
}
return (
<LovePage trackPageView={'user profiles'}>
<PageBase trackPageView={'user profiles'}>
<Col className="items-center">
<Col className={'w-full rounded px-3 py-4 sm:px-6'}>
{user ? <ProfilesHome/> : <LoggedOutHome/>}
</Col>
</Col>
</LovePage>
</PageBase>
)
}

View File

@@ -1,10 +1,10 @@
"use client";
import {CompassLoadingIndicator} from "web/components/widgets/loading-indicator";
import {LovePage} from "web/components/love-page";
import {PageBase} from "web/components/page-base";
export default function Loading() {
return <LovePage trackPageView={'loading'}>
return <PageBase trackPageView={'loading'}>
<CompassLoadingIndicator/>
</LovePage>;
</PageBase>;
}

View File

@@ -1,4 +1,4 @@
import {LovePage} from 'web/components/love-page'
import {PageBase} from 'web/components/page-base'
import {useRouter} from 'next/router'
import {usePrivateMessages, useSortedPrivateMessageMemberships,} from 'web/hooks/use-private-messages'
import {Col} from 'web/components/layout/col'
@@ -43,13 +43,13 @@ export default function PrivateMessagesPage() {
return <CompassLoadingIndicator/>
}
return (
<LovePage trackPageView={'private messages page'}>
<PageBase trackPageView={'private messages page'}>
{router.isReady && channelId && user ? (
<PrivateMessagesContent user={user} channelId={channelId}/>
) : (
<CompassLoadingIndicator/>
)}
</LovePage>
</PageBase>
)
}

View File

@@ -3,7 +3,7 @@ import { User } from 'common/user'
import { parseJsonContentToText } from 'common/util/parse'
import Link from 'next/link'
import { Col } from 'web/components/layout/col'
import { LovePage } from 'web/components/love-page'
import { PageBase } from 'web/components/page-base'
import { Row } from 'web/components/layout/row'
import NewMessageButton from 'web/components/messaging/new-message-button'
import { RelativeTimestamp } from 'web/components/relative-timestamp'
@@ -25,9 +25,9 @@ export default function MessagesPage() {
const currentUser = useUser()
return (
<LovePage trackPageView={'messages page'} className={'p-2'}>
<PageBase trackPageView={'messages page'} className={'p-2'}>
{currentUser && <MessagesContent currentUser={currentUser} />}
</LovePage>
</PageBase>
)
}

View File

@@ -9,7 +9,7 @@ import {Fragment, useCallback, useEffect, useMemo, useState} from 'react'
import {NoSEO} from 'web/components/NoSEO'
import {Col} from 'web/components/layout/col'
import {UncontrolledTabs} from 'web/components/layout/tabs'
import {LovePage} from 'web/components/love-page'
import {PageBase} from 'web/components/page-base'
import {NotificationItem} from 'web/components/notification-items'
import {CompassLoadingIndicator} from 'web/components/widgets/loading-indicator'
import {Pagination} from 'web/components/widgets/pagination'
@@ -25,7 +25,7 @@ import {useRedirectIfSignedOut} from "web/hooks/use-redirect-if-signed-out";
export default function NotificationsPage() {
useRedirectIfSignedOut()
return (
<LovePage trackPageView={'notifications page'}>
<PageBase trackPageView={'notifications page'}>
<NoSEO/>
<Title>Updates</Title>
<UncontrolledTabs
@@ -35,7 +35,7 @@ export default function NotificationsPage() {
]}
trackingName={'notifications page'}
/>
</LovePage>
</PageBase>
)
}

View File

@@ -1,4 +1,4 @@
import {LovePage} from 'web/components/love-page'
import {PageBase} from 'web/components/page-base'
import {GeneralButton} from "web/components/buttons/general-button";
import clsx from "clsx";
import {Col} from "web/components/layout/col";
@@ -6,7 +6,7 @@ import {Col} from "web/components/layout/col";
export default function Organization() {
return (
<LovePage trackPageView={'social'}>
<PageBase trackPageView={'social'}>
<h3 className="text-4xl font-bold text-center mt-8 mb-8">Organization</h3>
<Col
className={clsx(
@@ -25,6 +25,6 @@ export default function Organization() {
<GeneralButton url={'/security'} content={'Security'}/>
<GeneralButton url={'/contact'} content={'Contact'}/>
</Col>
</LovePage>
</PageBase>
)
}

View File

@@ -1,10 +1,10 @@
import {LovePage} from "web/components/love-page";
import {PageBase} from "web/components/page-base";
import {supportEmail} from "common/constants";
// TODO: convert to MarkDown for better readability during modifications?
export default function PrivacyPage() {
return (
<LovePage
<PageBase
trackPageView={'terms'}
className="max-w-4xl mx-auto p-8 col-span-8 bg-canvas-0"
>
@@ -53,6 +53,6 @@ export default function PrivacyPage() {
For questions about this Privacy Policy, reach out at {supportEmail}.
</p>
</section>
</LovePage>
</PageBase>
);
}

View File

@@ -9,7 +9,7 @@ import {useEffect, useState} from 'react'
import {Col} from 'web/components/layout/col'
import {useUser} from 'web/hooks/use-user'
import {api} from 'web/lib/api'
import {LovePage} from "web/components/love-page";
import {PageBase} from "web/components/page-base";
export default function ProfilePage() {
const user = useUser()
@@ -40,7 +40,7 @@ function ProfilePageInner(props: { user: User; profile: Profile }) {
const [username, setUsername] = useState(user.username)
return (
<LovePage trackPageView={'profile'}>
<PageBase trackPageView={'profile'}>
<Col className="items-center">
<Col className={'w-full px-6 py-4'}>
<RequiredLoveUserForm
@@ -67,6 +67,6 @@ function ProfilePageInner(props: { user: User; profile: Profile }) {
/>
</Col>
</Col>
</LovePage>
</PageBase>
)
}

View File

@@ -1,5 +1,5 @@
import { ENV_CONFIG } from 'common/envs/constants'
import { LovePage } from 'web/components/love-page'
import { PageBase } from 'web/components/page-base'
import { SEO } from 'web/components/SEO'
import { CopyLinkRow } from 'web/components/buttons/copy-link-button'
import { Col } from 'web/components/layout/col'
@@ -15,7 +15,7 @@ export default function ReferralsPage() {
: `https://${ENV_CONFIG.domain}/`
return (
<LovePage trackPageView={'love referrals'} className="items-center">
<PageBase trackPageView={'love referrals'} className="items-center">
<SEO
title="Share the love"
description={`Invite someone to join Compass!`}
@@ -30,6 +30,6 @@ export default function ReferralsPage() {
<QRCode url={url} className="mt-4 self-center" />
</Col>
</LovePage>
</PageBase>
)
}

View File

@@ -8,7 +8,7 @@ import {signupThenMaybeRedirectToSignup} from "web/lib/util/signup";
import {createUserWithEmailAndPassword} from "firebase/auth";
import {auth} from "web/lib/firebase/users";
import FavIcon from "web/public/FavIcon";
import {LovePage} from "web/components/love-page";
import {PageBase} from "web/components/page-base";
import {getProfileRow} from "common/profiles/profile";
import {db} from "web/lib/supabase/db";
import Router from "next/router";
@@ -110,7 +110,7 @@ function RegisterComponent() {
}
return (
<LovePage trackPageView={'register'}>
<PageBase trackPageView={'register'}>
<div className="min-h-screen flex items-center justify-center py-12 px-4 sm:px-6 lg:px-8">
<div className="max-w-md w-full space-y-8">
{registrationSuccess ? (
@@ -251,6 +251,6 @@ function RegisterComponent() {
}
</div>
</div>
</LovePage>
</PageBase>
);
}

View File

@@ -1,4 +1,4 @@
import {LovePage} from 'web/components/love-page'
import {PageBase} from 'web/components/page-base'
import {SEO} from 'web/components/SEO'
import Link from 'next/link'
import {Col} from 'web/components/layout/col'
@@ -9,7 +9,7 @@ export default function SecurityPage() {
const mailto = `mailto:${email}?subject=${encodeURIComponent('Security vulnerability report')}`
return (
<LovePage trackPageView={'security'} className={'relative p-2 sm:pt-0'}>
<PageBase trackPageView={'security'} className={'relative p-2 sm:pt-0'}>
<SEO
title={`Security`}
description={'Report security vulnerabilities to the Compass team'}
@@ -73,6 +73,6 @@ export default function SecurityPage() {
</Row>
</section>
</Col>
</LovePage>
</PageBase>
)
}

View File

@@ -10,7 +10,7 @@ import {signInWithEmailAndPassword} from "firebase/auth";
import {getProfileRow} from "common/profiles/profile";
import {db} from "web/lib/supabase/db";
import Router from "next/router";
import {LovePage} from "web/components/love-page";
import {PageBase} from "web/components/page-base";
import {useUser} from "web/hooks/use-user";
import {GoogleButton} from "web/components/buttons/sign-up-button";
@@ -117,7 +117,7 @@ function RegisterComponent() {
console.debug('Form rendering');
return (
<LovePage trackPageView={'signin'}>
<PageBase trackPageView={'signin'}>
<div className="min-h-screen flex items-center justify-center py-12 px-4 sm:px-6 lg:px-8">
<div className="max-w-md w-full space-y-8">
<div>
@@ -192,6 +192,6 @@ function RegisterComponent() {
</div>
</div>
</div>
</LovePage>
</PageBase>
);
}

View File

@@ -13,7 +13,7 @@ import {safeLocalStorage} from 'web/lib/util/local'
import {removeNullOrUndefinedProps} from 'common/util/object'
import {useProfileByUserId} from 'web/hooks/use-profile'
import {ProfileRow} from 'common/profiles/profile'
import {LovePage} from "web/components/love-page";
import {PageBase} from "web/components/page-base";
export default function SignupPage() {
const [step, setStep] = useState(0)
@@ -71,7 +71,7 @@ export default function SignupPage() {
}, [existingProfile])
if (step === 1 && user) {
return <LovePage trackPageView={'register'}>
return <PageBase trackPageView={'register'}>
<Col className={'w-full px-6 py-4'}>
<OptionalLoveUserForm
setProfile={setProfileState}
@@ -80,7 +80,7 @@ export default function SignupPage() {
fromSignup
/>
</Col>
</LovePage>
</PageBase>
}
if (user === null && !holdLoading) {

View File

@@ -1,4 +1,4 @@
import {LovePage} from 'web/components/love-page'
import {PageBase} from 'web/components/page-base'
import {discordLink, githubRepo, redditLink, stoatLink, supportEmail, xLink} from "common/constants";
import {GeneralButton} from "web/components/buttons/general-button";
import clsx from "clsx";
@@ -7,7 +7,7 @@ import {Col} from "web/components/layout/col";
export default function Social() {
return (
<LovePage trackPageView={'social'}>
<PageBase trackPageView={'social'}>
<h3 className="text-4xl font-bold text-center mt-8 mb-8">Socials</h3>
<Col
className={clsx(
@@ -22,6 +22,6 @@ export default function Social() {
<GeneralButton url={xLink} content={'X'}/>
<GeneralButton url={`mailto:${supportEmail}`} content={`${supportEmail}`}/>
</Col>
</LovePage>
</PageBase>
)
}

View File

@@ -1,4 +1,4 @@
import {LovePage} from "web/components/love-page";
import {PageBase} from "web/components/page-base";
import ChartMembers from "web/components/widgets/charts";
import {getCount} from "web/lib/supabase/users";
import {useEffect, useState} from "react";
@@ -42,7 +42,7 @@ export default function Stats() {
}, [])
return (
<LovePage trackPageView={'charts'}>
<PageBase trackPageView={'charts'}>
<h1 className="text-3xl font-semibold text-center mb-6">Growth & Stats</h1>
<Col className={'sm:mx-4 mx-1 mb-8'}>
<ChartMembers/>
@@ -66,6 +66,6 @@ export default function Stats() {
{!!data.profile_comments && <StatBox value={data.profile_comments} label={'Endorsements'} />}
</Col>
</Col>
</LovePage>
</PageBase>
);
}

View File

@@ -1,10 +1,10 @@
import {LovePage} from "web/components/love-page";
import {PageBase} from "web/components/page-base";
import {supportEmail} from "common/constants";
// TODO: convert to MarkDown for better readability during modifications?
export default function TermsPage() {
return (
<LovePage
<PageBase
trackPageView={'terms'}
className="max-w-4xl mx-auto p-8 text-gray-800 dark:text-white col-span-8 bg-canvas-0"
>
@@ -89,6 +89,6 @@ export default function TermsPage() {
For questions regarding these Terms, please contact us at {supportEmail}.
</p>
</section>
</LovePage>
</PageBase>
);
}

View File

@@ -1,4 +1,4 @@
import {LovePage} from 'web/components/love-page'
import {PageBase} from 'web/components/page-base'
import {Col} from 'web/components/layout/col'
import {SEO} from 'web/components/SEO'
import {useUser} from 'web/hooks/use-user'
@@ -12,7 +12,7 @@ export default function VotePage() {
// console.log('user:', user)
return (
<LovePage
<PageBase
trackPageView={'vote page'}
className={'relative p-2 sm:pt-0'}
>
@@ -28,6 +28,6 @@ export default function VotePage() {
<VoteComponent/>
</Col>
)}
</LovePage>
</PageBase>
)
}

View File

@@ -81,7 +81,7 @@ The **compatibility score** comes from answers to **compatibility prompts**. Eac
Matches are scored based on how well two peoples responses and accepted answers align, weighted by importance. See this [video](https://www.youtube.com/watch?v=m9PiPlRuy6E) for the math behind it.
The [full implementation](https://github.com/CompassConnections/Compass/blob/main/common/src/love/compatibility-score.ts) is **open source** and open to review, feedback, and improvement by the community.
The [full implementation](https://github.com/CompassConnections/Compass/blob/main/common/src/profiles/compatibility-score.ts) is **open source** and open to review, feedback, and improvement by the community.
### What platforms does Compass run on?