diff --git a/packages/web/src/assets/lander/screenshot-github.png b/packages/web/src/assets/lander/screenshot-github.png new file mode 100644 index 000000000..fda74e641 Binary files /dev/null and b/packages/web/src/assets/lander/screenshot-github.png differ diff --git a/packages/web/src/assets/lander/screenshot-vscode.png b/packages/web/src/assets/lander/screenshot-vscode.png new file mode 100644 index 000000000..b8966a6b8 Binary files /dev/null and b/packages/web/src/assets/lander/screenshot-vscode.png differ diff --git a/packages/web/src/components/Lander.astro b/packages/web/src/components/Lander.astro index e8ff55605..50bd3cfd2 100644 --- a/packages/web/src/components/Lander.astro +++ b/packages/web/src/components/Lander.astro @@ -5,7 +5,9 @@ import type { Props } from '@astrojs/starlight/props'; import CopyIcon from "../assets/lander/copy.svg"; import CheckIcon from "../assets/lander/check.svg"; -import Screenshot from "../assets/lander/screenshot-splash.png"; +import TuiScreenshot from "../assets/lander/screenshot-splash.png"; +import VscodeScreenshot from "../assets/lander/screenshot-vscode.png"; +import GithubScreenshot from "../assets/lander/screenshot-github.png"; const { data } = Astro.locals.starlightRoute.entry; const { title = data.title, tagline, image, actions = [] } = data.hero || {}; @@ -36,7 +38,7 @@ if (image) { lightImage = image.light; } else { rawHtml = image.html; - } + } } ---
@@ -301,7 +360,7 @@ section.images { border-bottom: 2px solid var(--sl-color-border); height: calc(var(--images-height) / 2); } - + & > div.row2 { display: flex; grid-row: 2; @@ -334,6 +393,16 @@ section.images { justify-content: center; } + a { + display: flex; + flex: 1; + min-height: 0; + align-items: center; + justify-content: center; + width: 100%; + height: 100%; + } + figcaption { letter-spacing: -0.03125rem; text-transform: uppercase; @@ -408,6 +477,140 @@ section.images { } } +section.alternatives { + border-top: 2px solid var(--sl-color-border); + display: grid; + grid-template-columns: 1fr 1fr; + grid-template-rows: 1fr 1fr; + + @media (max-width: 40rem) { + grid-template-columns: 1fr; + grid-template-rows: auto; + } + + & > div { + display: flex; + flex-direction: column; + padding: calc(var(--vertical-padding) / 2) calc(var(--padding) / 2) calc(var(--vertical-padding) / 2 + 0.125rem); + text-align: left; + gap: 0.5rem; + + @media (max-width: 40rem) { + text-align: left; + } + } + + & > div.col1 { + border-bottom: 2px solid var(--sl-color-border); + + @media (max-width: 40rem) { + border-bottom: none; + } + } + + & > div.col2 { + border-left: 2px solid var(--sl-color-border); + border-bottom: 2px solid var(--sl-color-border); + + @media (max-width: 40rem) { + border-left: none; + border-bottom: none; + border-top: 2px solid var(--sl-color-border); + } + } + + & > div.col3 { + @media (max-width: 40rem) { + border-top: 2px solid var(--sl-color-border); + } + } + + & > div.col4 { + border-left: 2px solid var(--sl-color-border); + @media (max-width: 40rem) { + border-left: none; + border-top: 2px solid var(--sl-color-border); + } + } + + h3 { + letter-spacing: -0.03125rem; + text-transform: uppercase; + color: var(--sl-color-text-dimmed); + font-weight: normal; + font-size: 1rem; + flex-shrink: 0; + } + + .command { + all: unset; + display: flex; + align-items: center; + gap: 0.625rem; + justify-content: flex-start; + cursor: pointer; + width: 100%; + + @media (max-width: 40rem) { + justify-content: flex-start; + } + + @media (max-width: 30rem) { + justify-content: center; + } + + code { + color: var(--sl-color-text-secondary); + font-size: 1rem; + + @media (max-width: 24rem) { + font-size: 0.875rem; + } + } + + code .highlight { + color: var(--sl-color-text); + font-weight: 500; + } + + .copy { + line-height: 1; + padding: 0; + + @media (max-width: 40rem) { + display: none; + } + } + + .copy svg { + width: 1rem; + height: 1rem; + vertical-align: middle; + } + + .copy svg:first-child { + color: var(--sl-color-text-dimmed); + } + + .copy svg:last-child { + color: var(--sl-color-text); + display: none; + } + + &.success .copy { + pointer-events: none; + } + + &.success .copy svg:first-child { + display: none; + } + + &.success .copy svg:last-child { + display: inline; + } + } +} + section.footer { border-top: 2px solid var(--sl-color-border); display: flex; @@ -475,13 +678,15 @@ section.footer {