From c9ca9fec6ca45c30dcc6172d673618e8fc7e7130 Mon Sep 17 00:00:00 2001 From: BFlat Date: Thu, 22 Feb 2024 18:20:48 +0700 Subject: [PATCH] landing demo/nav update --- .../src/components/layout/TopNav/TopNav.scss | 6 ++ .../src/components/layout/TopNav/TopNav.tsx | 68 +++++++++++++------ packages/fakeyou.com/src/scss/nav.scss | 3 +- .../v2/view/pages/landing/LandingPage.scss | 11 +++ .../src/v2/view/pages/landing/LandingPage.tsx | 1 + .../landing/fakeyou/FakeYouLandingHeader.tsx | 4 +- .../LandingDemo/FakeYouLandingDemo.tsx | 19 +++++- 7 files changed, 87 insertions(+), 25 deletions(-) create mode 100644 packages/fakeyou.com/src/components/layout/TopNav/TopNav.scss create mode 100644 packages/fakeyou.com/src/v2/view/pages/landing/LandingPage.scss diff --git a/packages/fakeyou.com/src/components/layout/TopNav/TopNav.scss b/packages/fakeyou.com/src/components/layout/TopNav/TopNav.scss new file mode 100644 index 0000000000..3ff22966dd --- /dev/null +++ b/packages/fakeyou.com/src/components/layout/TopNav/TopNav.scss @@ -0,0 +1,6 @@ +@import "scss/colours.scss"; + +.topbar-bg-dark { + background-color: $bg !important; + border-bottom: 1px solid transparent !important; +} diff --git a/packages/fakeyou.com/src/components/layout/TopNav/TopNav.tsx b/packages/fakeyou.com/src/components/layout/TopNav/TopNav.tsx index 93011ebe2a..4923bdad09 100644 --- a/packages/fakeyou.com/src/components/layout/TopNav/TopNav.tsx +++ b/packages/fakeyou.com/src/components/layout/TopNav/TopNav.tsx @@ -20,6 +20,7 @@ import { InferenceJobsModal } from "components/modals"; import { useDomainConfig } from "context/DomainConfigContext"; import NavItem from "../../common/NavItem/NavItem"; import ProfileDropdown from "components/common/ProfileDropdown"; +import "./TopNav.scss"; interface TopNavProps { sessionWrapper: SessionWrapper; @@ -50,6 +51,9 @@ export default function TopNav({ const { open } = useModal(); const openModal = () => open({ component: InferenceJobsModal }); + const [isScrolled, setIsScrolled] = useState(false); + const loggedIn = sessionWrapper.isLoggedIn(); + const showNavItem = !loggedIn && (isOnLandingPage || isOnLoginOrSignUpPage); const handleMenuButtonClick = () => { if (window.innerWidth < 1200) { @@ -101,6 +105,22 @@ export default function TopNav({ }; }, []); + useEffect(() => { + const handleScroll = () => { + if (window.scrollY > 100) { + setIsScrolled(true); + } else { + setIsScrolled(false); + } + }; + + window.addEventListener("scroll", handleScroll); + + return () => { + window.removeEventListener("scroll", handleScroll); + }; + }, []); + const logoutHandler = async () => { await Logout(); querySessionCallback(); @@ -108,8 +128,6 @@ export default function TopNav({ history.push("/"); }; - const loggedIn = sessionWrapper.isLoggedIn(); - let profileDropdown = <>; const { user } = useSession(); @@ -157,7 +175,12 @@ export default function TopNav({ ]; return ( -
+
@@ -175,8 +198,7 @@ export default function TopNav({ className="mb-0 d-block d-lg-none" /> - {((!loggedIn && isOnLandingPage) || - (!loggedIn && isOnLoginOrSignUpPage)) && ( + {showNavItem && (
{/* Search Bar */}
- + {isScrolled && ( + + )}
- {((!loggedIn && isOnLandingPage) || - (!loggedIn && isOnLoginOrSignUpPage)) && ( + {showNavItem && (
-
- +
); } diff --git a/packages/fakeyou.com/src/v2/view/pages/landing/fakeyou/LandingDemo/FakeYouLandingDemo.tsx b/packages/fakeyou.com/src/v2/view/pages/landing/fakeyou/LandingDemo/FakeYouLandingDemo.tsx index 86468612b3..b83310382e 100644 --- a/packages/fakeyou.com/src/v2/view/pages/landing/fakeyou/LandingDemo/FakeYouLandingDemo.tsx +++ b/packages/fakeyou.com/src/v2/view/pages/landing/fakeyou/LandingDemo/FakeYouLandingDemo.tsx @@ -56,6 +56,23 @@ export default function LandingDemo({ const [lastSelectedVoice, setLastSelectedVoice] = useState( null ); + const [placeholder, setPlaceholder] = useState(""); + + const placeholderTexts = [ + "You can make a video, animation, or any content you want with your favorite voices.", + "Try using this voice to make a custom greeting, away message, or something special for your friends.", + "You can change what I say with this voice. Just type it!", + "Enter the text you want the voice to say here...", + ]; + + useEffect(() => { + // Randomize placeholder text on component mount + const randomPlaceholderIndex = Math.floor( + Math.random() * placeholderTexts.length + ); + setPlaceholder(placeholderTexts[randomPlaceholderIndex]); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); const handleChangeText = (ev: React.FormEvent) => { const textValue = (ev.target as HTMLTextAreaElement).value; @@ -228,7 +245,7 @@ export default function LandingDemo({ />