mirror of
https://github.com/Such-Software/such.software.git
synced 2026-10-17 05:32:05 +02:00
chore(apps): drop "AI-powered", sort the list reverse alphabetically
Suchoice's tagline was "AI-powered decision making", which named the implementation instead of the thing you get. It now reads "Six ways to decide, from a coin flip to 3D dice", which is what the product page already says and is concrete enough to tell you whether you want it. Order is now derived, not hand-maintained: sortedApps sorts on name descending at render. Hand-ordering the array works right up until someone adds an app to the end and the page is quietly wrong, which is the same class of problem as a hand-maintained timing constant. Reverse alphabetical gives Vegan IQ, Suchoice, Such Moon Launch, Hash Bags, Bloomword, Bauhaus Echo. Note Suchoice sorts above Such Moon Launch: the comparison is locale-aware, so the space in "Such Moon" does not simply win on byte order the way it would with a raw string compare.
This commit is contained in:
@@ -71,7 +71,7 @@ const apps = [
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Suchoice",
|
name: "Suchoice",
|
||||||
tagline: "AI-powered decision making",
|
tagline: "Six ways to decide, from a coin flip to 3D dice",
|
||||||
icon: "/images/products/suchoice.png",
|
icon: "/images/products/suchoice.png",
|
||||||
color: "text-pink-600 dark:text-pink-400",
|
color: "text-pink-600 dark:text-pink-400",
|
||||||
borderColor: "border-pink-500/20",
|
borderColor: "border-pink-500/20",
|
||||||
@@ -95,6 +95,10 @@ const apps = [
|
|||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
|
// Reverse alphabetical for now. Derived rather than hand-ordered, so adding an app
|
||||||
|
// cannot leave the page in an order someone has to remember to fix.
|
||||||
|
const sortedApps = [...apps].sort((a, b) => b.name.localeCompare(a.name));
|
||||||
|
|
||||||
export default function LinksPage() {
|
export default function LinksPage() {
|
||||||
return (
|
return (
|
||||||
<main className="relative min-h-screen flex flex-col items-center bg-background text-foreground">
|
<main className="relative min-h-screen flex flex-col items-center bg-background text-foreground">
|
||||||
@@ -104,7 +108,7 @@ export default function LinksPage() {
|
|||||||
<p className="text-muted-foreground text-center mb-10">Our apps</p>
|
<p className="text-muted-foreground text-center mb-10">Our apps</p>
|
||||||
|
|
||||||
<div className="grid grid-cols-1 sm:grid-cols-2 gap-6">
|
<div className="grid grid-cols-1 sm:grid-cols-2 gap-6">
|
||||||
{apps.map((app, i) => (
|
{sortedApps.map((app, i) => (
|
||||||
<ScrollReveal key={app.name} delay={(i % 2) * 0.08}>
|
<ScrollReveal key={app.name} delay={(i % 2) * 0.08}>
|
||||||
<div className={`h-full rounded-xl border ${app.borderColor} bg-card p-6`}>
|
<div className={`h-full rounded-xl border ${app.borderColor} bg-card p-6`}>
|
||||||
<div className="flex items-center gap-4 mb-3">
|
<div className="flex items-center gap-4 mb-3">
|
||||||
|
|||||||
Reference in New Issue
Block a user