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

davidzollo pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/seatunnel-website.git


The following commit(s) were added to refs/heads/main by this push:
     new 57a3d3ed42c8 [Docs] Refine docs contrast and homepage motion details 
(#461)
57a3d3ed42c8 is described below

commit 57a3d3ed42c8f2a2ab7ff3824fa3929e0ed9484d
Author: Daniel <[email protected]>
AuthorDate: Tue Jun 16 18:29:39 2026 +0800

    [Docs] Refine docs contrast and homepage motion details (#461)
    
    Co-authored-by: Daniel <[email protected]>
---
 src/css/custom.css        | 102 ++++++++++++++++++++++++++++-------------
 src/pages/home/index.jsx  | 113 +++++++++++++++++++---------------------------
 src/pages/home/index.less |  12 +++--
 src/theme/Layout/index.js |  20 +++++---
 4 files changed, 138 insertions(+), 109 deletions(-)

diff --git a/src/css/custom.css b/src/css/custom.css
index 3972086a62da..0ed63cb2e07f 100644
--- a/src/css/custom.css
+++ b/src/css/custom.css
@@ -34,13 +34,19 @@ html[data-theme='dark'] {
   --ifm-color-primary-light: #74c3e7;
   --ifm-color-primary-lighter: #84cbea;
   --ifm-color-primary-lightest: #a7dbf1;
+  --ifm-font-color-base: #dde8f7;
+  --ifm-font-color-secondary: #c9d6e7;
+  --ifm-heading-color: #f8fbff;
+  --ifm-menu-color: #d7e3f2;
+  --ifm-menu-color-active: #f8fbff;
+  --ifm-toc-link-color: #d7e3f2;
   --st-shell-bg: #060a15;
   --st-shell-surface: rgba(10, 17, 34, 0.86);
   --st-shell-surface-strong: rgba(10, 17, 34, 0.98);
   --st-shell-border: rgba(255, 255, 255, 0.08);
   --st-shell-shadow: 0 24px 56px rgba(0, 0, 0, 0.34);
-  --st-shell-text: #8ba5c5;
-  --st-shell-text-strong: #eef4ff;
+  --st-shell-text: #d7e3f2;
+  --st-shell-text-strong: #f8fbff;
   --st-shell-footer-bg: #0a1122;
 }
 
@@ -258,6 +264,33 @@ html[data-theme='dark'] .card {
   color: var(--ifm-color-primary);
 }
 
+html[data-theme='dark'] .menu__link--active:not(.menu__link--sublist),
+html[data-theme='dark'] .table-of-contents__link--active {
+  color: var(--ifm-heading-color);
+}
+
+html[data-theme='dark'] .theme-doc-markdown,
+html[data-theme='dark'] .theme-doc-markdown p,
+html[data-theme='dark'] .theme-doc-markdown li,
+html[data-theme='dark'] .theme-doc-markdown td,
+html[data-theme='dark'] .theme-doc-markdown th,
+html[data-theme='dark'] .theme-doc-markdown blockquote,
+html[data-theme='dark'] .menu__link,
+html[data-theme='dark'] .table-of-contents__link {
+  color: var(--ifm-font-color-base);
+}
+
+html[data-theme='dark'] .theme-doc-markdown h1,
+html[data-theme='dark'] .theme-doc-markdown h2,
+html[data-theme='dark'] .theme-doc-markdown h3,
+html[data-theme='dark'] .theme-doc-markdown h4,
+html[data-theme='dark'] .theme-doc-markdown h5,
+html[data-theme='dark'] .theme-doc-markdown h6,
+html[data-theme='dark'] .breadcrumbs__link,
+html[data-theme='dark'] .pagination-nav__label {
+  color: var(--ifm-heading-color);
+}
+
 .st-global-ask-ai {
   position: fixed;
   right: 2rem;
@@ -279,47 +312,47 @@ html[data-theme='dark'] .card {
   position: relative;
   display: inline-flex;
   align-items: center;
-  justify-content: center;
-  width: 78px;
-  height: 92px;
-  padding: 0;
-  border: 1px solid rgba(155, 206, 245, 0.95);
-  border-radius: 28px;
-  background: linear-gradient(180deg, rgba(252, 254, 255, 0.98) 0%, rgba(238, 
247, 255, 0.98) 100%);
-  color: #0f172a;
+  gap: 8px;
+  padding: 0.76rem 1.55rem;
+  border: 1px solid rgba(255, 255, 255, 0.16);
+  border-radius: 999px;
+  background: linear-gradient(135deg, #7eb8ff 0%, #6776ff 48%, #5847ff 100%);
+  color: #fff;
+  white-space: nowrap;
   overflow: hidden;
-  box-shadow: 0 18px 42px rgba(132, 181, 226, 0.22), 0 2px 10px rgba(15, 23, 
42, 0.08);
-  transition: transform 0.2s cubic-bezier(0.23, 1, 0.32, 1), box-shadow 0.2s, 
border-color 0.2s, background 0.2s;
+  box-shadow: 0 14px 34px rgba(74, 87, 255, 0.38), 0 2px 8px rgba(0, 0, 0, 
0.3);
+  transition: transform 0.2s cubic-bezier(0.23, 1, 0.32, 1), box-shadow 0.2s, 
border-color 0.2s;
 }
 
 .st-global-ask-ai-button::before {
   content: '';
   position: absolute;
-  inset: 7px;
+  inset: 1px;
   border-radius: inherit;
-  border: 1px solid rgba(190, 224, 250, 0.7);
-  background: radial-gradient(circle at 50% 28%, rgba(255, 255, 255, 0.96), 
rgba(255, 255, 255, 0) 68%);
+  background: linear-gradient(180deg, rgba(255, 255, 255, 0.18), rgba(255, 
255, 255, 0.03) 52%, transparent);
   pointer-events: none;
 }
 
 .st-global-ask-ai-button svg {
-  width: 34px;
-  height: 34px;
-  aspect-ratio: 1 / 1;
+  width: 17px;
+  height: 17px;
   flex-shrink: 0;
   position: relative;
   z-index: 1;
 }
 
 .st-global-ask-ai-button span {
-  display: none;
+  font-size: 0.88rem;
+  font-weight: 700;
+  letter-spacing: 0;
+  position: relative;
+  z-index: 1;
 }
 
 .st-global-ask-ai:hover .st-global-ask-ai-button {
-  transform: translateY(-3px);
-  border-color: rgba(121, 188, 237, 0.98);
-  background: linear-gradient(180deg, rgba(255, 255, 255, 0.99) 0%, rgba(232, 
244, 255, 0.98) 100%);
-  box-shadow: 0 22px 48px rgba(132, 181, 226, 0.28), 0 2px 10px rgba(15, 23, 
42, 0.1);
+  transform: translateY(-3px) scale(1.04);
+  border-color: rgba(255, 255, 255, 0.22);
+  box-shadow: 0 18px 42px rgba(74, 87, 255, 0.48), 0 2px 8px rgba(0, 0, 0, 
0.3);
 }
 
 .st-global-ask-ai:focus-visible {
@@ -327,12 +360,20 @@ html[data-theme='dark'] .card {
 }
 
 .st-global-ask-ai:focus-visible .st-global-ask-ai-button {
-  border-color: rgba(121, 188, 237, 0.98);
-  box-shadow: 0 0 0 4px rgba(154, 213, 249, 0.24), 0 22px 48px rgba(132, 181, 
226, 0.28), 0 2px 10px rgba(15, 23, 42, 0.1);
+  border-color: rgba(255, 255, 255, 0.22);
+  box-shadow: 0 0 0 4px rgba(126, 184, 255, 0.22), 0 18px 42px rgba(74, 87, 
255, 0.48), 0 2px 8px rgba(0, 0, 0, 0.3);
 }
 
 .st-global-ask-ai-dot {
-  display: none;
+  position: absolute;
+  top: -2px;
+  right: -2px;
+  width: 10px;
+  height: 10px;
+  border-radius: 50%;
+  background: #00d79c;
+  box-shadow: 0 0 0 0 rgba(0, 215, 156, 0.55);
+  animation: st-home-pulse 2s ease infinite;
 }
 
 @media (max-width: 996px) {
@@ -342,20 +383,17 @@ html[data-theme='dark'] .card {
   }
 
   .st-global-ask-ai-button {
-    width: 70px;
-    height: 82px;
+    padding: 0.72rem 1.2rem;
   }
 
   .st-global-ask-ai-button span {
-    display: none;
+    font-size: 0.84rem;
   }
 }
 
 @media (max-width: 640px) {
   .st-global-ask-ai-button {
-    width: 64px;
-    height: 76px;
-    border-radius: 24px;
+    padding: 0.7rem 1rem;
   }
 }
 
diff --git a/src/pages/home/index.jsx b/src/pages/home/index.jsx
index 826e4d0eac7d..75e69c546176 100644
--- a/src/pages/home/index.jsx
+++ b/src/pages/home/index.jsx
@@ -26,6 +26,8 @@ const HERO_SINKS = [
     {name: 'Apache Paimon', colorClass: 'pink'},
 ];
 
+// Keep the marquee aligned with connectors and integrations that already have
+// public support pages in the current SeaTunnel documentation set.
 const CONNECTOR_MARQUEE_ITEMS = [
     'MySQL',
     'PostgreSQL',
@@ -33,91 +35,67 @@ const CONNECTOR_MARQUEE_ITEMS = [
     'SQL Server',
     'TiDB',
     'MariaDB',
-    'CockroachDB',
-    'SQLite',
     'MongoDB',
     'DynamoDB',
     'Cassandra',
-    'ScyllaDB',
     'HBase',
-    'ArangoDB',
     'Neo4j',
-    'Couchbase',
+    'DB2',
+    'Greenplum',
+    'OceanBase',
     'Apache Kafka',
     'Apache Pulsar',
     'RabbitMQ',
     'RocketMQ',
     'ActiveMQ',
-    'NATS',
     'AWS SQS',
-    'Azure Event Hub',
     'Elasticsearch',
-    'OpenSearch',
-    'Solr',
-    'Meilisearch',
+    'Apache Druid',
+    'Typesense',
     'ClickHouse',
     'Apache Doris',
     'StarRocks',
-    'Apache Druid',
-    'Apache Pinot',
-    'Firebolt',
+    'Snowflake',
+    'Cloudberry',
+    'Amazon Redshift',
     'Amazon S3',
-    'Google GCS',
-    'Azure Blob',
     'HDFS',
-    'MinIO',
     'Alibaba OSS',
+    'LocalFile',
     'Apache Iceberg',
     'Apache Hudi',
     'Delta Lake',
     'Apache Paimon',
     'Apache Kudu',
     'Apache Hive',
-    'Snowflake',
-    'BigQuery',
-    'Amazon Redshift',
-    'Databricks',
-    'SAP HANA',
     'InfluxDB',
-    'TimescaleDB',
-    'QuestDB',
     'Apache IoTDB',
-    'OpenTSDB',
+    'TDengine',
     'Redis',
-    'Memcached',
     'Aerospike',
     'FTP',
     'SFTP',
-    'HTTP/REST',
+    'HTTP',
     'GraphQL',
-    'LocalFile',
-    'Excel',
-    'CSV',
-    'JSON',
-    'Parquet',
-    'ORC',
-    'Avro',
-    'Protobuf',
+    'Google Sheets',
+    'Google Firestore',
     'Slack',
     'DingTalk',
     'Feishu',
     'Email',
     'MaxCompute',
     'TableStore',
-    'SelectDB',
+    'SelectDB Cloud',
     'Milvus',
     'Qdrant',
     'Lance',
-    'MQTT',
-    'Greenplum',
-    'Teradata',
-    'Sybase',
-    'DB2',
-    'Informix',
-    'Google Firestore',
-    'Google Sheets',
     'Apache Fluss',
     'HugeGraph',
+    'Prometheus',
+    'SLS',
+    'Sentry',
+    'SensorsData',
+    'Web3j',
 ];
 
 const HOME_COPY = {
@@ -200,13 +178,13 @@ const HOME_COPY = {
                         title: 'Data Lake',
                         tag: 'Object Storage',
                         dotClass: 'orange',
-                        chips: ['Amazon S3', 'Google GCS', 'HDFS', 'MinIO'],
+                        chips: ['Amazon S3', 'Alibaba OSS', 'HDFS', 
'LocalFile'],
                     },
                     target: {
                         title: 'AI & Analytics',
                         tag: 'Vector / LLM',
                         dotClass: 'purple',
-                        chips: ['Milvus', 'Qdrant', 'BigQuery', 
'Elasticsearch'],
+                        chips: ['Milvus', 'Qdrant', 'Elasticsearch', 
'Typesense'],
                     },
                 },
             ],
@@ -274,8 +252,8 @@ const HOME_COPY = {
                         {name: 'Apache Pulsar', colorClass: 'blue'},
                         {name: 'RabbitMQ', colorClass: 'orange'},
                         {name: 'RocketMQ', colorClass: 'red'},
-                        {name: 'AWS SQS / Kinesis', colorClass: 'indigo'},
-                        {name: 'NATS / MQTT', colorClass: 'green'},
+                        {name: 'AWS SQS', colorClass: 'indigo'},
+                        {name: 'ActiveMQ', colorClass: 'green'},
                     ],
                 },
                 {
@@ -285,23 +263,23 @@ const HOME_COPY = {
                         {name: 'Apache Doris', colorClass: 'blue'},
                         {name: 'StarRocks', colorClass: 'indigo'},
                         {name: 'Snowflake', colorClass: 'sky'},
-                        {name: 'BigQuery', colorClass: 'blue'},
-                        {name: 'Databricks', colorClass: 'purple'},
+                        {name: 'Amazon Redshift', colorClass: 'blue'},
+                        {name: 'Cloudberry', colorClass: 'purple'},
                     ],
                 },
                 {
                     label: 'Data Lakes & Storage',
                     items: [
                         {name: 'Amazon S3 / Hudi', colorClass: 'orange'},
-                        {name: 'Google GCS', colorClass: 'blue'},
-                        {name: 'Azure Blob Storage', colorClass: 'sky'},
+                        {name: 'Alibaba OSS', colorClass: 'blue'},
+                        {name: 'HDFS / LocalFile', colorClass: 'sky'},
                         {name: 'Apache Iceberg', colorClass: 'green'},
                         {name: 'Delta Lake', colorClass: 'orange'},
                         {name: 'Apache Paimon', colorClass: 'green'},
                     ],
                 },
             ],
-            more: 'Also: MongoDB / Redis / Elasticsearch / Neo4j / Cassandra / 
HBase / Druid / Pinot / IoTDB / InfluxDB / DynamoDB / Milvus / Qdrant ...',
+            more: 'Also: MongoDB / Redis / Elasticsearch / Neo4j / Cassandra / 
HBase / Druid / HugeGraph / IoTDB / InfluxDB / DynamoDB / Milvus / Qdrant ...',
         },
         flow: {
             eyebrow: 'How it works',
@@ -419,7 +397,7 @@ const HOME_COPY = {
         ],
         architecture: {
             eyebrow: '架构',
-            titleLead: '不只是 ETL',
+            titleLead: '不是 ETL',
             titleAccent: '而是 EtLT',
             lead: 'SeaTunnel 负责抽取、轻量转换与装载,把重量级的下游转换保留给仓库或湖仓,让数据链路更清晰也更稳定。',
             headers: {
@@ -461,13 +439,13 @@ const HOME_COPY = {
                         title: '数据湖',
                         tag: 'Object Storage',
                         dotClass: 'orange',
-                        chips: ['Amazon S3', 'Google GCS', 'HDFS', 'MinIO'],
+                        chips: ['Amazon S3', 'Alibaba OSS', 'HDFS', 
'LocalFile'],
                     },
                     target: {
                         title: 'AI 与分析',
                         tag: 'Vector / LLM',
                         dotClass: 'purple',
-                        chips: ['Milvus', 'Qdrant', 'BigQuery', 
'Elasticsearch'],
+                        chips: ['Milvus', 'Qdrant', 'Elasticsearch', 
'Typesense'],
                     },
                 },
             ],
@@ -535,8 +513,8 @@ const HOME_COPY = {
                         {name: 'Apache Pulsar', colorClass: 'blue'},
                         {name: 'RabbitMQ', colorClass: 'orange'},
                         {name: 'RocketMQ', colorClass: 'red'},
-                        {name: 'AWS SQS / Kinesis', colorClass: 'indigo'},
-                        {name: 'NATS / MQTT', colorClass: 'green'},
+                        {name: 'AWS SQS', colorClass: 'indigo'},
+                        {name: 'ActiveMQ', colorClass: 'green'},
                     ],
                 },
                 {
@@ -546,23 +524,23 @@ const HOME_COPY = {
                         {name: 'Apache Doris', colorClass: 'blue'},
                         {name: 'StarRocks', colorClass: 'indigo'},
                         {name: 'Snowflake', colorClass: 'sky'},
-                        {name: 'BigQuery', colorClass: 'blue'},
-                        {name: 'Databricks', colorClass: 'purple'},
+                        {name: 'Amazon Redshift', colorClass: 'blue'},
+                        {name: 'Cloudberry', colorClass: 'purple'},
                     ],
                 },
                 {
                     label: '数据湖与存储',
                     items: [
                         {name: 'Amazon S3 / Hudi', colorClass: 'orange'},
-                        {name: 'Google GCS', colorClass: 'blue'},
-                        {name: 'Azure Blob Storage', colorClass: 'sky'},
+                        {name: 'Alibaba OSS', colorClass: 'blue'},
+                        {name: 'HDFS / LocalFile', colorClass: 'sky'},
                         {name: 'Apache Iceberg', colorClass: 'green'},
                         {name: 'Delta Lake', colorClass: 'orange'},
                         {name: 'Apache Paimon', colorClass: 'green'},
                     ],
                 },
             ],
-            more: '还包括:MongoDB / Redis / Elasticsearch / Neo4j / Cassandra / 
HBase / Druid / Pinot / IoTDB / InfluxDB / DynamoDB / Milvus / Qdrant ...',
+            more: '还包括:MongoDB / Redis / Elasticsearch / Neo4j / Cassandra / 
HBase / Druid / HugeGraph / IoTDB / InfluxDB / DynamoDB / Milvus / Qdrant ...',
         },
         flow: {
             eyebrow: '工作方式',
@@ -937,7 +915,8 @@ export default function Home() {
                 const dash = 10;
                 const gap = 8;
                 const period = dash + gap;
-                const offset = -(frame * 0.6) % period;
+                // Keep the divider motion readable instead of turning it into 
a noisy scan line.
+                const offset = -(frame * 0.26) % period;
                 const gradient = context.createLinearGradient(0, 0, width, 0);
 
                 gradient.addColorStop(0, 'rgba(66,184,236,0)');
@@ -960,11 +939,11 @@ export default function Home() {
 
                 const pulseCount = 5;
                 for (let index = 0; index < pulseCount; index += 1) {
-                    const phase = ((frame / 240) + (index / pulseCount)) % 1;
+                    const phase = ((frame / 380) + (index / pulseCount)) % 1;
                     const pulseX = phase * width;
                     const hueRatio = width > 0 ? (pulseX / width) : 0;
                     const hue = 197 + (hueRatio * 130);
-                    const radius = 11 + (Math.sin((frame * 0.04) + index) * 2);
+                    const radius = 11 + (Math.sin((frame * 0.022) + index) * 
2);
                     const pulseGradient = context.createRadialGradient(pulseX, 
centerY, 0, pulseX, centerY, radius * 2.2);
                     pulseGradient.addColorStop(0, `hsla(${hue},90%,78%,1)`);
                     pulseGradient.addColorStop(0.35, 
`hsla(${hue},85%,68%,.55)`);
@@ -1275,11 +1254,11 @@ export default function Home() {
                     <div className="st-home-feature-grid">
                         <article className="st-home-feature-card 
st-home-feature-card-wide st-home-rv" onMouseMove={handleFeatureGlow}>
                             <div className="st-home-feature-accent"></div>
-                            <div>
+                            <div className="st-home-feature-copy 
st-home-feature-copy-wide">
+                                <div 
className="st-home-feature-number">{content.features.schema.number}</div>
                                 <div className={`st-home-feature-icon 
st-home-feature-icon-${content.features.schema.accent}`}>
                                     <FeatureIcon 
icon={content.features.schema.icon} />
                                 </div>
-                                <div 
className="st-home-feature-number">{content.features.schema.number}</div>
                                 <h3 className="st-home-feature-title 
st-home-feature-title-large">{content.features.schema.title}</h3>
                                 <p className="st-home-feature-description 
st-home-feature-description-large">{content.features.schema.description}</p>
                             </div>
diff --git a/src/pages/home/index.less b/src/pages/home/index.less
index 90e1f9e86937..2fbe63929559 100644
--- a/src/pages/home/index.less
+++ b/src/pages/home/index.less
@@ -965,7 +965,7 @@ html[data-theme='light'] .st-home {
 
 .st-home-architecture-engine-t-small {
   font-size: 0.6em;
-  color: rgba(181, 230, 255, 0.88);
+  color: #42b8ec;
   font-weight: 700;
   text-shadow: 0 0 10px rgba(93, 184, 226, 0.18);
   vertical-align: middle;
@@ -1113,6 +1113,10 @@ html[data-theme='light'] .st-home {
   align-items: center;
 }
 
+.st-home-feature-copy-wide {
+  align-self: start;
+}
+
 .st-home-feature-accent {
   position: absolute;
   top: 0;
@@ -1129,7 +1133,7 @@ html[data-theme='light'] .st-home {
 }
 
 .st-home-feature-number {
-  margin-bottom: 1.25rem;
+  margin-bottom: 0.7rem;
   color: var(--t3);
   font-family: var(--ifm-font-family-monospace);
   font-size: 0.68rem;
@@ -1166,7 +1170,7 @@ html[data-theme='light'] .st-home {
 .st-home-feature-icon {
   width: 44px;
   height: 44px;
-  margin-bottom: 1.25rem;
+  margin-bottom: 1rem;
   display: inline-flex;
   align-items: center;
   justify-content: center;
@@ -1285,7 +1289,7 @@ html[data-theme='light'] .st-home {
   gap: 0.45rem;
   width: max-content;
   will-change: transform;
-  animation: st-home-marquee 72s linear infinite;
+  animation: st-home-marquee 108s linear infinite;
 }
 
 .st-home-marquee:hover .st-home-marquee-track,
diff --git a/src/theme/Layout/index.js b/src/theme/Layout/index.js
index b3e42fb40969..be32045247c5 100644
--- a/src/theme/Layout/index.js
+++ b/src/theme/Layout/index.js
@@ -144,14 +144,20 @@ function KapaWidgetOverrides() {
   return null;
 }
 
-function AskAiSparkIcon() {
+function MessageIcon() {
   return (
-    <svg viewBox="0 0 32 32" fill="none" aria-hidden="true">
-      <circle cx="16" cy="16" r="4.25" fill="currentColor" />
+    <svg viewBox="0 0 20 20" fill="none" aria-hidden="true">
       <path
-        d="M16 4.5V8M16 24v3.5M27.5 16H24M8 16H4.5M24.132 7.868l-2.475 
2.475M10.343 21.657l-2.475 2.475M24.132 24.132l-2.475-2.475M10.343 10.343 7.868 
7.868"
+        d="M5.833 14.167 2.5 17.5V4.167C2.5 3.246 3.246 2.5 4.167 
2.5h11.666c.921 0 1.667.746 1.667 1.667v8.333c0 .921-.746 1.667-1.667 
1.667H5.833Z"
         stroke="currentColor"
-        strokeWidth="2.4"
+        strokeWidth="1.7"
+        strokeLinecap="round"
+        strokeLinejoin="round"
+      />
+      <path
+        d="M6.667 7.083h6.666M6.667 10.417h4.166"
+        stroke="currentColor"
+        strokeWidth="1.7"
         strokeLinecap="round"
       />
     </svg>
@@ -162,8 +168,10 @@ function GlobalAskAi() {
   return (
     <button id={ASK_AI_TRIGGER_ID} type="button" className="st-global-ask-ai" 
aria-label="Ask AI" title="Ask AI">
       <span className="st-global-ask-ai-button">
-        <AskAiSparkIcon />
+        <MessageIcon />
+        <span>Ask AI</span>
       </span>
+      <span className="st-global-ask-ai-dot" aria-hidden="true"></span>
     </button>
   );
 }

Reply via email to