Skip to content

Commit

The landing page lists the Android app among what works today, with notifications, linking to Download, where its QR code installs it; the iPhone app stays under Coming soon.

syntaqxcommitted Parente0c16a9Browse files
1 file+36−140/1 viewed
+36−14
7777 );
7878 }
7979
80−/** A point in a list: a check, or a "Coming soon" tag for what is not built yet. */
81−type Point = string | { text: string; soon: true };
80+/**
81+ * A point in a list: a check, a check whose words link somewhere, or a
82+ * "Coming soon" tag for what is not built yet.
83+ */
84+type Point =
85+ | string
86+ | { text: string; link: { to: string; label: string } }
87+ | { text: string; soon: true };
8288
8389 function Points({
8490 points,
8793 points: Point[];
8894 columns?: boolean;
8995 }) {
90− const now = points.filter(
91− (point): point is string => typeof point === "string",
92− );
96+ const now = points.filter((point) => typeof point === "string" || !("soon" in point));
9397 const later = points
94− .filter((point) => typeof point !== "string")
98+ .filter((point) => typeof point !== "string" && "soon" in point)
9599 .map((point) => (point as { text: string }).text);
96100 return (
97101 <>
98102 <ul
99103 className={`mt-6 grid gap-2.5 text-sm ${columns ? "sm:grid-cols-2" : ""}`}
100104 >
101− {now.map((text) => (
102− <li key={text} className="flex gap-2.5 text-fg-soft">
103− <Check size={15} className="mt-0.5 shrink-0 text-accent" />
104− <span>{text}</span>
105− </li>
106− ))}
105+ {now.map((point) =>
106+ typeof point === "string" ? (
107+ <li key={point} className="flex gap-2.5 text-fg-soft">
108+ <Check size={15} className="mt-0.5 shrink-0 text-accent" />
109+ <span>{point}</span>
110+ </li>
111+ ) : (
112+ "link" in point && (
113+ <li key={point.text} className="flex gap-2.5 text-fg-soft">
114+ <Check size={15} className="mt-0.5 shrink-0 text-accent" />
115+ <span>
116+ {point.text}{" "}
117+ <Link
118+ to={point.link.to}
119+ className="text-fg underline underline-offset-4 hover:text-accent"
120+ >
121+ {point.link.label}
122+ </Link>
123+ </span>
124+ </li>
125+ )
126+ ),
127+ )}
107128 </ul>
108129 {later.length > 0 && (
109130 <div className="mt-5 rounded-xl border border-dashed border-line-strong px-4 py-3.5">
601622 },
602623 { text: "Chat mentions in Notifications", soon: true },
603624 {
604− text: "A phone app with notifications, Android first, for g1t.sh or your own g1t",
605− soon: true,
625+ text: "An Android app with notifications: scan the QR code on",
626+ link: { to: "/download", label: "Download" },
606627 },
628+ { text: "The phone app on iPhone", soon: true },
607629 ]}
608630 />
609631 <More to={`${DOCS}/guides/chat/`}>How Chat works</More>