This is an automated email from the ASF dual-hosted git repository.

jark pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/fluss.git


The following commit(s) were added to refs/heads/main by this push:
     new f0f1e768b [website] Hero section update  (#2002)
f0f1e768b is described below

commit f0f1e768b4a9b2a3676bcd53c7e08978a566b983
Author: MehulBatra <[email protected]>
AuthorDate: Sat Nov 22 21:20:43 2025 +0530

    [website] Hero section update  (#2002)
---
 website/src/css/custom.css         |  10 +++-
 website/src/pages/index.module.css |  31 ++++++++++++-
 website/src/pages/index.tsx        |  91 +++++++++++++++++++++++++++++++++----
 website/static/img/new_banner.png  | Bin 0 -> 1393396 bytes
 4 files changed, 119 insertions(+), 13 deletions(-)

diff --git a/website/src/css/custom.css b/website/src/css/custom.css
index 42d4a9a86..8b7567905 100644
--- a/website/src/css/custom.css
+++ b/website/src/css/custom.css
@@ -21,6 +21,9 @@
  * work well for content-centric websites.
  */
 
+/* Import Inter font from Google Fonts */
+@import 
url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap');
+
 /* You can override the default Infima variables here. */
 :root {
   --ifm-color-primary: #0071e3;
@@ -46,10 +49,13 @@
 
 .navbar__brand {
   font-family: monaco;
+  color: inherit;
 }
 
 .hero__title {
-  font-family: monaco;
+  font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
+  font-weight: 700;
+  letter-spacing: -0.03em;
 }
 
 .hero__subtitle {
@@ -249,4 +255,4 @@
 
 .hidden {
     display: none !important;
-}
\ No newline at end of file
+}
diff --git a/website/src/pages/index.module.css 
b/website/src/pages/index.module.css
index b9e7d5e7a..1b9a0acb5 100644
--- a/website/src/pages/index.module.css
+++ b/website/src/pages/index.module.css
@@ -26,10 +26,14 @@
     position: relative;
     overflow: hidden;
     margin-left: -1px;
+    margin-top: -60px;
+    padding-top: calc(5rem + 60px);
 
     @media screen and (min-width: 997px) {
-        background: url("@site/static/img/background.jpg");
+        background-image: url("@site/static/img/new_banner.png");
         background-size: cover;
+        background-position: center center;
+        background-repeat: no-repeat;
     }
 
     @media screen and (max-width: 996px) {
@@ -42,6 +46,29 @@
     .heroBanner {
         padding: 2rem;
     }
+
+    .heroBanner :global(.hero__title) {
+        font-size: 2.5rem;
+    }
+
+    .heroBanner :global(.hero__subtitle) {
+        font-size: 1.2rem;
+    }
+}
+
+.heroBanner :global(.hero__title) {
+    font-size: 4rem;
+    font-weight: 700;
+    letter-spacing: -0.02em;
+    text-shadow: 0 2px 10px rgba(0, 0, 0, 0.3);
+}
+
+.heroBanner :global(.hero__subtitle) {
+    font-size: 1.5rem;
+    font-weight: 400;
+    letter-spacing: 0.01em;
+    text-shadow: 0 1px 8px rgba(0, 0, 0, 0.2);
+    margin-top: 1rem;
 }
 
 .buttons {
@@ -50,6 +77,7 @@
     justify-content: center;
     flex-wrap: wrap;
     gap: 20px;
+    margin-top: 2rem;
 }
 
 .buttonWidth {
@@ -67,3 +95,4 @@
     width: 20px;
     height: 20px;
 }
+
diff --git a/website/src/pages/index.tsx b/website/src/pages/index.tsx
index fdd0d14c5..06aa2fcfc 100644
--- a/website/src/pages/index.tsx
+++ b/website/src/pages/index.tsx
@@ -22,6 +22,7 @@ import Layout from '@theme/Layout';
 import HomepageFeatures from '@site/src/components/HomepageFeatures';
 import HomepageIntroduce from '@site/src/components/HomepageIntroduce';
 import Heading from '@theme/Heading';
+import {useEffect, useState} from 'react';
 
 import styles from './index.module.css';
 
@@ -70,16 +71,86 @@ function HomepageHeader() {
 
 export default function Home(): JSX.Element {
     const {siteConfig} = useDocusaurusContext();
+    const [isScrolled, setIsScrolled] = useState(false);
+
+    useEffect(() => {
+        const handleScroll = () => {
+            // Change navbar style when scrolled past 500 (past most of the 
hero section)
+            setIsScrolled(window.scrollY > 500);
+        };
+
+        window.addEventListener('scroll', handleScroll);
+        return () => window.removeEventListener('scroll', handleScroll);
+    }, []);
+
     return (
-        <Layout
-            // leave empty to just display "Apache Fluss (Incubating)" in tab 
on landing page
-            title=""
-            description="Streaming Storage for Real-Time Analytics">
-            <HomepageHeader/>
-            <main>
-                <HomepageIntroduce/>
-                <HomepageFeatures/>
-            </main>
-        </Layout>
+        <>
+            {/* Inline styles for homepage navbar with scroll-based 
transitions */}
+            <style dangerouslySetInnerHTML={{__html: `
+                .navbar {
+                    background-color: ${isScrolled ? 
'var(--ifm-navbar-background-color)' : 'transparent'} !important;
+                    backdrop-filter: ${isScrolled ? 'blur(8px)' : 'none'} 
!important;
+                    box-shadow: ${isScrolled ? 'var(--ifm-navbar-shadow)' : 
'none'} !important;
+                    transition: background-color 0.3s ease, backdrop-filter 
0.3s ease, box-shadow 0.3s ease !important;
+                }
+                .navbar__link,
+                .navbar__brand,
+                .navbar__brand b,
+                .navbar__brand strong,
+                .navbar__title {
+                    color: ${isScrolled ? 'var(--ifm-navbar-link-color)' : 
'white'} !important;
+                    text-shadow: ${isScrolled ? 'none' : '0 1px 3px rgba(0, 0, 
0, 0.3)'};
+                    transition: color 0.3s ease, text-shadow 0.3s ease 
!important;
+                }
+                .navbar__brand * {
+                    color: ${isScrolled ? 'var(--ifm-navbar-link-color)' : 
'white'} !important;
+                }
+                .navbar__logo {
+                    content: url('${isScrolled ? 
'/img/logo/svg/colored_logo.svg' : '/img/logo/svg/white_color_logo.svg'}') 
!important;
+                    transition: content 0.3s ease !important;
+                }
+                .navbar__search-input {
+                    background-color: rgba(255, 255, 255, 0.9) !important;
+                    color: #1d1d1d !important;
+                }
+                .navbar__search-input::placeholder {
+                    color: #666 !important;
+                    opacity: 1 !important;
+                }
+                .DocSearch-Button {
+                    background-color: rgba(255, 255, 255, 0.9) !important;
+                }
+                .DocSearch-Button-Placeholder {
+                    color: #666 !important;
+                }
+                .DocSearch-Search-Icon {
+                    color: #666 !important;
+                }
+                .navbar__toggle {
+                    color: ${isScrolled ? 'var(--ifm-navbar-link-color)' : 
'white'} !important;
+                    transition: color 0.3s ease !important;
+                }
+                .navbar__toggle svg {
+                    color: ${isScrolled ? 'var(--ifm-navbar-link-color)' : 
'white'} !important;
+                    fill: ${isScrolled ? 'var(--ifm-navbar-link-color)' : 
'white'} !important;
+                    transition: color 0.3s ease, fill 0.3s ease !important;
+                }
+                .header-github-link::before {
+                    background: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 
24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='${isScrolled ? 'black' : 
'white'}' d='M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 
11.385.6.113.82-.258.82-.577 
0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 
17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 
1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.3 
[...]
+                    transition: background 0.3s ease !important;
+                }
+            `}} />
+            <Layout
+                // leave empty to just display "Apache Fluss (Incubating)" in 
tab on landing page
+                title=""
+                description="Streaming Storage for Real-Time Analytics"
+                wrapperClassName={styles.homepageWrapper}>
+                <HomepageHeader/>
+                <main>
+                    <HomepageIntroduce/>
+                    <HomepageFeatures/>
+                </main>
+            </Layout>
+        </>
     );
 }
diff --git a/website/static/img/new_banner.png 
b/website/static/img/new_banner.png
new file mode 100644
index 000000000..125f6642f
Binary files /dev/null and b/website/static/img/new_banner.png differ

Reply via email to