From 15aa77fc44b042b1fd16ffc68f67ce990c3da97f Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 9 Feb 2026 15:22:54 +0000 Subject: [PATCH 1/4] Initial plan From 4baa1276cc78895df0dd71a8395c98952e1c87fd Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 9 Feb 2026 15:28:48 +0000 Subject: [PATCH 2/4] Add cosmic pixel art theme to homepage Co-authored-by: JusterZhu <11714536+JusterZhu@users.noreply.github.com> --- .../src/components/HomepageFeatures/index.js | 6 +- .../HomepageFeatures/styles.module.css | 26 ++++- website/src/css/custom.css | 50 ++++++--- website/src/pages/index.module.css | 104 +++++++++++++++++- website/static/img/cosmic-planet.svg | 21 ++++ website/static/img/cosmic-rocket.svg | 21 ++++ website/static/img/cosmic-star.svg | 16 +++ 7 files changed, 221 insertions(+), 23 deletions(-) create mode 100644 website/static/img/cosmic-planet.svg create mode 100644 website/static/img/cosmic-rocket.svg create mode 100644 website/static/img/cosmic-star.svg diff --git a/website/src/components/HomepageFeatures/index.js b/website/src/components/HomepageFeatures/index.js index 04a4743..cc05ee4 100644 --- a/website/src/components/HomepageFeatures/index.js +++ b/website/src/components/HomepageFeatures/index.js @@ -5,7 +5,7 @@ import styles from './styles.module.css'; const FeatureList = [ { title: 'GeneralUpdate', - Svg: require('@site/static/img/upgrade.svg').default, + Svg: require('@site/static/img/cosmic-rocket.svg').default, //description: ( // <> // 帮助你的客户端应用以最快最小的资源的占用完成自动升级! @@ -14,7 +14,7 @@ const FeatureList = [ }, { title: 'GeneralUpdate Tools', - Svg: require('@site/static/img/packet.svg').default, + Svg: require('@site/static/img/cosmic-planet.svg').default, //description: ( // <> // 打包工具帮助您发布更新补丁包文件! @@ -23,7 +23,7 @@ const FeatureList = [ }, { title: 'GeneralUpdate Samples', - Svg: require('@site/static/img/samples.svg').default, + Svg: require('@site/static/img/cosmic-star.svg').default, //description: ( // <> // 快速启动,更快的了解项目如何使用! diff --git a/website/src/components/HomepageFeatures/styles.module.css b/website/src/components/HomepageFeatures/styles.module.css index b248eb2..4605cbb 100644 --- a/website/src/components/HomepageFeatures/styles.module.css +++ b/website/src/components/HomepageFeatures/styles.module.css @@ -1,11 +1,31 @@ .features { display: flex; align-items: center; - padding: 2rem 0; + padding: 4rem 0; width: 100%; + background: linear-gradient(180deg, #f8f9fa 0%, #e9ecef 100%); } .featureSvg { - height: 200px; - width: 200px; + height: 180px; + width: 180px; + filter: drop-shadow(4px 4px 0 rgba(0, 0, 0, 0.2)); + image-rendering: pixelated; + image-rendering: crisp-edges; + transition: transform 0.3s ease; +} + +.featureSvg:hover { + transform: scale(1.1) rotate(5deg); + filter: drop-shadow(6px 6px 0 rgba(0, 0, 0, 0.3)); +} + +/* Pixel art card style */ +.features h3 { + font-family: 'Courier New', monospace; + font-weight: bold; + text-transform: uppercase; + letter-spacing: 1px; + margin-top: 1.5rem; + color: #2c3e50; } diff --git a/website/src/css/custom.css b/website/src/css/custom.css index f724a01..cbf63b9 100644 --- a/website/src/css/custom.css +++ b/website/src/css/custom.css @@ -6,25 +6,45 @@ /* You can override the default Infima variables here. */ :root { - --ifm-color-primary: #000000; /* 黑色 */ - --ifm-color-primary-dark: #000000; - --ifm-color-primary-darker: #000000; - --ifm-color-primary-darkest: #000000; - --ifm-color-primary-light: #333333; /* 更浅的黑色 */ - --ifm-color-primary-lighter: #666666; - --ifm-color-primary-lightest: #999999; + --ifm-color-primary: #2c3e50; + --ifm-color-primary-dark: #243342; + --ifm-color-primary-darker: #20303b; + --ifm-color-primary-darkest: #1a2731; + --ifm-color-primary-light: #34495e; + --ifm-color-primary-lighter: #3d5368; + --ifm-color-primary-lightest: #4a5f7a; --ifm-code-font-size: 95%; --docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.1); } /* For readability concerns, you should choose a lighter palette in dark mode. */ [data-theme='dark'] { - --ifm-color-primary: #ffffff; /* 白色 */ - --ifm-color-primary-dark: #eeeeee; - --ifm-color-primary-darker: #dddddd; - --ifm-color-primary-darkest: #cccccc; - --ifm-color-primary-light: #ffffff; - --ifm-color-primary-lighter: #ffffff; - --ifm-color-primary-lightest: #ffffff; - --docusaurus-highlighted-code-line-bg: rgba(255, 255, 255, 0.3); + --ifm-color-primary: #3498db; + --ifm-color-primary-dark: #2e86c1; + --ifm-color-primary-darker: #2b7db8; + --ifm-color-primary-darkest: #236599; + --ifm-color-primary-light: #5dade2; + --ifm-color-primary-lighter: #6ab6e5; + --ifm-color-primary-lightest: #85c5eb; + --docusaurus-highlighted-code-line-bg: rgba(52, 152, 219, 0.3); + --ifm-background-color: #0a0e27; +} + +/* Pixel art font styling */ +html { + font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', + 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', + sans-serif; + image-rendering: auto; +} + +/* Enhanced dark mode cosmic theme */ +[data-theme='dark'] .navbar { + background-color: #0a0e27; + border-bottom: 2px solid #1a1f3a; +} + +[data-theme='dark'] .footer { + background-color: #0a0e27; + border-top: 2px solid #1a1f3a; } \ No newline at end of file diff --git a/website/src/pages/index.module.css b/website/src/pages/index.module.css index 9f71a5d..da57b3f 100644 --- a/website/src/pages/index.module.css +++ b/website/src/pages/index.module.css @@ -4,15 +4,91 @@ */ .heroBanner { - padding: 4rem 0; + padding: 8rem 0; text-align: center; position: relative; overflow: hidden; + background: linear-gradient(180deg, #0a0e27 0%, #1a1f3a 50%, #0a0e27 100%); + min-height: 450px; +} + +/* Cosmic starfield background */ +.heroBanner::before { + content: ''; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-image: + radial-gradient(2px 2px at 20% 30%, white, transparent), + radial-gradient(2px 2px at 60% 70%, white, transparent), + radial-gradient(1px 1px at 50% 50%, white, transparent), + radial-gradient(1px 1px at 80% 10%, white, transparent), + radial-gradient(2px 2px at 90% 60%, white, transparent), + radial-gradient(1px 1px at 33% 80%, white, transparent), + radial-gradient(1px 1px at 15% 90%, white, transparent); + background-size: 200% 200%; + background-position: 0% 0%; + animation: twinkle 8s ease-in-out infinite; + opacity: 0.6; + pointer-events: none; +} + +@keyframes twinkle { + 0%, 100% { + opacity: 0.6; + background-position: 0% 0%; + } + 50% { + opacity: 0.3; + background-position: 100% 100%; + } +} + +/* Pixel art moon */ +.heroBanner::after { + content: ''; + position: absolute; + top: 40px; + right: 10%; + width: 60px; + height: 60px; + background: #f39c12; + box-shadow: + 0 0 0 4px #f39c12, + 8px 0 0 4px #f39c12, + 16px 0 0 4px #f39c12, + 0 8px 0 4px #f39c12, + 8px 8px 0 4px #f1c40f, + 16px 8px 0 4px #f39c12, + 0 16px 0 4px #f39c12, + 8px 16px 0 4px #f39c12, + 16px 16px 0 4px #f39c12; + opacity: 0.8; + image-rendering: pixelated; + image-rendering: crisp-edges; } @media screen and (max-width: 996px) { .heroBanner { - padding: 2rem; + padding: 4rem 2rem; + min-height: 350px; + } + + .heroBanner::after { + width: 40px; + height: 40px; + box-shadow: + 0 0 0 3px #f39c12, + 6px 0 0 3px #f39c12, + 12px 0 0 3px #f39c12, + 0 6px 0 3px #f39c12, + 6px 6px 0 3px #f1c40f, + 12px 6px 0 3px #f39c12, + 0 12px 0 3px #f39c12, + 6px 12px 0 3px #f39c12, + 12px 12px 0 3px #f39c12; } } @@ -20,4 +96,28 @@ display: flex; align-items: center; justify-content: center; + margin-top: 2rem; +} + +/* Pixel art button style */ +.buttons .button { + font-family: 'Courier New', monospace; + font-weight: bold; + text-transform: uppercase; + letter-spacing: 2px; + border: 4px solid currentColor; + box-shadow: 4px 4px 0 rgba(0, 0, 0, 0.3); + image-rendering: pixelated; + image-rendering: crisp-edges; + transition: transform 0.1s ease; +} + +.buttons .button:hover { + transform: translate(-2px, -2px); + box-shadow: 6px 6px 0 rgba(0, 0, 0, 0.3); +} + +.buttons .button:active { + transform: translate(2px, 2px); + box-shadow: 2px 2px 0 rgba(0, 0, 0, 0.3); } diff --git a/website/static/img/cosmic-planet.svg b/website/static/img/cosmic-planet.svg new file mode 100644 index 0000000..7995150 --- /dev/null +++ b/website/static/img/cosmic-planet.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + diff --git a/website/static/img/cosmic-rocket.svg b/website/static/img/cosmic-rocket.svg new file mode 100644 index 0000000..27b33b2 --- /dev/null +++ b/website/static/img/cosmic-rocket.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + diff --git a/website/static/img/cosmic-star.svg b/website/static/img/cosmic-star.svg new file mode 100644 index 0000000..4de9481 --- /dev/null +++ b/website/static/img/cosmic-star.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + From bbec868a8731088fcd9235463ff7c18775c50ad2 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 9 Feb 2026 15:50:11 +0000 Subject: [PATCH 3/4] Complete redesign: New cosmic pixel art homepage Co-authored-by: JusterZhu <11714536+JusterZhu@users.noreply.github.com> --- website/src/css/custom.css | 92 +++-- website/src/pages/index.js | 119 +++++-- website/src/pages/index.module.css | 523 +++++++++++++++++++++++++---- 3 files changed, 617 insertions(+), 117 deletions(-) diff --git a/website/src/css/custom.css b/website/src/css/custom.css index cbf63b9..ff66fd6 100644 --- a/website/src/css/custom.css +++ b/website/src/css/custom.css @@ -6,19 +6,6 @@ /* You can override the default Infima variables here. */ :root { - --ifm-color-primary: #2c3e50; - --ifm-color-primary-dark: #243342; - --ifm-color-primary-darker: #20303b; - --ifm-color-primary-darkest: #1a2731; - --ifm-color-primary-light: #34495e; - --ifm-color-primary-lighter: #3d5368; - --ifm-color-primary-lightest: #4a5f7a; - --ifm-code-font-size: 95%; - --docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.1); -} - -/* For readability concerns, you should choose a lighter palette in dark mode. */ -[data-theme='dark'] { --ifm-color-primary: #3498db; --ifm-color-primary-dark: #2e86c1; --ifm-color-primary-darker: #2b7db8; @@ -26,25 +13,80 @@ --ifm-color-primary-light: #5dade2; --ifm-color-primary-lighter: #6ab6e5; --ifm-color-primary-lightest: #85c5eb; - --docusaurus-highlighted-code-line-bg: rgba(52, 152, 219, 0.3); - --ifm-background-color: #0a0e27; + --ifm-code-font-size: 95%; + --docusaurus-highlighted-code-line-bg: rgba(52, 152, 219, 0.1); } -/* Pixel art font styling */ -html { - font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', - 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', - sans-serif; - image-rendering: auto; +/* For readability concerns, you should choose a lighter palette in dark mode. */ +[data-theme='dark'] { + --ifm-color-primary: #5dade2; + --ifm-color-primary-dark: #4aa3de; + --ifm-color-primary-darker: #3d9adc; + --ifm-color-primary-darkest: #2585cc; + --ifm-color-primary-light: #70b7e6; + --ifm-color-primary-lighter: #7dbde8; + --ifm-color-primary-lightest: #98caed; + --docusaurus-highlighted-code-line-bg: rgba(93, 173, 226, 0.2); + --ifm-background-color: #0a0420; + --ifm-background-surface-color: #1a0f3e; } /* Enhanced dark mode cosmic theme */ [data-theme='dark'] .navbar { - background-color: #0a0e27; - border-bottom: 2px solid #1a1f3a; + background-color: #0a0420; + border-bottom: 2px solid #1a0f3e; } [data-theme='dark'] .footer { - background-color: #0a0e27; - border-top: 2px solid #1a1f3a; + background-color: #0a0420; + border-top: 2px solid #1a0f3e; +} + +/* Dark mode adjustments for new homepage */ +[data-theme='dark'] .featuresSection { + background: linear-gradient(180deg, #1a0f3e 0%, #0a0420 100%); +} + +[data-theme='dark'] .featureCard { + background: #1a0f3e; + border-color: #5dade2; + box-shadow: 8px 8px 0 rgba(93, 173, 226, 0.2); +} + +[data-theme='dark'] .featureCard:hover { + box-shadow: 12px 12px 0 rgba(93, 173, 226, 0.3); +} + +[data-theme='dark'] .cardTitle { + color: #fff; +} + +[data-theme='dark'] .cardDesc { + color: #a8c5e8; +} + +[data-theme='dark'] .sectionTitle { + color: #fff; +} + +[data-theme='dark'] .techSection { + background: #0a0420; +} + +[data-theme='dark'] .techTitle { + color: #fff; +} + +[data-theme='dark'] .techBadge { + background: #1a0f3e; + box-shadow: 4px 4px 0 rgba(93, 173, 226, 0.2); +} + +[data-theme='dark'] .techBadge:hover { + box-shadow: 6px 6px 0 rgba(93, 173, 226, 0.3); +} + +/* Smooth transitions */ +* { + transition: background-color 0.3s ease, color 0.3s ease, border-color 0.3s ease; } \ No newline at end of file diff --git a/website/src/pages/index.js b/website/src/pages/index.js index ffeec89..e37693f 100644 --- a/website/src/pages/index.js +++ b/website/src/pages/index.js @@ -2,29 +2,111 @@ import clsx from 'clsx'; import Link from '@docusaurus/Link'; import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; import Layout from '@theme/Layout'; -import HomepageFeatures from '@site/src/components/HomepageFeatures'; - import Heading from '@theme/Heading'; import styles from './index.module.css'; -function HomepageHeader() { +function CosmicHero() { const {siteConfig} = useDocusaurusContext(); return ( -
-
- +
+
+
+
+
+
+
+
+
+ {siteConfig.title} -

{siteConfig.tagline}

-
- - Go! +

+ 🚀 跨平台自动更新框架 · 极简 · 高效 · 开源 +

+
+ + 开始探索 + + GitHub + +
+
+
+ ); +} + +function FeatureCard({ icon, title, description, link }) { + return ( + +
{icon}
+

{title}

+

{description}

+
+ + ); +} + +function Features() { + return ( +
+
+
+ + 核心组件 + +
+
+
+ + + +
+
+
+ ); +} + +function TechStack() { + const techs = [ + { name: '.NET', color: '#512bd4' }, + { name: 'WPF', color: '#0078d4' }, + { name: 'Avalonia', color: '#8b5cf6' }, + { name: 'MAUI', color: '#3498db' }, + { name: 'Console', color: '#2ecc71' }, + ]; + + return ( +
+
+ + 支持平台 + +
+ {techs.map((tech, idx) => ( +
+ + {tech.name} +
+ ))}
-
+ ); } @@ -32,12 +114,11 @@ export default function Home() { const {siteConfig} = useDocusaurusContext(); return ( - -
- -
+ title={`${siteConfig.title} - 跨平台自动更新框架`} + description="GeneralUpdate - 轻量级、跨平台、易用的 .NET 自动更新框架"> + + +
); } diff --git a/website/src/pages/index.module.css b/website/src/pages/index.module.css index da57b3f..e1b7348 100644 --- a/website/src/pages/index.module.css +++ b/website/src/pages/index.module.css @@ -1,123 +1,500 @@ /** - * CSS files with the .module.css suffix will be treated as CSS modules - * and scoped locally. + * Cosmic Pixel Art Homepage Styles */ -.heroBanner { - padding: 8rem 0; - text-align: center; +/* ============================================ + COSMIC HERO SECTION + ============================================ */ + +.cosmicHero { position: relative; + min-height: 100vh; + display: flex; + align-items: center; + justify-content: center; overflow: hidden; - background: linear-gradient(180deg, #0a0e27 0%, #1a1f3a 50%, #0a0e27 100%); - min-height: 450px; + background: linear-gradient(180deg, #0a0420 0%, #1a0f3e 50%, #0a0420 100%); } -/* Cosmic starfield background */ -.heroBanner::before { - content: ''; +.cosmicBackground { position: absolute; top: 0; left: 0; width: 100%; height: 100%; - background-image: - radial-gradient(2px 2px at 20% 30%, white, transparent), - radial-gradient(2px 2px at 60% 70%, white, transparent), + overflow: hidden; +} + +/* Animated starfield */ +.stars { + position: absolute; + width: 100%; + height: 100%; + background-image: + radial-gradient(2px 2px at 10% 20%, white, transparent), + radial-gradient(2px 2px at 90% 80%, white, transparent), radial-gradient(1px 1px at 50% 50%, white, transparent), - radial-gradient(1px 1px at 80% 10%, white, transparent), - radial-gradient(2px 2px at 90% 60%, white, transparent), - radial-gradient(1px 1px at 33% 80%, white, transparent), - radial-gradient(1px 1px at 15% 90%, white, transparent); - background-size: 200% 200%; - background-position: 0% 0%; - animation: twinkle 8s ease-in-out infinite; - opacity: 0.6; - pointer-events: none; + radial-gradient(1px 1px at 30% 70%, white, transparent), + radial-gradient(2px 2px at 70% 30%, white, transparent), + radial-gradient(1px 1px at 85% 15%, white, transparent), + radial-gradient(1px 1px at 20% 90%, white, transparent), + radial-gradient(2px 2px at 60% 60%, white, transparent), + radial-gradient(1px 1px at 40% 10%, white, transparent), + radial-gradient(1px 1px at 15% 45%, white, transparent); + background-size: 250% 250%; + animation: twinkle 12s ease-in-out infinite; } @keyframes twinkle { 0%, 100% { - opacity: 0.6; + opacity: 0.5; background-position: 0% 0%; } 50% { - opacity: 0.3; + opacity: 0.8; background-position: 100% 100%; } } -/* Pixel art moon */ -.heroBanner::after { +/* Pixel planets */ +.planets { + position: absolute; + width: 100%; + height: 100%; +} + +.planets::before { + content: ''; + position: absolute; + top: 15%; + right: 15%; + width: 80px; + height: 80px; + background: #f39c12; + box-shadow: + 0 0 0 8px #f39c12, + 8px 0 0 8px #f39c12, + 16px 0 0 8px #f1c40f, + 24px 0 0 8px #f39c12, + 0 8px 0 8px #f39c12, + 8px 8px 0 8px #f1c40f, + 16px 8px 0 8px #f39c12, + 24px 8px 0 8px #f39c12; + animation: float 6s ease-in-out infinite; + opacity: 0.7; +} + +.planets::after { content: ''; position: absolute; - top: 40px; - right: 10%; + bottom: 20%; + left: 10%; width: 60px; height: 60px; - background: #f39c12; - box-shadow: - 0 0 0 4px #f39c12, - 8px 0 0 4px #f39c12, - 16px 0 0 4px #f39c12, - 0 8px 0 4px #f39c12, - 8px 8px 0 4px #f1c40f, - 16px 8px 0 4px #f39c12, - 0 16px 0 4px #f39c12, - 8px 16px 0 4px #f39c12, - 16px 16px 0 4px #f39c12; - opacity: 0.8; - image-rendering: pixelated; - image-rendering: crisp-edges; + background: #9b59b6; + box-shadow: + 0 0 0 6px #9b59b6, + 6px 0 0 6px #8e44ad, + 12px 0 0 6px #9b59b6, + 0 6px 0 6px #8e44ad, + 6px 6px 0 6px #9b59b6, + 12px 6px 0 6px #8e44ad; + animation: float 8s ease-in-out infinite; + animation-delay: 1s; + opacity: 0.6; } -@media screen and (max-width: 996px) { - .heroBanner { - padding: 4rem 2rem; - min-height: 350px; +@keyframes float { + 0%, 100% { + transform: translateY(0px) rotate(0deg); } - - .heroBanner::after { - width: 40px; - height: 40px; - box-shadow: - 0 0 0 3px #f39c12, - 6px 0 0 3px #f39c12, - 12px 0 0 3px #f39c12, - 0 6px 0 3px #f39c12, - 6px 6px 0 3px #f1c40f, - 12px 6px 0 3px #f39c12, - 0 12px 0 3px #f39c12, - 6px 12px 0 3px #f39c12, - 12px 12px 0 3px #f39c12; + 50% { + transform: translateY(-20px) rotate(180deg); + } +} + +/* Hero content */ +.heroContent { + position: relative; + z-index: 10; + text-align: center; + padding: 2rem; + max-width: 900px; +} + +/* Pixel art logo */ +.pixelLogo { + margin: 0 auto 2rem; + width: 120px; + height: 120px; + position: relative; + animation: pulse 3s ease-in-out infinite; +} + +.logoPixel { + width: 100%; + height: 100%; + background: linear-gradient(135deg, #3498db 0%, #2980b9 50%, #1a5f8f 100%); + box-shadow: + 0 0 0 8px rgba(52, 152, 219, 0.5), + 0 0 0 16px rgba(52, 152, 219, 0.3), + 0 0 0 24px rgba(52, 152, 219, 0.1), + inset 8px 8px 16px rgba(0, 0, 0, 0.2), + inset -8px -8px 16px rgba(255, 255, 255, 0.1); + border-radius: 8px; + position: relative; +} + +.logoPixel::before { + content: '⚡'; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + font-size: 48px; + filter: drop-shadow(0 0 10px rgba(255, 255, 255, 0.5)); +} + +@keyframes pulse { + 0%, 100% { + transform: scale(1); + } + 50% { + transform: scale(1.05); } } -.buttons { +/* Title */ +.cosmicTitle { + font-size: 4rem; + font-weight: 900; + color: #fff; + margin: 0 0 1rem; + text-transform: uppercase; + letter-spacing: 4px; + text-shadow: + 0 0 20px rgba(52, 152, 219, 0.5), + 0 0 40px rgba(52, 152, 219, 0.3), + 4px 4px 0 rgba(0, 0, 0, 0.3); + font-family: 'Courier New', monospace; +} + +.cosmicSubtitle { + font-size: 1.3rem; + color: #a8c5e8; + margin-bottom: 3rem; + font-weight: 300; + letter-spacing: 1px; +} + +/* Action buttons */ +.actionButtons { display: flex; - align-items: center; + gap: 1.5rem; justify-content: center; - margin-top: 2rem; + flex-wrap: wrap; } -/* Pixel art button style */ -.buttons .button { +.primaryBtn, +.secondaryBtn { font-family: 'Courier New', monospace; + font-size: 1.1rem; font-weight: bold; + padding: 16px 32px; + border: 4px solid; + text-decoration: none; text-transform: uppercase; letter-spacing: 2px; - border: 4px solid currentColor; - box-shadow: 4px 4px 0 rgba(0, 0, 0, 0.3); - image-rendering: pixelated; - image-rendering: crisp-edges; - transition: transform 0.1s ease; + transition: all 0.2s ease; + position: relative; + display: inline-flex; + align-items: center; + gap: 8px; } -.buttons .button:hover { - transform: translate(-2px, -2px); +.primaryBtn { + background: #3498db; + color: #fff; + border-color: #2980b9; box-shadow: 6px 6px 0 rgba(0, 0, 0, 0.3); } -.buttons .button:active { +.primaryBtn:hover { + background: #2980b9; + transform: translate(-2px, -2px); + box-shadow: 8px 8px 0 rgba(0, 0, 0, 0.3); + color: #fff; +} + +.primaryBtn:active { transform: translate(2px, 2px); box-shadow: 2px 2px 0 rgba(0, 0, 0, 0.3); } + +.secondaryBtn { + background: transparent; + color: #3498db; + border-color: #3498db; + box-shadow: 6px 6px 0 rgba(52, 152, 219, 0.2); +} + +.secondaryBtn:hover { + background: rgba(52, 152, 219, 0.1); + transform: translate(-2px, -2px); + box-shadow: 8px 8px 0 rgba(52, 152, 219, 0.3); + color: #3498db; +} + +.secondaryBtn:active { + transform: translate(2px, 2px); + box-shadow: 2px 2px 0 rgba(52, 152, 219, 0.2); +} + +.btnIcon { + font-size: 1.2rem; + display: inline-block; +} + +/* ============================================ + FEATURES SECTION + ============================================ */ + +.featuresSection { + padding: 6rem 0; + background: linear-gradient(180deg, #f8f9fa 0%, #e9ecef 100%); +} + +.container { + max-width: 1200px; + margin: 0 auto; + padding: 0 2rem; +} + +.sectionHeader { + text-align: center; + margin-bottom: 4rem; +} + +.sectionTitle { + font-size: 2.5rem; + font-weight: 900; + color: #2c3e50; + text-transform: uppercase; + letter-spacing: 3px; + margin-bottom: 1rem; + font-family: 'Courier New', monospace; +} + +.titleUnderline { + width: 100px; + height: 8px; + background: linear-gradient(90deg, #3498db, #9b59b6, #e74c3c); + margin: 0 auto; + box-shadow: 0 4px 0 rgba(0, 0, 0, 0.1); +} + +.featureGrid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); + gap: 2rem; +} + +.featureCard { + background: #fff; + border: 4px solid #2c3e50; + padding: 2.5rem; + text-decoration: none; + color: inherit; + position: relative; + transition: all 0.3s ease; + box-shadow: 8px 8px 0 rgba(0, 0, 0, 0.1); +} + +.featureCard:hover { + transform: translate(-4px, -4px); + box-shadow: 12px 12px 0 rgba(0, 0, 0, 0.15); + border-color: #3498db; +} + +.cardIcon { + font-size: 3.5rem; + margin-bottom: 1.5rem; + filter: drop-shadow(4px 4px 0 rgba(0, 0, 0, 0.1)); +} + +.cardTitle { + font-size: 1.5rem; + font-weight: 900; + color: #2c3e50; + margin-bottom: 1rem; + text-transform: uppercase; + letter-spacing: 1px; + font-family: 'Courier New', monospace; +} + +.cardDesc { + font-size: 1rem; + color: #5a6c7d; + line-height: 1.6; + margin-bottom: 0; +} + +.cardArrow { + position: absolute; + bottom: 1.5rem; + right: 1.5rem; + font-size: 2rem; + color: #3498db; + transition: transform 0.3s ease; +} + +.featureCard:hover .cardArrow { + transform: translateX(8px); +} + +/* ============================================ + TECH STACK SECTION + ============================================ */ + +.techSection { + padding: 4rem 0 6rem; + background: #f8f9fa; +} + +.techTitle { + text-align: center; + font-size: 1.8rem; + font-weight: 900; + color: #2c3e50; + text-transform: uppercase; + letter-spacing: 2px; + margin-bottom: 2.5rem; + font-family: 'Courier New', monospace; +} + +.techGrid { + display: flex; + justify-content: center; + gap: 1.5rem; + flex-wrap: wrap; +} + +.techBadge { + display: inline-flex; + align-items: center; + gap: 8px; + padding: 12px 24px; + background: #fff; + border: 3px solid; + font-family: 'Courier New', monospace; + font-weight: bold; + font-size: 1rem; + text-transform: uppercase; + letter-spacing: 1px; + box-shadow: 4px 4px 0 rgba(0, 0, 0, 0.1); + transition: all 0.2s ease; +} + +.techBadge:hover { + transform: translate(-2px, -2px); + box-shadow: 6px 6px 0 rgba(0, 0, 0, 0.15); +} + +.techDot { + width: 12px; + height: 12px; + border-radius: 50%; + box-shadow: 0 0 8px currentColor; +} + +/* ============================================ + RESPONSIVE DESIGN + ============================================ */ + +@media screen and (max-width: 996px) { + .cosmicHero { + min-height: 80vh; + } + + .cosmicTitle { + font-size: 2.5rem; + letter-spacing: 2px; + } + + .cosmicSubtitle { + font-size: 1.1rem; + } + + .planets::before { + width: 50px; + height: 50px; + box-shadow: + 0 0 0 5px #f39c12, + 5px 0 0 5px #f39c12, + 10px 0 0 5px #f1c40f, + 15px 0 0 5px #f39c12, + 0 5px 0 5px #f39c12, + 5px 5px 0 5px #f1c40f, + 10px 5px 0 5px #f39c12, + 15px 5px 0 5px #f39c12; + } + + .planets::after { + width: 40px; + height: 40px; + box-shadow: + 0 0 0 4px #9b59b6, + 4px 0 0 4px #8e44ad, + 8px 0 0 4px #9b59b6, + 0 4px 0 4px #8e44ad, + 4px 4px 0 4px #9b59b6, + 8px 4px 0 4px #8e44ad; + } + + .pixelLogo { + width: 90px; + height: 90px; + } + + .logoPixel::before { + font-size: 36px; + } + + .actionButtons { + flex-direction: column; + align-items: center; + } + + .primaryBtn, + .secondaryBtn { + width: 100%; + max-width: 300px; + justify-content: center; + } + + .sectionTitle { + font-size: 2rem; + } + + .featureGrid { + grid-template-columns: 1fr; + } +} + +@media screen and (max-width: 576px) { + .cosmicTitle { + font-size: 2rem; + } + + .cosmicSubtitle { + font-size: 1rem; + } + + .featuresSection { + padding: 4rem 0; + } + + .techSection { + padding: 3rem 0 4rem; + } +} From 4eae175cc7f3a10427662a93da6d58b3015e32ce Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 9 Feb 2026 15:52:05 +0000 Subject: [PATCH 4/4] Address code review feedback: improve accessibility and performance Co-authored-by: JusterZhu <11714536+JusterZhu@users.noreply.github.com> --- website/src/css/custom.css | 11 +++++++++-- website/src/pages/index.js | 2 +- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/website/src/css/custom.css b/website/src/css/custom.css index ff66fd6..e4be3bd 100644 --- a/website/src/css/custom.css +++ b/website/src/css/custom.css @@ -86,7 +86,14 @@ box-shadow: 6px 6px 0 rgba(93, 173, 226, 0.3); } -/* Smooth transitions */ -* { +/* Smooth transitions for theme components */ +.cosmicHero, +.cosmicHero *, +.featuresSection, +.featuresSection *, +.techSection, +.techSection *, +.navbar, +.footer { transition: background-color 0.3s ease, color 0.3s ease, border-color 0.3s ease; } \ No newline at end of file diff --git a/website/src/pages/index.js b/website/src/pages/index.js index e37693f..68ced7f 100644 --- a/website/src/pages/index.js +++ b/website/src/pages/index.js @@ -20,7 +20,7 @@ function CosmicHero() { {siteConfig.title} -

+

🚀 跨平台自动更新框架 · 极简 · 高效 · 开源