diff --git a/.gitignore b/.gitignore index 397a0bd..af73f29 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,9 @@ dist/ .dev.vars* !.dev.vars.example !.env.example + +# Windows alternate data stream metadata +*Zone.Identifier + +# Brand SVGs live in public/assets only (avoid duplicating repo-root staging) +/assets/ 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..de9bb85 --- /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..fdba47d --- /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..50d34d0 --- /dev/null +++ b/src/components/BrandLockup.astro @@ -0,0 +1,39 @@ +--- +/** + * 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'; +--- + + + + + diff --git a/src/components/LayoutA.astro b/src/components/LayoutA.astro index 34202b8..286f98c 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 @@ -63,7 +66,7 @@ const { featured } = Astro.props;

git-testkit

Go-first testing helpers for real Git repositories — fixtures, scenarios, snapshots — so CLIs - prove behaviour against actual git instead of brittle mocks. Java and Python interfaces are on + prove behavior against actual git instead of brittle mocks. Java and Python interfaces are on the roadmap per the upstream project.

diff --git a/src/components/LayoutB.astro b/src/components/LayoutB.astro index 2dd5351..993e264 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, @@ -71,7 +74,7 @@ const { featured } = Astro.props;

git-testkit

Go-first testing helpers for real Git repositories — fixtures, scenarios, snapshots — so CLIs - prove behaviour against actual git instead of brittle mocks. Java and Python interfaces are on + prove behavior against actual git instead of brittle mocks. Java and Python interfaces are on the roadmap per the upstream project.

diff --git a/src/components/LayoutC.astro b/src/components/LayoutC.astro index 607506c..18d1d70 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, @@ -71,7 +74,7 @@ const { featured } = Astro.props;

git-testkit

Go-first testing helpers for real Git repositories — fixtures, scenarios, snapshots — so CLIs - prove behaviour against actual git instead of brittle mocks. Java and Python interfaces are on + prove behavior against actual git instead of brittle mocks. Java and Python interfaces are on the roadmap per the upstream project.

diff --git a/src/components/LayoutCurrent.astro b/src/components/LayoutCurrent.astro index 64692d5..c6f0355 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, @@ -79,7 +84,7 @@ const { featured } = Astro.props;

git-testkit

Go-first testing helpers for real Git repositories — fixtures, scenarios, snapshots — so CLIs - prove behaviour against actual git instead of brittle mocks. Java and Python interfaces are on + prove behavior against actual git instead of brittle mocks. Java and Python interfaces are on the roadmap per the upstream project.

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);