From 38456d5610ae136fb9c0ebf9bb709d8f62551717 Mon Sep 17 00:00:00 2001 From: Ben Schellenberger Date: Thu, 16 Apr 2026 19:11:00 -0400 Subject: [PATCH 1/8] Add themed brand lockups and simplify git-rain winget install Serve git-fire and git-rain lockup SVGs from public/assets with light/dark variants tied to data-theme and prefers-color-scheme. Add BrandLockup across layouts and the header. Prefer winget install git-rain with a fallback note. Ignore Windows Zone.Identifier streams. Made-with: Cursor --- .gitignore | 3 + public/assets/git-fire-icon-dark.svg | 14 ++++ public/assets/git-fire-icon.svg | 14 ++++ public/assets/git-fire-lockup-dark.svg | 22 ++++++ public/assets/git-fire-lockup.svg | 22 ++++++ public/assets/git-rain-icon-dark.svg | 54 +++++++++++++++ public/assets/git-rain-icon.svg | 54 +++++++++++++++ public/assets/git-rain-lockup-dark.svg | 67 +++++++++++++++++++ public/assets/git-rain-lockup.svg | 67 +++++++++++++++++++ src/components/BrandLockup.astro | 37 ++++++++++ src/components/LayoutA.astro | 3 + src/components/LayoutB.astro | 3 + src/components/LayoutC.astro | 3 + src/components/LayoutCurrent.astro | 5 ++ src/layouts/BaseLayout.astro | 6 +- src/scripts/install-pickers.ts | 4 +- src/styles/global.css | 93 +++++++++++++++++++++++++- 17 files changed, 466 insertions(+), 5 deletions(-) create mode 100644 public/assets/git-fire-icon-dark.svg create mode 100644 public/assets/git-fire-icon.svg create mode 100644 public/assets/git-fire-lockup-dark.svg create mode 100644 public/assets/git-fire-lockup.svg create mode 100644 public/assets/git-rain-icon-dark.svg create mode 100644 public/assets/git-rain-icon.svg create mode 100644 public/assets/git-rain-lockup-dark.svg create mode 100644 public/assets/git-rain-lockup.svg create mode 100644 src/components/BrandLockup.astro diff --git a/.gitignore b/.gitignore index 397a0bd..89f3626 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,6 @@ dist/ .dev.vars* !.dev.vars.example !.env.example + +# Windows alternate data stream metadata +*Zone.Identifier diff --git a/public/assets/git-fire-icon-dark.svg b/public/assets/git-fire-icon-dark.svg new file mode 100644 index 0000000..691087c --- /dev/null +++ b/public/assets/git-fire-icon-dark.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + diff --git a/public/assets/git-fire-icon.svg b/public/assets/git-fire-icon.svg new file mode 100644 index 0000000..bd4aa94 --- /dev/null +++ b/public/assets/git-fire-icon.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + diff --git a/public/assets/git-fire-lockup-dark.svg b/public/assets/git-fire-lockup-dark.svg new file mode 100644 index 0000000..d5cdd53 --- /dev/null +++ b/public/assets/git-fire-lockup-dark.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + git-fire + diff --git a/public/assets/git-fire-lockup.svg b/public/assets/git-fire-lockup.svg new file mode 100644 index 0000000..5497612 --- /dev/null +++ b/public/assets/git-fire-lockup.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + git-fire + diff --git a/public/assets/git-rain-icon-dark.svg b/public/assets/git-rain-icon-dark.svg new file mode 100644 index 0000000..d58ef7f --- /dev/null +++ b/public/assets/git-rain-icon-dark.svg @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/assets/git-rain-icon.svg b/public/assets/git-rain-icon.svg new file mode 100644 index 0000000..807dc80 --- /dev/null +++ b/public/assets/git-rain-icon.svg @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/assets/git-rain-lockup-dark.svg b/public/assets/git-rain-lockup-dark.svg new file mode 100644 index 0000000..562a6c4 --- /dev/null +++ b/public/assets/git-rain-lockup-dark.svg @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + git-rain + diff --git a/public/assets/git-rain-lockup.svg b/public/assets/git-rain-lockup.svg new file mode 100644 index 0000000..874b7e7 --- /dev/null +++ b/public/assets/git-rain-lockup.svg @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + git-rain + diff --git a/src/components/BrandLockup.astro b/src/components/BrandLockup.astro new file mode 100644 index 0000000..29a2b7a --- /dev/null +++ b/src/components/BrandLockup.astro @@ -0,0 +1,37 @@ +--- +/** + * Wordmark SVGs live in /public/assets — light and dark art swap with theme. + */ +interface Props { + product: 'fire' | 'rain'; + size?: 'sm' | 'md' | 'lg'; + decorative?: boolean; + class?: string; +} + +const { product, size = 'md', decorative = true, class: className } = Astro.props; +const slug = product === 'fire' ? 'git-fire' : 'git-rain'; +const label = decorative ? '' : product === 'fire' ? 'git-fire' : 'git-rain'; +--- + + + {label} + {label} + diff --git a/src/components/LayoutA.astro b/src/components/LayoutA.astro index 34202b8..bf80933 100644 --- a/src/components/LayoutA.astro +++ b/src/components/LayoutA.astro @@ -4,6 +4,7 @@ * Feature bullets live inside the hero cards; no separate fire/rain detail sections. * Card IDs serve as nav anchor targets. */ +import BrandLockup from './BrandLockup.astro'; import InstallPicker from './InstallPicker.astro'; interface Props { featured: 'fire' | 'rain'; } const { featured } = Astro.props; @@ -23,6 +24,7 @@ const { featured } = Astro.props;

+

git-fire

Multi-repo checkpoint: discover, auto-commit optional, push backup branches with dry-run @@ -39,6 +41,7 @@ const { featured } = Astro.props;

+

git-rain

Reverse sync: fetch and fast-forward where safe, skip risky rewrites by default, optional diff --git a/src/components/LayoutB.astro b/src/components/LayoutB.astro index 2dd5351..5207742 100644 --- a/src/components/LayoutB.astro +++ b/src/components/LayoutB.astro @@ -4,6 +4,7 @@ * Slim hero, then each CLI gets a full-width two-column row: * left = name + description + bullets, right = install picker + CTA. */ +import BrandLockup from './BrandLockup.astro'; import InstallPicker from './InstallPicker.astro'; interface Props { featured: 'fire' | 'rain'; } const { featured } = Astro.props; @@ -22,6 +23,7 @@ const { featured } = Astro.props;

+

git-fire

Emergency or everyday: one entrypoint for multi-repository checkpoints with dry-run, registry @@ -45,6 +47,7 @@ const { featured } = Astro.props;

+

git-rain

Pulls the same mental model in the opposite direction: discover local repos, fetch from remotes, diff --git a/src/components/LayoutC.astro b/src/components/LayoutC.astro index 607506c..940b7ad 100644 --- a/src/components/LayoutC.astro +++ b/src/components/LayoutC.astro @@ -4,6 +4,7 @@ * No hero cards. Each project section owns its full story: * big heading, description, features, and install picker all in one band. */ +import BrandLockup from './BrandLockup.astro'; import InstallPicker from './InstallPicker.astro'; interface Props { featured: 'fire' | 'rain'; } const { featured } = Astro.props; @@ -22,6 +23,7 @@ const { featured } = Astro.props;

+

git-fire

Emergency or everyday: one entrypoint for multi-repository checkpoints with dry-run, registry @@ -45,6 +47,7 @@ const { featured } = Astro.props;

+

git-rain

Pulls the same mental model in the opposite direction: discover local repos, fetch from remotes, diff --git a/src/components/LayoutCurrent.astro b/src/components/LayoutCurrent.astro index 64692d5..71fda6a 100644 --- a/src/components/LayoutCurrent.astro +++ b/src/components/LayoutCurrent.astro @@ -1,4 +1,5 @@ --- +import BrandLockup from './BrandLockup.astro'; import InstallPicker from './InstallPicker.astro'; interface Props { featured: 'fire' | 'rain'; } const { featured } = Astro.props; @@ -18,6 +19,7 @@ const { featured } = Astro.props;

+

git-fire

Multi-repo checkpoint: discover, auto-commit optional, push backup branches with dry-run @@ -29,6 +31,7 @@ const { featured } = Astro.props;

+

git-rain

Reverse sync: fetch and fast-forward where safe, skip risky rewrites by default, optional @@ -45,6 +48,7 @@ const { featured } = Astro.props;

+

git-fire

Emergency or everyday: one entrypoint for multi-repository checkpoints with dry-run, registry @@ -60,6 +64,7 @@ const { featured } = Astro.props;

+

git-rain

Pulls the same mental model in the opposite direction: discover local repos, fetch from remotes, diff --git a/src/layouts/BaseLayout.astro b/src/layouts/BaseLayout.astro index 4aad277..da59aef 100644 --- a/src/layouts/BaseLayout.astro +++ b/src/layouts/BaseLayout.astro @@ -1,5 +1,6 @@ --- import '../styles/global.css'; +import BrandLockup from '../components/BrandLockup.astro'; interface Props { title: string; @@ -76,7 +77,10 @@ const canonicalUrl = new URL(Astro.url.pathname, Astro.site);