an appview-less Bluesky client using Constellation and PDS Queries
reddwarf.app
frontend
spa
bluesky
reddwarf
microcosm
1import { createFileRoute } from "@tanstack/react-router";
2
3import { Header } from "~/components/Header";
4import { Import } from "~/components/Import";
5
6export const Route = createFileRoute("/search")({
7 component: Search,
8});
9
10export function Search() {
11 return (
12 <>
13 <Header
14 title="Explore"
15 backButtonCallback={() => {
16 if (window.history.length > 1) {
17 window.history.back();
18 } else {
19 window.location.assign("/");
20 }
21 }}
22 />
23 <div className=" flex flex-col items-center mt-4 mx-4 gap-4">
24 <Import />
25 <div className="flex flex-col">
26 <p className="text-gray-600 dark:text-gray-400">
27 Sorry we dont have search. But instead, you can load some of these
28 types of content into Red Dwarf:
29 </p>
30 <ul className="list-disc list-inside mt-2 text-gray-600 dark:text-gray-400">
31 <li>
32 Bluesky URLs from supported clients (like{" "}
33 <code className="text-sm">bsky.app</code> or{" "}
34 <code className="text-sm">deer.social</code>).
35 </li>
36 <li>
37 AT-URIs (e.g.,{" "}
38 <code className="text-sm">at://did:example/collection/item</code>
39 ).
40 </li>
41 <li>
42 Plain handles (like{" "}
43 <code className="text-sm">@username.bsky.social</code>).
44 </li>
45 <li>
46 Direct DIDs (Decentralized Identifiers, starting with{" "}
47 <code className="text-sm">did:</code>).
48 </li>
49 </ul>
50 <p className="mt-2 text-gray-600 dark:text-gray-400">
51 Simply paste one of these into the import field above and press
52 Enter to load the content.
53 </p>
54 </div>
55 </div>
56 </>
57 );
58}