|
| 1 | +--- |
| 2 | +import { deployTargets } from '../data/deploy-targets'; |
| 3 | +
|
| 4 | +// Curated, widely-recognized brands (must have a vendored logo) for the trust |
| 5 | +// strip directly under the hero. Order = recognition, not category. |
| 6 | +const STRIP_SLUGS = [ |
| 7 | + 'docker', 'kubernetes', 'helm', 'railway', 'caprover', 'render', |
| 8 | + 'koyeb', 'netlify', 'fly', 'digitalocean', 'gcp', 'coolify', |
| 9 | +]; |
| 10 | +
|
| 11 | +const bySlug = new Map(deployTargets.map((t) => [t.slug, t])); |
| 12 | +const logos = STRIP_SLUGS |
| 13 | + .map((slug) => bySlug.get(slug)) |
| 14 | + .filter((t) => t?.logo) |
| 15 | + .map((t) => ({ name: t!.name, logo: t!.logo! })); |
| 16 | +
|
| 17 | +const moreCount = Math.max(0, deployTargets.length - logos.length); |
| 18 | +--- |
| 19 | + |
| 20 | +<section aria-label="Deploy anywhere" class="relative border-y border-slate-800/60 bg-slate-950/40"> |
| 21 | + <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-5 md:py-7"> |
| 22 | + <div class="flex flex-col lg:flex-row items-center justify-center gap-4 lg:gap-10"> |
| 23 | + <a href="/deploy" class="group shrink-0 inline-flex items-center gap-2 text-sm md:text-base font-semibold"> |
| 24 | + <span class="gradient-text">Deploy anywhere</span> |
| 25 | + <span class="text-primary-300 group-hover:translate-x-0.5 transition-transform" aria-hidden="true">→</span> |
| 26 | + </a> |
| 27 | + |
| 28 | + <ul class="flex flex-wrap items-center justify-center gap-x-6 md:gap-x-8 gap-y-3" role="list"> |
| 29 | + {logos.map((logo) => ( |
| 30 | + <li> |
| 31 | + <a href="/deploy" aria-label={`Deploy LibreDB Studio — see all options including ${logo.name}`} class="block"> |
| 32 | + <img |
| 33 | + src={logo.logo} |
| 34 | + alt={logo.name} |
| 35 | + title={logo.name} |
| 36 | + width="28" |
| 37 | + height="28" |
| 38 | + loading="lazy" |
| 39 | + class="h-6 md:h-7 w-auto object-contain opacity-60 hover:opacity-100 transition-opacity duration-200" |
| 40 | + /> |
| 41 | + </a> |
| 42 | + </li> |
| 43 | + ))} |
| 44 | + {moreCount > 0 && ( |
| 45 | + <li> |
| 46 | + <a href="/deploy" class="text-xs md:text-sm font-medium text-slate-400 hover:text-white transition-colors whitespace-nowrap"> |
| 47 | + +{moreCount} more |
| 48 | + </a> |
| 49 | + </li> |
| 50 | + )} |
| 51 | + </ul> |
| 52 | + </div> |
| 53 | + </div> |
| 54 | +</section> |
0 commit comments