diff --git a/packages/fakeyou.com/public/mascot/TTS-img.webp b/packages/fakeyou.com/public/mascot/TTS-img.webp
new file mode 100644
index 0000000000..5c90d15e57
Binary files /dev/null and b/packages/fakeyou.com/public/mascot/TTS-img.webp differ
diff --git a/packages/fakeyou.com/public/mascot/VC-img.webp b/packages/fakeyou.com/public/mascot/VC-img.webp
new file mode 100644
index 0000000000..225890587f
Binary files /dev/null and b/packages/fakeyou.com/public/mascot/VC-img.webp differ
diff --git a/packages/fakeyou.com/src/scss/site-refresh.scss b/packages/fakeyou.com/src/scss/site-refresh.scss
index 7a322602c0..52460373c0 100644
--- a/packages/fakeyou.com/src/scss/site-refresh.scss
+++ b/packages/fakeyou.com/src/scss/site-refresh.scss
@@ -54,7 +54,6 @@ styles with important tags:
.btn:active,
.btn.focus {
outline: 0px !important;
- -webkit-appearance: none;
box-shadow: none !important;
}
@@ -637,6 +636,43 @@ input {
color: $white !important;
}
+.img-product {
+ &.img-tts {
+ margin-top: -100px;
+ max-height: 240px;
+ }
+
+ &.img-vc {
+ margin-top: -100px;
+ max-height: 240px;
+ }
+}
+
+.index-title {
+ line-height: 5;
+}
+
+.panel-select {
+ transition: 0.2s all;
+ cursor: pointer;
+ border-radius: 8px !important;
+ max-width: 512px;
+ border-width: 3px !important;
+
+ &:hover {
+ border-color: $primary !important;
+ }
+}
+
+.mw-lead {
+ max-width: 480px;
+}
+
+.zi-2 {
+ position: relative;
+ z-index: 2;
+}
+
@media (min-width: 992px) {
.fakeyou-refresh {
.panel {
@@ -689,5 +725,15 @@ input {
.video-card {
min-height: 220px;
}
+
+ .img-product {
+ &.img-tts {
+ max-height: 300px;
+ }
+
+ &.img-vc {
+ max-height: 300px;
+ }
+ }
}
}
diff --git a/packages/fakeyou.com/src/v2/nav/TopNav.tsx b/packages/fakeyou.com/src/v2/nav/TopNav.tsx
index 9caf4fdecd..b1740e3f2d 100644
--- a/packages/fakeyou.com/src/v2/nav/TopNav.tsx
+++ b/packages/fakeyou.com/src/v2/nav/TopNav.tsx
@@ -355,7 +355,7 @@ function TopNav(props: Props) {
aria-labelledby="offcanvasNavbarLgDropdown-tts"
>
-
+
TTS
diff --git a/packages/fakeyou.com/src/v2/view/PageContainer.tsx b/packages/fakeyou.com/src/v2/view/PageContainer.tsx
index ff842f1233..7243f9e19a 100644
--- a/packages/fakeyou.com/src/v2/view/PageContainer.tsx
+++ b/packages/fakeyou.com/src/v2/view/PageContainer.tsx
@@ -62,6 +62,7 @@ import { CheckoutSuccessPage } from "./premium/CheckoutSuccessPage";
import { CheckoutCancelPage } from "./premium/CheckoutCancelPage";
import { PortalSuccessPage } from "./premium/PortalSuccessPage";
import { PrivacyPage } from "./about/privacy_page/PrivacyPage";
+import { LandingPage } from "./landing/LandingPage";
interface Props {
sessionWrapper: SessionWrapper;
@@ -144,7 +145,9 @@ class PageContainer extends React.Component {
logoutHandler={this.logout}
sessionWrapper={this.props.sessionWrapper}
querySessionCallback={this.props.querySessionAction}
- querySessionSubscriptionsCallback={this.props.querySessionSubscriptionsAction}
+ querySessionSubscriptionsCallback={
+ this.props.querySessionSubscriptionsAction
+ }
/>
@@ -162,7 +165,9 @@ class PageContainer extends React.Component {
@@ -251,7 +256,9 @@ class PageContainer extends React.Component {
{
-
+
{
setMaybeSelectedTtsModel={this.props.setMaybeSelectedTtsModel}
/>
+
+
+
+
diff --git a/packages/fakeyou.com/src/v2/view/landing/LandingPage.tsx b/packages/fakeyou.com/src/v2/view/landing/LandingPage.tsx
new file mode 100644
index 0000000000..aedb79edc2
--- /dev/null
+++ b/packages/fakeyou.com/src/v2/view/landing/LandingPage.tsx
@@ -0,0 +1,173 @@
+import React from "react";
+import { Link } from "react-router-dom";
+import { motion } from "framer-motion";
+import { container, item, panel } from "../../../data/animation";
+import { SessionWrapper } from "@storyteller/components/src/session/SessionWrapper";
+import { SessionSubscriptionsWrapper } from "@storyteller/components/src/session/SessionSubscriptionsWrapper";
+import { t } from "i18next";
+import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
+import { faUsers, faStar } from "@fortawesome/free-solid-svg-icons";
+import { faDiscord, faTwitter } from "@fortawesome/free-brands-svg-icons";
+
+interface Props {
+ sessionWrapper: SessionWrapper;
+ sessionSubscriptionsWrapper: SessionSubscriptionsWrapper;
+}
+
+function LandingPage(props: Props) {
+ let signUpButton = <>>;
+ let upgradeButton = <>>;
+
+ if (!props.sessionWrapper.isLoggedIn()) {
+ signUpButton = (
+ <>
+
+
+
+ >
+ );
+ }
+
+ if (props.sessionWrapper.isLoggedIn()) {
+ if (!props.sessionSubscriptionsWrapper.hasPaidFeatures()) {
+ upgradeButton = (
+ <>
+
+
+
+ >
+ );
+ }
+ }
+
+ return (
+
+
+
+
+ Text to Speech,
+
+ Voice, and AI Tools
+
+
+
+
+ Use FakeYou deep fake technology to say stuff with your favorite
+ characters.
+
+
+
+ {upgradeButton}
+ {signUpButton}
+
+
+
+
+
+ {/*
+

+
*/}
+
+
+
+
+
+
+

+
Text to Speech
+
+ Generate audio with your text input
+
+
+
+
+
+
+
+

+
Voice Conversion
+
+ Speak as someone else
+
+
+
+
+
+
+
+
+
+
+ Join Our
+ Community
+
+
+
+ We'd love to chat with you!
+
+ Please join us in Discord if you have any questions.
+
+
+
+
+
+ );
+}
+
+export { LandingPage };