diff --git a/packages/pl-fe/src/features/ui/index.tsx b/packages/pl-fe/src/features/ui/index.tsx index 2af1fdf8c..aafbc9739 100644 --- a/packages/pl-fe/src/features/ui/index.tsx +++ b/packages/pl-fe/src/features/ui/index.tsx @@ -11,6 +11,7 @@ import { register as registerPushNotifications } from 'pl-fe/actions/push-notifi import { connectShoutbox } from 'pl-fe/actions/shoutbox'; import { fetchHomeTimeline } from 'pl-fe/actions/timelines'; import { useUserStream } from 'pl-fe/api/hooks/streaming/use-user-stream'; +import { WITH_LANDING_PAGE } from 'pl-fe/build-config'; import SidebarNavigation from 'pl-fe/components/sidebar-navigation'; import ThumbNavigation from 'pl-fe/components/thumb-navigation'; import Layout from 'pl-fe/components/ui/layout'; @@ -108,6 +109,7 @@ import { IntentionalError, InteractionPolicies, InteractionRequests, + LandingPage, LandingTimeline, LinkTimeline, ListTimeline, @@ -175,7 +177,9 @@ const SwitchingColumnsArea: React.FC = React.memo(({ chil // Ex: use /login instead of /auth, but redirect /auth to /login return ( - {standalone && !isLoggedIn && } + {standalone && !isLoggedIn && (WITH_LANDING_PAGE + ? + : )} diff --git a/packages/pl-fe/src/features/ui/util/async-components.ts b/packages/pl-fe/src/features/ui/util/async-components.ts index 0d4d8c0dc..199c16d28 100644 --- a/packages/pl-fe/src/features/ui/util/async-components.ts +++ b/packages/pl-fe/src/features/ui/util/async-components.ts @@ -37,6 +37,7 @@ export const HomeTimeline = lazy(() => import('pl-fe/pages/timelines/home-timeli export const ImportData = lazy(() => import('pl-fe/pages/settings/import-data')); export const IntentionalError = lazy(() => import('pl-fe/pages/utils/intentional-error')); export const InteractionPolicies = lazy(() => import('pl-fe/pages/settings/interaction-policies')); +export const LandingPage = lazy(() => import('pl-fe/pages/utils/landing')); export const LandingTimeline = lazy(() => import('pl-fe/pages/timelines/landing-timeline')); export const LinkTimeline = lazy(() => import('pl-fe/pages/timelines/link-timeline')); export const ListTimeline = lazy(() => import('pl-fe/pages/timelines/list-timeline')); diff --git a/packages/pl-fe/src/locales/en.json b/packages/pl-fe/src/locales/en.json index 12cbb0ce3..7023a0144 100644 --- a/packages/pl-fe/src/locales/en.json +++ b/packages/pl-fe/src/locales/en.json @@ -1035,6 +1035,21 @@ "keyboard_shortcuts.toot": "to start a new post", "keyboard_shortcuts.unfocus": "to un-focus compose textarea/search", "keyboard_shortcuts.up": "to move up in the list", + "landing.customizable.description": "pl-fe lets you choose between three themes and adjust accent color to your liking.", + "landing.customizable.title": "Customizable.", + "landing.description": "pl-fe is a feature-rich Fediverse web client.", + "landing.feature_rich.description": "pl-fe includes a lot features to improve your experience, like WYSIWYG text editor, draft posts and language detection.", + "landing.feature_rich.title": "Feature-rich.", + "landing.open_source.description": "pl-fe is free and open source software. You can participate in development, contribute to the project or report bugs.", + "landing.open_source.title": "Open source.", + "landing.pl_api.description": "pl-fe implements features not present in standard Mastodon API, like emoji reactions, chats or interaction policies.", + "landing.pl_api.title": "Get the most out of your Fediverse software.", + "landing.private.description": "pl-fe includes features which help you maintain online privacy. This includes URL cleaning, which helps you remove unwanted parts of URLs used to mark your online activity.", + "landing.private.title": "Stay private.", + "landing.sign_in": "Sign in", + "landing.source_code": "Source code", + "landing.use_with_platform.description": "pl-fe works with any backend implementing Mastodon API.", + "landing.use_with_platform.title": "Use with your favorite Fediverse platform.", "lightbox.close": "Close", "lightbox.expand": "Expand", "lightbox.minimize": "Minimize", diff --git a/packages/pl-fe/src/pages/utils/landing.tsx b/packages/pl-fe/src/pages/utils/landing.tsx index 16da6fda3..d72e78bf4 100644 --- a/packages/pl-fe/src/pages/utils/landing.tsx +++ b/packages/pl-fe/src/pages/utils/landing.tsx @@ -1,16 +1,61 @@ import React from 'react'; +import { FormattedMessage } from 'react-intl'; +import Button from 'pl-fe/components/ui/button'; +import Card, { CardTitle } from 'pl-fe/components/ui/card'; import Column from 'pl-fe/components/ui/column'; +import HStack from 'pl-fe/components/ui/hstack'; +import Stack from 'pl-fe/components/ui/stack'; +import Text from 'pl-fe/components/ui/text'; +import LinkFooter from 'pl-fe/features/ui/components/link-footer'; +import sourceCode from 'pl-fe/utils/code'; import { LogoText } from '../timelines/landing-timeline'; const LandingPage = () => { return ( - - - pl-fe - - + <> + + + + pl-fe + + + + + + + + } /> + + + + } /> + + + + } /> + + + + } /> + + + + } /> + + + + } /> + + + + + + + + + ); };