From 2d81596f2ce08c5f272d95840b62b16a8e5f44f8 Mon Sep 17 00:00:00 2001 From: Nikita Kuprins Date: Sat, 1 Aug 2026 11:45:30 +0300 Subject: [PATCH 1/2] style: redesign homepage hero with brand-colored spreadsheet grid --- website/src/css/custom.css | 2 +- website/src/pages/index.js | 32 +++++++++++++++- website/src/pages/index.module.css | 61 ++++++++++++++++++++++++++++++ 3 files changed, 93 insertions(+), 2 deletions(-) diff --git a/website/src/css/custom.css b/website/src/css/custom.css index 1285023a3..4167f5e34 100644 --- a/website/src/css/custom.css +++ b/website/src/css/custom.css @@ -52,7 +52,7 @@ } .hero { - background: radial-gradient(circle, #00b95f 20%, #69CD37 50%, #14824b 100%); + background: linear-gradient(135deg, rgba(0, 0, 0, 0.45) 0%, rgba(0, 0, 0, 0) 100%) #14824b; } .header-github-link::before { diff --git a/website/src/pages/index.js b/website/src/pages/index.js index cf1104f89..b96663189 100644 --- a/website/src/pages/index.js +++ b/website/src/pages/index.js @@ -27,11 +27,41 @@ import Translate from '@docusaurus/Translate'; import Heading from '@theme/Heading'; import styles from './index.module.css'; +const GRID_SIZE = 48; +const COLUMN_COUNT = 50; +const ROW_COUNT = 14; + +function columnLetter(index) { + let n = index + 1; + let label = ''; + while (n > 0) { + const remainder = (n - 1) % 26; + label = String.fromCharCode(65 + remainder) + label; + n = Math.floor((n - 1) / 26); + } + return label; +} + function HomepageHeader() { const {siteConfig} = useDocusaurusContext(); return (
-
+
diff --git a/website/src/pages/index.module.css b/website/src/pages/index.module.css index 7f38c8ccb..d51776de2 100644 --- a/website/src/pages/index.module.css +++ b/website/src/pages/index.module.css @@ -113,6 +113,37 @@ z-index: 2; } +.heroDemo { + margin-top: 2.5rem; +} + +@media screen and (min-width: 997px) { + .heroBanner { + padding: 4.5rem 0; + } + + /* The demo is the densest thing on the page, so the hero opts out of the + 1140px content width the rest of the page uses and gives it room. */ + .heroContent { + --ifm-container-width: 1280px; + --ifm-container-width-xl: 1280px; + + display: grid; + grid-template-columns: minmax(0, 4.5fr) minmax(0, 7.5fr); + gap: 3rem; + align-items: center; + text-align: left; + } + + .heroCopy .buttons { + justify-content: flex-start; + } + + .heroDemo { + margin-top: 0; + } +} + @media screen and (max-width: 996px) { .colLabels, .rowLabels {