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}