This is an automated email from the ASF dual-hosted git repository.
visoar pushed a commit to branch apache-site-build
in repository https://gitbox.apache.org/repos/asf/bifromq-sites.git
The following commit(s) were added to refs/heads/apache-site-build by this push:
new 6c78119 fix:logo cloud/add:ChevronDownIcon
6c78119 is described below
commit 6c78119a30ff5f7ae2eede49212548b938a1f18a
Author: Visoar <[email protected]>
AuthorDate: Sat Jun 7 21:26:31 2025 +0800
fix:logo cloud/add:ChevronDownIcon
---
website/src/components/homepage/CallToAction.tsx | 2 +-
website/src/components/homepage/HomeFooter.tsx | 107 +++++++++++------------
website/src/components/homepage/HomeSection.tsx | 57 ++++++++++--
website/src/css/custom.css | 2 +-
4 files changed, 104 insertions(+), 64 deletions(-)
diff --git a/website/src/components/homepage/CallToAction.tsx
b/website/src/components/homepage/CallToAction.tsx
index 46d4c1c..5fcdd7b 100644
--- a/website/src/components/homepage/CallToAction.tsx
+++ b/website/src/components/homepage/CallToAction.tsx
@@ -51,7 +51,7 @@ const CallToAction: React.FC<CallToActionProps> = ({
</p>
{/* CTA Buttons */}
- <div className="flex flex-col sm:flex-row gap-6 justify-center
mb-16">
+ <div className="flex flex-col md:flex-row gap-6 justify-center
mb-16">
<Link
to="/docs"
className="group relative inline-flex items-center px-8 py-4
rounded-2xl bg-white text-gray-900 font-semibold hover:bg-gray-100
transition-all duration-300 hover:shadow-2xl hover:shadow-white/25
hover:-translate-y-1 overflow-hidden"
diff --git a/website/src/components/homepage/HomeFooter.tsx
b/website/src/components/homepage/HomeFooter.tsx
index d0eceef..0174011 100644
--- a/website/src/components/homepage/HomeFooter.tsx
+++ b/website/src/components/homepage/HomeFooter.tsx
@@ -12,24 +12,17 @@ const HomeFooter: React.FC = () => {
return (
<footer className="bg-gray-900 dark:bg-gray-950">
<div className="mx-auto max-w-7xl px-6 py-16 lg:px-8">
- <div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-5 gap-8">
+ <div className="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-5 gap-8
lg:gap-6">
{/* Company Info */}
- <div className="lg:col-span-1">
- <div className="flex items-center mb-4">
- {/* <div className="p-2 rounded-lg bg-blue-600 mr-3">
- <img
- src="./img/logo.svg"
- alt="BifroMQ"
- className="h-5 w-5 filter brightness-0 invert"
- />
- </div> */}
+ <div className="sm:col-span-2 lg:col-span-1 flex flex-col">
+ <div className="flex items-center mb-6">
<span className="text-xl font-bold text-white">
BifroMQ
</span>
</div>
- <p className="text-gray-400 mb-6 text-sm leading-relaxed">
+ <p className="text-gray-400 mb-4 text-sm leading-relaxed">
<Translate>
- Open-source, high-performance MQTT broker with
enterprise-grade reliability. Trusted by industry leaders for mission-critical
messaging systems.
+ Open-source, high-performance MQTT broker with
enterprise-grade reliability. Applicable to IoT, IM and other scenarios.
</Translate>
</p>
@@ -37,7 +30,7 @@ const HomeFooter: React.FC = () => {
<div className="flex space-x-3">
<a
href="mailto:[email protected]"
- className="p-2 rounded-lg bg-gray-800 text-gray-400
hover:text-blue-400 hover:bg-gray-700 transition-all duration-200"
+ className="size-10 flex items-center justify-center rounded-lg
bg-gray-800 text-gray-400 hover:text-blue-400 hover:bg-gray-700 transition-all
duration-200"
aria-label="Email"
>
<EnvelopeIcon className="h-4 w-4" />
@@ -46,7 +39,7 @@ const HomeFooter: React.FC = () => {
href="https://discord.gg/Pfs3QRadRB"
target="_blank"
rel="noopener noreferrer"
- className="p-2 rounded-lg bg-gray-800 text-gray-400
hover:text-purple-400 hover:bg-gray-700 transition-all duration-200"
+ className="size-10 flex items-center justify-center rounded-lg
bg-gray-800 text-gray-400 hover:text-blue-400 hover:bg-gray-700 transition-all
duration-200"
aria-label="Discord"
>
<svg className="h-4 w-4" fill="currentColor" viewBox="0 0 24
24">
@@ -57,7 +50,7 @@ const HomeFooter: React.FC = () => {
href="https://github.com/apache/bifromq"
target="_blank"
rel="noopener noreferrer"
- className="p-2 rounded-lg bg-gray-800 text-gray-400
hover:text-white hover:bg-gray-700 transition-all duration-200"
+ className="size-10 flex items-center justify-center rounded-lg
bg-gray-800 text-gray-400 hover:text-blue-400 hover:bg-gray-700 transition-all
duration-200"
aria-label="GitHub"
>
<svg className="h-4 w-4" fill="currentColor" viewBox="0 0 24
24">
@@ -65,25 +58,16 @@ const HomeFooter: React.FC = () => {
</svg>
</a>
</div>
- <div className="flex flex-col lg:flex-row justify-between
items-center space-y-4 lg:space-y-0 mt-6">
- <div className="text-center lg:text-left">
- <p className="text-xs text-gray-400">
- © {new Date().getFullYear()} <span className="text-white
font-medium">Apache BifroMQ (Incubating)</span>.
- <br />
- <Translate>All rights reserved.</Translate>
- </p>
- </div>
- </div>
</div>
{/* Resources */}
- <div>
- <h3 className="text-sm font-semibold text-white mb-4 flex
items-center">
+ <div className="flex flex-col h-full">
+ <h3 className="text-sm font-semibold text-white mb-6 flex
items-center">
<NewspaperIcon className="h-4 w-4 mr-2 text-green-400" />
<Translate>Resources</Translate>
</h3>
- <ul className="space-y-3">
- <li className="group">
+ <div className="space-y-4 flex-grow">
+ <div className="group">
<Link
to="/blog"
className="text-sm text-gray-400 hover:text-white
transition-all duration-200 flex items-center group-hover:translate-x-1"
@@ -91,8 +75,8 @@ const HomeFooter: React.FC = () => {
<span className="w-1 h-1 bg-green-400 rounded-full mr-2
opacity-0 group-hover:opacity-100 transition-opacity duration-200"></span>
<Translate>Blog</Translate>
</Link>
- </li>
- <li className="group">
+ </div>
+ <div className="group">
<a
href="https://github.com/apache/bifromq"
target="_blank"
@@ -102,8 +86,8 @@ const HomeFooter: React.FC = () => {
<span className="w-1 h-1 bg-green-400 rounded-full mr-2
opacity-0 group-hover:opacity-100 transition-opacity duration-200"></span>
<Translate>GitHub</Translate>
</a>
- </li>
- <li className="group">
+ </div>
+ <div className="group">
<a
href="https://github.com/apache/bifromq/releases"
target="_blank"
@@ -113,8 +97,8 @@ const HomeFooter: React.FC = () => {
<span className="w-1 h-1 bg-green-400 rounded-full mr-2
opacity-0 group-hover:opacity-100 transition-opacity duration-200"></span>
<Translate>Releases</Translate>
</a>
- </li>
- <li className="group">
+ </div>
+ <div className="group">
<a
href="https://github.com/apache/bifromq/issues"
target="_blank"
@@ -124,18 +108,18 @@ const HomeFooter: React.FC = () => {
<span className="w-1 h-1 bg-green-400 rounded-full mr-2
opacity-0 group-hover:opacity-100 transition-opacity duration-200"></span>
<Translate>Issues</Translate>
</a>
- </li>
- </ul>
+ </div>
+ </div>
</div>
{/* Apache */}
- <div>
- <h3 className="text-sm font-semibold text-white mb-4 flex
items-center">
+ <div className="flex flex-col h-full">
+ <h3 className="text-sm font-semibold text-white mb-6 flex
items-center">
<DocumentTextIcon className="h-4 w-4 mr-2 text-blue-400" />
<Translate>Apache</Translate>
</h3>
- <ul className="space-y-3">
- <li className="group">
+ <div className="space-y-4 flex-grow">
+ <div className="group">
<Link
to="https://incubator.apache.org/"
className="text-sm text-gray-400 hover:text-white
transition-all duration-200 flex items-center group-hover:translate-x-1"
@@ -143,8 +127,8 @@ const HomeFooter: React.FC = () => {
<span className="w-1 h-1 bg-blue-400 rounded-full mr-2
opacity-0 group-hover:opacity-100 transition-opacity duration-200"></span>
<Translate>Apache Incubator</Translate>
</Link>
- </li>
- <li className="group">
+ </div>
+ <div className="group">
<Link
to="https://www.apache.org/foundation/policies/conduct"
className="text-sm text-gray-400 hover:text-white
transition-all duration-200 flex items-center group-hover:translate-x-1"
@@ -152,8 +136,8 @@ const HomeFooter: React.FC = () => {
<span className="w-1 h-1 bg-blue-400 rounded-full mr-2
opacity-0 group-hover:opacity-100 transition-opacity duration-200"></span>
<Translate>Code of Conduct</Translate>
</Link>
- </li>
- <li className="group">
+ </div>
+ <div className="group">
<Link
to="https://www.apache.org/licenses/LICENSE-2.0"
className="text-sm text-gray-400 hover:text-white
transition-all duration-200 flex items-center group-hover:translate-x-1"
@@ -161,29 +145,38 @@ const HomeFooter: React.FC = () => {
<span className="w-1 h-1 bg-blue-400 rounded-full mr-2
opacity-0 group-hover:opacity-100 transition-opacity duration-200"></span>
<Translate>Apache 2.0 License</Translate>
</Link>
- </li>
- </ul>
+ </div>
+ </div>
</div>
{/* Apache Incubator */}
- <div className="lg:col-span-2">
- <h3 className="text-sm font-semibold text-white mb-4 flex
items-center">
- <TagIcon className="h-4 w-4 mr-2 text-blue-400" />
+ <div className="sm:col-span-2 lg:col-span-2 flex flex-col h-full">
+ <h3 className="text-sm font-semibold text-white mb-6 flex
items-center">
+ <TagIcon className="h-4 w-4 mr-2 text-orange-400" />
<Translate>Apache Incubator</Translate>
</h3>
- <div className="space-y-3">
- <div className="p-4 rounded-lg bg-gradient-to-br
from-blue-900/30 to-indigo-900/30 border border-blue-600/20">
- <p className="text-gray-300 text-xs leading-relaxed">
- <strong className="text-blue-400">Apache BifroMQ</strong> is
an effort undergoing incubation at The Apache Software Foundation (ASF),
sponsored by the Apache Incubator.
- </p>
- <p className="text-gray-400 text-xs leading-relaxed -mb-0">
- Incubation is required of all newly accepted projects until
a further review indicates that the infrastructure, communications, and
decision making process have stabilized in a manner consistent with other
successful ASF projects.
+ <div className="space-y-4 flex-grow flex flex-col">
+ <div className="p-4 rounded-lg bg-gradient-to-br
from-blue-900/30 to-indigo-900/30 border border-blue-600/20 flex-grow">
+ <p className="text-gray-300 text-xs leading-relaxed -mb-0">
+ <strong className="text-blue-400">Apache BifroMQ</strong> is
an effort undergoing incubation at The Apache Software Foundation (ASF),
sponsored by the Apache Incubator. Incubation is required of all newly accepted
projects until a further review indicates that the infrastructure,
communications, and decision making process have stabilized in a manner
consistent with other successful ASF projects. While incubation status is not
necessarily a reflection of the completenes [...]
</p>
</div>
-
+ <div className="flex justify-center mt-auto">
+ <img src="https://fury.apache.org/img/apache-incubator.svg"
alt="Apache Incubator" className="w-32 h-auto rounded-lg opacity-80
hover:opacity-100 transition-opacity duration-200" />
+ </div>
</div>
</div>
</div>
+
+ {/* Copyright */}
+ <div className="pt-8 border-t border-gray-800">
+ <div className="text-center">
+ <p className="text-xs text-gray-400">
+ © {new Date().getFullYear()} <span className="text-white">Apache
BifroMQ (Incubating)</span>.
+ <Translate> All rights reserved. </Translate>
+ </p>
+ </div>
+ </div>
</div>
</footer>
);
diff --git a/website/src/components/homepage/HomeSection.tsx
b/website/src/components/homepage/HomeSection.tsx
index 419c9da..d71d430 100644
--- a/website/src/components/homepage/HomeSection.tsx
+++ b/website/src/components/homepage/HomeSection.tsx
@@ -21,7 +21,8 @@ import {
WifiIcon,
DevicePhoneMobileIcon,
ComputerDesktopIcon,
- SparklesIcon
+ SparklesIcon,
+ ChevronDownIcon
} from '@heroicons/react/24/outline';
import {
CpuChipIcon as CpuChipIconSolid,
@@ -382,10 +383,10 @@ export default function HomeSection() {
))}
</div> */}
- {/* CTA 按钮 */}
- <div className="flex flex-col sm:flex-row items-center
justify-center gap-6 mb-16">
+ {/* hero 按钮 */}
+ <div className="flex flex-col md:flex-row items-center
justify-center gap-6 mb-16">
<a
- href="./docs/Readme/"
+ href="./docs/get_started/intro/"
className="group relative inline-flex items-center px-8 py-4
text-lg font-semibold text-white bg-gradient-to-r from-blue-600 to-purple-600
hover:from-blue-700 hover:to-purple-700 rounded-2xl shadow-lg hover:shadow-2xl
transition-all duration-300 transform hover:scale-105 overflow-hidden"
>
{/* 按钮光效 */}
@@ -430,6 +431,27 @@ export default function HomeSection() {
</div>
</div>
</div>
+
+ {/* 向下指引箭头 */}
+ <div className="absolute bottom-12 left-1/2 -translate-x-1/2 z-20">
+ <div className="group relative flex h-14 w-14 cursor-pointer
items-center justify-center rounded-full border border-gray-200/60 bg-white/90
shadow-lg backdrop-blur-sm transition-all duration-300 hover:scale-110
hover:shadow-xl dark:border-gray-700/50 dark:bg-gray-800/90"
+ onClick={() => {
+ const nextSection =
document.querySelector('section:nth-of-type(2)');
+ nextSection?.scrollIntoView({ behavior: 'smooth' });
+ }}
+ >
+ <div className="absolute -top-[4.25rem] left-1/2 -translate-x-1/2
whitespace-nowrap rounded-lg bg-gray-900 px-3 py-1.5 text-sm text-white
opacity-0 transition-opacity duration-300 group-hover:opacity-100
dark:bg-gray-100 dark:text-gray-900">
+ <Translate>Scroll to explore</Translate>
+ <div className="absolute top-full left-1/2 h-2 w-2
-translate-x-1/2 rotate-45 bg-gray-900 dark:bg-gray-100"></div>
+ </div>
+
+ <div className="absolute h-full w-full animate-ping rounded-full
border-2 border-sky-400/50"></div>
+ <div className="absolute h-full w-full animate-pulse rounded-full
border border-sky-400/50"></div>
+
+ <ChevronDownIcon className="mt-2 relative h-7 w-7 animate-bounce
text-sky-600 transition-colors group-hover:text-sky-500 dark:text-sky-400
dark:group-hover:text-sky-300 translate-y-0.5" />
+ </div>
+ </div>
+
</section>
{/* 客户信任区域 - 重新设计 */}
@@ -459,7 +481,7 @@ export default function HomeSection() {
{/* 悬停光效 */}
<div className="absolute inset-0 bg-gradient-to-br
from-blue-500/5 to-purple-500/5 opacity-0 group-hover:opacity-100 rounded-2xl
transition-opacity duration-300"></div>
- <div className="relative">
+ <div className="relative flex items-center justify-center">
<img
className="max-h-12 w-auto object-contain opacity-60
group-hover:opacity-100 transition-all duration-300 mx-auto filter grayscale
group-hover:grayscale-0"
src={customer.logo}
@@ -617,6 +639,31 @@ export default function HomeSection() {
</div>
</div>
</div>
+
+ {/* 向下指引箭头 */}
+ <div className="absolute bottom-8 left-1/2 transform -translate-x-1/2
z-20">
+ <div className="group cursor-pointer" onClick={() => {
+ const nextSection =
document.querySelector('section:nth-of-type(2)');
+ nextSection?.scrollIntoView({ behavior: 'smooth' });
+ }}>
+ <div className="relative">
+ {/* 外圈动画环 */}
+ <div className="absolute inset-0 w-12 h-12 rounded-full border-2
border-blue-400/30 dark:border-blue-500/30 animate-ping"></div>
+ <div className="absolute inset-0 w-12 h-12 rounded-full border
border-blue-300/50 dark:border-blue-600/50 animate-pulse"></div>
+
+ {/* 主按钮 */}
+ <div className="relative w-12 h-12 rounded-full bg-white/90
dark:bg-gray-800/90 backdrop-blur-sm border border-gray-200/50
dark:border-gray-700/50 shadow-lg group-hover:shadow-xl transition-all
duration-300 flex items-center justify-center group-hover:scale-110">
+ <ChevronDownIcon className="w-6 h-6 text-blue-600
dark:text-blue-400 group-hover:text-blue-700 dark:group-hover:text-blue-300
transition-colors animate-bounce" />
+ </div>
+
+ {/* 悬停提示 */}
+ <div className="absolute -top-12 left-1/2 transform
-translate-x-1/2 opacity-0 group-hover:opacity-100 transition-opacity
duration-300 bg-gray-900 dark:bg-gray-100 text-white dark:text-gray-900 text-xs
px-3 py-1 rounded-lg whitespace-nowrap">
+ <Translate>Scroll to explore</Translate>
+ <div className="absolute top-full left-1/2 transform
-translate-x-1/2 w-2 h-2 bg-gray-900 dark:bg-gray-100 rotate-45"></div>
+ </div>
+ </div>
+ </div>
+ </div>
</section>
{/* 使用案例区域 - 新增 */}
diff --git a/website/src/css/custom.css b/website/src/css/custom.css
index 0c7517d..d71aa27 100644
--- a/website/src/css/custom.css
+++ b/website/src/css/custom.css
@@ -10,7 +10,7 @@
html[data-theme='dark'] {
--ifm-navbar-background-color: transparent;
--ifm-toc-border-color: #2f2f2f;
- background-color: #172439;
+ background-color: #111827;
}
dd {