mirror of
https://github.com/Such-Software/such.software.git
synced 2026-10-19 05:48:33 +02:00
Rebrand Wownero Moon Launch → Such Moon Launch
Visible-name rebrand for the game ahead of Play Store + App Store launch. The Wownero theme stays in the game itself; this is purely about the product name. - Rename slug: /products/wownero-moon-launch → /products/such-moon-launch - Rename blog post file + flip from draft → published with rewritten origin story (first game ever → Tabby Labs test app → full rebuild with tilt-to-steer controls + 11 levels) - New "The Story" section on the product page - StoreButtons: accept null href to render disabled "Coming Soon" buttons; add SuchMoonLaunchStoreButtons preset (Google + Apple null pending review, web link present, itch removed — no itch page exists) - Add Such Moon Launch entry to /apps with coming-soon store buttons - Bump privacy + terms last-updated dates to May 18, 2026 - Theme color: orange → amber to match the new brand palette - Sweep all remaining "Wownero Moon Launch" / "wownero-moon-launch" references in product listing, sitemap, top-level privacy index, and website-relaunch blog post
This commit is contained in:
@@ -19,6 +19,19 @@ export const metadata: Metadata = {
|
||||
};
|
||||
|
||||
const apps = [
|
||||
{
|
||||
name: "Such Moon Launch",
|
||||
tagline: "Vry rocket. Much landing. Wow!",
|
||||
icon: "/images/products/such-moon-launch.png",
|
||||
color: "text-amber-600 dark:text-amber-400",
|
||||
borderColor: "border-amber-500/20",
|
||||
href: "/products/such-moon-launch",
|
||||
links: [
|
||||
// null = render disabled "Coming Soon" button; flip to real URLs once live.
|
||||
{ platform: "google" as const, href: null },
|
||||
{ platform: "apple" as const, href: null },
|
||||
],
|
||||
},
|
||||
{
|
||||
name: "Vegan IQ",
|
||||
tagline: "Plant-based trivia backed by real data",
|
||||
|
||||
@@ -37,7 +37,7 @@ export default function PrivacyPage() {
|
||||
<li><Link href="/products/vegan-iq/privacy" className="text-blue-600 dark:text-blue-400 hover:underline">Vegan IQ Privacy Policy</Link></li>
|
||||
<li><Link href="/products/bauhaus-echo/privacy" className="text-blue-600 dark:text-blue-400 hover:underline">Bauhaus Echo Privacy Policy</Link></li>
|
||||
<li><Link href="/products/suchoice/privacy" className="text-blue-600 dark:text-blue-400 hover:underline">Suchoice Privacy Policy</Link></li>
|
||||
<li><Link href="/products/wownero-moon-launch/privacy" className="text-blue-600 dark:text-blue-400 hover:underline">Wownero Moon Launch Privacy Policy</Link></li>
|
||||
<li><Link href="/products/such-moon-launch/privacy" className="text-blue-600 dark:text-blue-400 hover:underline">Such Moon Launch Privacy Policy</Link></li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ import type { Metadata } from "next";
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: "Products | Such Software",
|
||||
description: "Tools and applications built by Such Software. Neroswap, Webshops, Custom Websites, Smirk Wallet, Bauhaus Echo, Suchoice, Vegan IQ, and Wownero Moon Launch.",
|
||||
description: "Tools and applications built by Such Software. Neroswap, Webshops, Custom Websites, Smirk Wallet, Bauhaus Echo, Suchoice, Vegan IQ, and Such Moon Launch.",
|
||||
alternates: { canonical: "/products" },
|
||||
openGraph: {
|
||||
title: "Products | Such Software",
|
||||
@@ -68,10 +68,10 @@ const products = [
|
||||
icon: "/images/products/vegan-iq.png",
|
||||
},
|
||||
{
|
||||
slug: "wownero-moon-launch",
|
||||
title: "Wownero Moon Launch",
|
||||
description: "Crypto-themed space landing game. 11 levels, 4 weapons, endless mode. Android, iOS, Web, Desktop.",
|
||||
color: "orange",
|
||||
slug: "such-moon-launch",
|
||||
title: "Such Moon Launch",
|
||||
description: "Vry rocket. Much landing. Wow! Wownero-themed pixel rocket arcade. 11 levels, 4 weapons, tilt-to-steer, endless mode. Android, iOS, Web, Desktop.",
|
||||
color: "amber",
|
||||
icon: "/images/products/such-moon-launch.png",
|
||||
},
|
||||
];
|
||||
|
||||
+51
-39
@@ -1,17 +1,17 @@
|
||||
import { Header } from "@/components/layout/header";
|
||||
import { MobileNav } from "@/components/layout/mobile-nav";
|
||||
import { Card } from "@repo/ui/components/card";
|
||||
import { Button } from "@repo/ui/components/button";
|
||||
import { SuchMoonLaunchStoreButtons } from "@/components/store-buttons";
|
||||
import Link from "next/link";
|
||||
import type { Metadata } from "next";
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: "Wownero Moon Launch | Such Software",
|
||||
description: "Crypto-themed space landing game. Fly your rocket across the solar system, dodge hazards, collect crypto, upgrade your ship. Android, iOS, Web, Desktop.",
|
||||
alternates: { canonical: "/products/wownero-moon-launch" },
|
||||
title: "Such Moon Launch | Such Software",
|
||||
description: "Vry rocket. Much landing. Wow! A pixel-art rocket-flying arcade with 11 levels, 4 weapons, and an endless mode. Wownero-themed. Android, iOS, Web, Desktop.",
|
||||
alternates: { canonical: "/products/such-moon-launch" },
|
||||
openGraph: {
|
||||
title: "Wownero Moon Launch | Such Software",
|
||||
description: "Crypto-themed space landing game. Fly your rocket across the solar system, dodge hazards, collect crypto, upgrade your ship. Android, iOS, Web, Desktop.",
|
||||
title: "Such Moon Launch | Such Software",
|
||||
description: "Vry rocket. Much landing. Wow! A pixel-art rocket-flying arcade with 11 levels, 4 weapons, and an endless mode. Wownero-themed.",
|
||||
type: "website",
|
||||
},
|
||||
};
|
||||
@@ -38,7 +38,7 @@ const weapons = [
|
||||
{ name: "💥 EMP", description: "Area blast, destroys all nearby enemies" },
|
||||
];
|
||||
|
||||
export default function WowneroMoonLaunchPage() {
|
||||
export default function SuchMoonLaunchPage() {
|
||||
return (
|
||||
<main className="relative min-h-screen flex flex-col items-center bg-background text-foreground">
|
||||
<Header />
|
||||
@@ -47,34 +47,46 @@ export default function WowneroMoonLaunchPage() {
|
||||
← Back to Products
|
||||
</Link>
|
||||
|
||||
<h1 className="text-4xl md:text-5xl font-bold mb-6 text-orange-600 dark:text-orange-400">
|
||||
Wownero Moon Launch
|
||||
<h1 className="text-4xl md:text-5xl font-bold mb-2 text-amber-600 dark:text-amber-400">
|
||||
Such Moon Launch
|
||||
</h1>
|
||||
<p className="text-base text-muted-foreground mb-6">Vry rocket. Much landing. Wow!</p>
|
||||
|
||||
<div className="prose dark:prose-invert max-w-none mb-12">
|
||||
<div className="prose dark:prose-invert max-w-none mb-8">
|
||||
<p className="text-xl text-muted-foreground leading-relaxed">
|
||||
A crypto-themed space landing game. Fly your rocket across the solar system, dodge
|
||||
Martians, asteroids, gamma rays, and black holes. Collect crypto, upgrade your ship,
|
||||
and unlock 13 ship skins. 11 story levels plus a procedural endless mode.
|
||||
A Wownero-themed pixel-art rocket arcade. Fly across the solar system, dodge Martians,
|
||||
asteroids, gamma rays, and black holes. Collect crypto, upgrade your ship, and unlock
|
||||
13 ship skins. 11 story levels plus a procedural endless mode — with tilt-to-steer
|
||||
controls on mobile.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div className="flex flex-wrap gap-4 mb-12">
|
||||
<a href="https://moonlaunch.such.software" target="_blank" rel="noopener noreferrer">
|
||||
<Button size="lg">Play on Web</Button>
|
||||
</a>
|
||||
<a href="https://suchsoftware.itch.io/wownero-moon-launch" target="_blank" rel="noopener noreferrer">
|
||||
<Button variant="outline" size="lg">
|
||||
Play on itch.io
|
||||
</Button>
|
||||
</a>
|
||||
<p className="flex items-center text-sm text-muted-foreground">
|
||||
Google Play & App Store — Coming Soon
|
||||
<div className="mb-12">
|
||||
<SuchMoonLaunchStoreButtons />
|
||||
</div>
|
||||
|
||||
<h2 className="text-2xl font-bold mb-6">The Story</h2>
|
||||
<div className="section-container border-l-4 border-amber-500 mb-12 text-muted-foreground space-y-4">
|
||||
<p>
|
||||
Such Moon Launch is the greatly expanded re-release of <strong>the very first game I ever wrote</strong>.
|
||||
The original — <em>Meowlet Moon Launch</em> — was a single-level rocket-landing prototype
|
||||
published years ago as a test app under our old <strong>Tabby Labs</strong> developer account.
|
||||
One level, simple physics, no music, no juice. But it shipped, and people played it.
|
||||
</p>
|
||||
<p>
|
||||
This release is a near-complete rebuild. 11 hand-tuned story levels across the solar system,
|
||||
a procedural endless mode, 4 weapons, 8 ship upgrades, 13 skins, achievements on Google Play
|
||||
Games and Apple Game Center, cloud save, a global leaderboard backend, a 3D landing
|
||||
mini-game on final approach, and proper <strong>tilt-to-steer</strong> controls calibrated
|
||||
for phones — no drift, no fight. All wrapped in a Wownero-themed pixel-art aesthetic.
|
||||
</p>
|
||||
<p>
|
||||
Same rocket, same Moon. Almost everything else is new.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<h2 className="text-2xl font-bold mb-6">How It Works</h2>
|
||||
<div className="section-container border-l-4 border-orange-500 mb-12">
|
||||
<div className="section-container border-l-4 border-amber-500 mb-12">
|
||||
<ol className="space-y-4 text-muted-foreground">
|
||||
<li><strong>1. Launch</strong> — Blast off from Earth with limited fuel.</li>
|
||||
<li><strong>2. Navigate</strong> — Fly through space, dodging hazards and collecting crypto.</li>
|
||||
@@ -86,7 +98,7 @@ export default function WowneroMoonLaunchPage() {
|
||||
<h2 className="text-2xl font-bold mb-6">11 Levels + Endless Mode</h2>
|
||||
<div className="grid md:grid-cols-3 gap-4 mb-12">
|
||||
{levels.map((level) => (
|
||||
<Card key={level.name} className="glass-card border-orange-500/20">
|
||||
<Card key={level.name} className="glass-card border-amber-500/20">
|
||||
<h3 className="font-bold mb-1">{level.name}</h3>
|
||||
<p className="text-sm text-muted-foreground">{level.description}</p>
|
||||
</Card>
|
||||
@@ -96,7 +108,7 @@ export default function WowneroMoonLaunchPage() {
|
||||
<h2 className="text-2xl font-bold mb-6">Weapons</h2>
|
||||
<div className="grid md:grid-cols-2 gap-6 mb-12">
|
||||
{weapons.map((weapon) => (
|
||||
<Card key={weapon.name} className="glass-card border-orange-500/20">
|
||||
<Card key={weapon.name} className="glass-card border-amber-500/20">
|
||||
<h3 className="text-lg font-bold mb-2">{weapon.name}</h3>
|
||||
<p className="text-muted-foreground">{weapon.description}</p>
|
||||
</Card>
|
||||
@@ -105,46 +117,46 @@ export default function WowneroMoonLaunchPage() {
|
||||
|
||||
<h2 className="text-2xl font-bold mb-6">Features</h2>
|
||||
<div className="grid md:grid-cols-3 gap-6 mb-12">
|
||||
<Card className="glass-card border-orange-500/20">
|
||||
<Card className="glass-card border-amber-500/20">
|
||||
<h3 className="font-bold mb-2">13 Ship Skins</h3>
|
||||
<p className="text-sm text-muted-foreground">8 purchasable + 4 achievement unlocks + default</p>
|
||||
</Card>
|
||||
<Card className="glass-card border-orange-500/20">
|
||||
<Card className="glass-card border-amber-500/20">
|
||||
<h3 className="font-bold mb-2">8 Ship Upgrades</h3>
|
||||
<p className="text-sm text-muted-foreground">Thrust, fuel, shield, armor, landing gear, magnet, and more</p>
|
||||
</Card>
|
||||
<Card className="glass-card border-orange-500/20">
|
||||
<Card className="glass-card border-amber-500/20">
|
||||
<h3 className="font-bold mb-2">Star Ratings</h3>
|
||||
<p className="text-sm text-muted-foreground">1–3 stars per level based on time and fuel</p>
|
||||
</Card>
|
||||
<Card className="glass-card border-orange-500/20">
|
||||
<Card className="glass-card border-amber-500/20">
|
||||
<h3 className="font-bold mb-2">Global Leaderboards</h3>
|
||||
<p className="text-sm text-muted-foreground">Per-level rankings across all platforms</p>
|
||||
</Card>
|
||||
<Card className="glass-card border-orange-500/20">
|
||||
<Card className="glass-card border-amber-500/20">
|
||||
<h3 className="font-bold mb-2">Cloud Save</h3>
|
||||
<p className="text-sm text-muted-foreground">Progress synced to our backend, restore anytime</p>
|
||||
</Card>
|
||||
<Card className="glass-card border-orange-500/20">
|
||||
<Card className="glass-card border-amber-500/20">
|
||||
<h3 className="font-bold mb-2">Cross-Platform</h3>
|
||||
<p className="text-sm text-muted-foreground">Android, iOS, Web, Windows, macOS, Linux</p>
|
||||
</Card>
|
||||
<Card className="glass-card border-orange-500/20">
|
||||
<Card className="glass-card border-amber-500/20">
|
||||
<h3 className="font-bold mb-2">3D Landing Mode</h3>
|
||||
<p className="text-sm text-muted-foreground">Final approach in 3D with cockpit HUD</p>
|
||||
</Card>
|
||||
<Card className="glass-card border-orange-500/20">
|
||||
<Card className="glass-card border-amber-500/20">
|
||||
<h3 className="font-bold mb-2">Warp Tunnel</h3>
|
||||
<p className="text-sm text-muted-foreground">Hyperspace transition between levels</p>
|
||||
</Card>
|
||||
<Card className="glass-card border-orange-500/20">
|
||||
<Card className="glass-card border-amber-500/20">
|
||||
<h3 className="font-bold mb-2">Crypto Theme</h3>
|
||||
<p className="text-sm text-muted-foreground">WOW, XMR, BTC, DOGE collectibles as in-game currency</p>
|
||||
</Card>
|
||||
</div>
|
||||
|
||||
<h2 className="text-2xl font-bold mb-6">Space Hazards</h2>
|
||||
<div className="section-container border-l-4 border-orange-500 mb-12">
|
||||
<div className="section-container border-l-4 border-amber-500 mb-12">
|
||||
<ul className="space-y-2 text-muted-foreground">
|
||||
<li><strong>Martians</strong> — enemy ships that chase your rocket</li>
|
||||
<li><strong>Gamma Rays</strong> — periodic lethal beams across the level</li>
|
||||
@@ -156,11 +168,11 @@ export default function WowneroMoonLaunchPage() {
|
||||
</div>
|
||||
|
||||
<div className="flex items-center gap-4 text-sm text-muted-foreground">
|
||||
<Link href="/products/wownero-moon-launch/privacy" className="hover:text-foreground transition-colors">
|
||||
<Link href="/products/such-moon-launch/privacy" className="hover:text-foreground transition-colors">
|
||||
Privacy Policy
|
||||
</Link>
|
||||
<span>•</span>
|
||||
<Link href="/products/wownero-moon-launch/terms" className="hover:text-foreground transition-colors">
|
||||
<Link href="/products/such-moon-launch/terms" className="hover:text-foreground transition-colors">
|
||||
Terms of Service
|
||||
</Link>
|
||||
<span>•</span>
|
||||
+12
-12
@@ -4,29 +4,29 @@ import Link from "next/link";
|
||||
import type { Metadata } from "next";
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: "Privacy Policy | Wownero Moon Launch | Such Software",
|
||||
description: "Privacy policy for Wownero Moon Launch mobile game. GDPR and CPRA compliant.",
|
||||
alternates: { canonical: "/products/wownero-moon-launch/privacy" },
|
||||
title: "Privacy Policy | Such Moon Launch | Such Software",
|
||||
description: "Privacy policy for Such Moon Launch mobile game. GDPR and CPRA compliant.",
|
||||
alternates: { canonical: "/products/such-moon-launch/privacy" },
|
||||
};
|
||||
|
||||
export default function WowneroMoonLaunchPrivacyPage() {
|
||||
export default function SuchMoonLaunchPrivacyPage() {
|
||||
return (
|
||||
<main className="relative min-h-screen flex flex-col items-center bg-background text-foreground">
|
||||
<Header />
|
||||
<div id="main-content" className="z-10 w-full max-w-4xl mx-auto py-20 px-4 pb-24 md:pb-20">
|
||||
<Link href="/products/wownero-moon-launch" className="text-sm text-muted-foreground hover:text-foreground mb-8 inline-flex items-center gap-2 transition-colors">
|
||||
← Back to Wownero Moon Launch
|
||||
<Link href="/products/such-moon-launch" className="text-sm text-muted-foreground hover:text-foreground mb-8 inline-flex items-center gap-2 transition-colors">
|
||||
← Back to Such Moon Launch
|
||||
</Link>
|
||||
|
||||
<div className="glass-card mt-6">
|
||||
<header className="mb-8 pb-6 border-b border-border">
|
||||
<h1 className="text-3xl md:text-4xl font-bold">Privacy Policy for Wownero Moon Launch</h1>
|
||||
<p className="text-muted-foreground mt-2">Last Updated: March 12, 2026</p>
|
||||
<h1 className="text-3xl md:text-4xl font-bold">Privacy Policy for Such Moon Launch</h1>
|
||||
<p className="text-muted-foreground mt-2">Last Updated: May 18, 2026</p>
|
||||
</header>
|
||||
|
||||
<div className="prose dark:prose-invert max-w-none">
|
||||
<p>
|
||||
<strong>Such Software LLC</strong> ("we," "us," or "our") operates the Wownero Moon Launch
|
||||
<strong>Such Software LLC</strong> ("we," "us," or "our") operates the Such Moon Launch
|
||||
application (the "App"). This page informs you of our policies regarding the collection,
|
||||
use, and disclosure of personal data when you use our App.
|
||||
</p>
|
||||
@@ -197,7 +197,7 @@ export default function WowneroMoonLaunchPrivacyPage() {
|
||||
|
||||
<h2>Cryptocurrency</h2>
|
||||
<p>
|
||||
Wownero Moon Launch is a <strong>crypto-themed game</strong>. The in-game collectibles (WOW, XMR, BTC, DOGE)
|
||||
Such Moon Launch is a <strong>crypto-themed game</strong>. The in-game collectibles (WOW, XMR, BTC, DOGE)
|
||||
are purely virtual game items with no real-world monetary value. The App does not:
|
||||
</p>
|
||||
<ul>
|
||||
@@ -236,7 +236,7 @@ export default function WowneroMoonLaunchPrivacyPage() {
|
||||
<strong>Opt out of personalized ads</strong> via your device settings:
|
||||
<ul>
|
||||
<li>Android: Settings → Google → Ads → Opt out of Ads Personalization</li>
|
||||
<li>iOS: Settings → Privacy → Tracking → Disable tracking for Wownero Moon Launch</li>
|
||||
<li>iOS: Settings → Privacy → Tracking → Disable tracking for Such Moon Launch</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><strong>Request deletion</strong> of your leaderboard or cloud save data by contacting us</li>
|
||||
@@ -288,7 +288,7 @@ export default function WowneroMoonLaunchPrivacyPage() {
|
||||
<hr />
|
||||
|
||||
<h2>Consent</h2>
|
||||
<p>By using Wownero Moon Launch, you consent to this Privacy Policy.</p>
|
||||
<p>By using Such Moon Launch, you consent to this Privacy Policy.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
+11
-11
@@ -4,29 +4,29 @@ import Link from "next/link";
|
||||
import type { Metadata } from "next";
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: "Terms of Service | Wownero Moon Launch | Such Software",
|
||||
description: "Terms of service for Wownero Moon Launch mobile game.",
|
||||
alternates: { canonical: "/products/wownero-moon-launch/terms" },
|
||||
title: "Terms of Service | Such Moon Launch | Such Software",
|
||||
description: "Terms of service for Such Moon Launch mobile game.",
|
||||
alternates: { canonical: "/products/such-moon-launch/terms" },
|
||||
};
|
||||
|
||||
export default function WowneroMoonLaunchTermsPage() {
|
||||
export default function SuchMoonLaunchTermsPage() {
|
||||
return (
|
||||
<main className="relative min-h-screen flex flex-col items-center bg-background text-foreground">
|
||||
<Header />
|
||||
<div id="main-content" className="z-10 w-full max-w-4xl mx-auto py-20 px-4 pb-24 md:pb-20">
|
||||
<Link href="/products/wownero-moon-launch" className="text-sm text-muted-foreground hover:text-foreground mb-8 inline-flex items-center gap-2 transition-colors">
|
||||
← Back to Wownero Moon Launch
|
||||
<Link href="/products/such-moon-launch" className="text-sm text-muted-foreground hover:text-foreground mb-8 inline-flex items-center gap-2 transition-colors">
|
||||
← Back to Such Moon Launch
|
||||
</Link>
|
||||
|
||||
<div className="glass-card mt-6">
|
||||
<header className="mb-8 pb-6 border-b border-border">
|
||||
<h1 className="text-3xl md:text-4xl font-bold">Terms of Service for Wownero Moon Launch</h1>
|
||||
<p className="text-muted-foreground mt-2">Last Updated: March 12, 2026</p>
|
||||
<h1 className="text-3xl md:text-4xl font-bold">Terms of Service for Such Moon Launch</h1>
|
||||
<p className="text-muted-foreground mt-2">Last Updated: May 18, 2026</p>
|
||||
</header>
|
||||
|
||||
<div className="prose dark:prose-invert max-w-none">
|
||||
<p>
|
||||
These Terms of Service ("Terms") govern your use of the Wownero Moon Launch application
|
||||
These Terms of Service ("Terms") govern your use of the Such Moon Launch application
|
||||
(the "App") operated by <strong>Such Software LLC</strong> ("we," "us," or "our").
|
||||
By downloading, installing, or using the App, you agree to be bound by these Terms.
|
||||
</p>
|
||||
@@ -35,7 +35,7 @@ export default function WowneroMoonLaunchTermsPage() {
|
||||
|
||||
<h2>1. Use of the App</h2>
|
||||
<p>
|
||||
Wownero Moon Launch is a video game provided for entertainment purposes. You may use the App
|
||||
Such Moon Launch is a video game provided for entertainment purposes. You may use the App
|
||||
on any supported device for personal, non-commercial use.
|
||||
</p>
|
||||
<p>You agree not to:</p>
|
||||
@@ -100,7 +100,7 @@ export default function WowneroMoonLaunchTermsPage() {
|
||||
<p>
|
||||
You may remove ads by purchasing the "Remove Ads" upgrade within the App.
|
||||
Ad display is subject to our{" "}
|
||||
<Link href="/products/wownero-moon-launch/privacy">Privacy Policy</Link>.
|
||||
<Link href="/products/such-moon-launch/privacy">Privacy Policy</Link>.
|
||||
</p>
|
||||
|
||||
<hr />
|
||||
@@ -14,7 +14,7 @@ export default function sitemap(): MetadataRoute.Sitemap {
|
||||
{ url: `${base}/products/bauhaus-echo`, lastModified: new Date(), changeFrequency: "monthly", priority: 0.8 },
|
||||
{ url: `${base}/products/vegan-iq`, lastModified: new Date(), changeFrequency: "monthly", priority: 0.8 },
|
||||
{ url: `${base}/products/suchoice`, lastModified: new Date(), changeFrequency: "monthly", priority: 0.7 },
|
||||
{ url: `${base}/products/wownero-moon-launch`, lastModified: new Date(), changeFrequency: "monthly", priority: 0.7 },
|
||||
{ url: `${base}/products/such-moon-launch`, lastModified: new Date(), changeFrequency: "monthly", priority: 0.7 },
|
||||
{ url: `${base}/services`, lastModified: new Date(), changeFrequency: "monthly", priority: 0.9 },
|
||||
{ url: `${base}/about`, lastModified: new Date(), changeFrequency: "monthly", priority: 0.7 },
|
||||
{ url: `${base}/support`, lastModified: new Date(), changeFrequency: "monthly", priority: 0.5 },
|
||||
|
||||
@@ -5,7 +5,8 @@ import { Button } from "@repo/ui/components/button";
|
||||
|
||||
type StoreLink = {
|
||||
platform: "apple" | "google";
|
||||
href: string;
|
||||
/** Live store URL, or `null` to render a disabled "Coming Soon" button. */
|
||||
href: string | null;
|
||||
};
|
||||
|
||||
type StoreButtonsProps = {
|
||||
@@ -23,6 +24,14 @@ export function StoreButtons({ links, extraLinks }: StoreButtonsProps) {
|
||||
<div className="flex flex-wrap gap-4 not-prose">
|
||||
{links.map(({ platform, href }) => {
|
||||
const { icon: Icon, label } = platformConfig[platform];
|
||||
if (href === null) {
|
||||
return (
|
||||
<Button key={platform} variant="outline" size="lg" disabled>
|
||||
<Icon className="h-5 w-5 mr-2" aria-hidden="true" />
|
||||
{label} — Coming Soon
|
||||
</Button>
|
||||
);
|
||||
}
|
||||
return (
|
||||
<a key={platform} href={href} target="_blank" rel="noopener noreferrer">
|
||||
<Button variant="outline" size="lg">
|
||||
@@ -62,6 +71,23 @@ export function SuchoiceStoreButtons() {
|
||||
);
|
||||
}
|
||||
|
||||
export function SuchMoonLaunchStoreButtons() {
|
||||
// Both stores submitted 2026-05-18; pending review. Flip null → real URLs
|
||||
// once the app is live (Apple assigns the appstore.com /id<NUM> at first
|
||||
// approval; Google URL is predictable as id=com.suchsoftware.suchmoonlaunch).
|
||||
return (
|
||||
<StoreButtons
|
||||
links={[
|
||||
{ platform: "google", href: null },
|
||||
{ platform: "apple", href: null },
|
||||
]}
|
||||
extraLinks={[
|
||||
{ href: "https://moonlaunch.such.software", label: "Play on Web" },
|
||||
]}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
export function BauhausEchoStoreButtons() {
|
||||
return (
|
||||
<StoreButtons
|
||||
|
||||
Reference in New Issue
Block a user