👁️
6
fork

Configure Feed

Select the types of activity you want to include in your feed.

fallback opengraph image

+92 -7
+20 -1
src/routes/cards/index.tsx
··· 30 30 }; 31 31 }, 32 32 head: () => ({ 33 - meta: [{ title: "Cards | DeckBelcher" }], 33 + meta: [ 34 + { title: "cards | deck belcher" }, 35 + { 36 + name: "description", 37 + content: 38 + "Browse and search Magic: The Gathering cards with Scryfall syntax.", 39 + }, 40 + { property: "og:title", content: "cards | deck belcher" }, 41 + { 42 + property: "og:description", 43 + content: 44 + "Browse and search Magic: The Gathering cards with Scryfall syntax.", 45 + }, 46 + { property: "og:image", content: "/logo512-maskable.png" }, 47 + { property: "og:image:width", content: "512" }, 48 + { property: "og:image:height", content: "512" }, 49 + { name: "twitter:card", content: "summary" }, 50 + { name: "twitter:title", content: "cards | deck belcher" }, 51 + { name: "twitter:image", content: "/logo512-maskable.png" }, 52 + ], 34 53 }), 35 54 }); 36 55
+24 -2
src/routes/deck/new.tsx
··· 1 - import { createFileRoute, useNavigate } from "@tanstack/react-router"; 1 + import { createFileRoute, Link, useNavigate } from "@tanstack/react-router"; 2 2 import { Box, Layers, ScrollText, Sparkles, Sword, User } from "lucide-react"; 3 3 import { useId, useState } from "react"; 4 4 import { useCreateDeckMutation } from "@/lib/deck-queries"; ··· 12 12 export const Route = createFileRoute("/deck/new")({ 13 13 component: NewDeckPage, 14 14 head: () => ({ 15 - meta: [{ title: "New Deck | DeckBelcher" }], 15 + meta: [ 16 + { title: "new deck | deck belcher" }, 17 + { property: "og:title", content: "new deck | deck belcher" }, 18 + { property: "og:image", content: "/logo512-maskable.png" }, 19 + { property: "og:image:width", content: "512" }, 20 + { property: "og:image:height", content: "512" }, 21 + { name: "twitter:card", content: "summary" }, 22 + { name: "twitter:title", content: "new deck | deck belcher" }, 23 + { name: "twitter:image", content: "/logo512-maskable.png" }, 24 + ], 16 25 }), 17 26 }); 18 27 ··· 235 244 > 236 245 Cancel 237 246 </button> 247 + </div> 248 + 249 + <div className="text-center pt-4 border-t border-gray-200 dark:border-zinc-700 mt-4"> 250 + <span className="text-gray-500 dark:text-zinc-400 text-sm"> 251 + Have a deck list?{" "} 252 + <Link 253 + to="/deck/import" 254 + search={{ format }} 255 + className="text-cyan-600 dark:text-cyan-400 hover:underline" 256 + > 257 + Import it 258 + </Link> 259 + </span> 238 260 </div> 239 261 </form> 240 262 </div>
+25 -1
src/routes/index.tsx
··· 3 3 import { ActivityFeed } from "@/components/ActivityFeed"; 4 4 import { useAuth } from "@/lib/useAuth"; 5 5 6 - export const Route = createFileRoute("/")({ component: App }); 6 + export const Route = createFileRoute("/")({ 7 + component: App, 8 + head: () => ({ 9 + meta: [ 10 + { title: "deck belcher" }, 11 + { 12 + name: "description", 13 + content: 14 + "Organize, build, and share Magic: The Gathering decks on the Atmosphere.", 15 + }, 16 + { property: "og:title", content: "deck belcher" }, 17 + { 18 + property: "og:description", 19 + content: 20 + "Organize, build, and share Magic: The Gathering decks on the Atmosphere.", 21 + }, 22 + { property: "og:image", content: "/logo512-maskable.png" }, 23 + { property: "og:image:width", content: "512" }, 24 + { property: "og:image:height", content: "512" }, 25 + { name: "twitter:card", content: "summary" }, 26 + { name: "twitter:title", content: "deck belcher" }, 27 + { name: "twitter:image", content: "/logo512-maskable.png" }, 28 + ], 29 + }), 30 + }); 7 31 8 32 function App() { 9 33 const { session } = useAuth();
+13 -2
src/routes/profile/$did/index.tsx
··· 48 48 return { handle }; 49 49 }, 50 50 head: ({ loaderData }) => { 51 - const display = loaderData?.handle ? `@${loaderData.handle}` : "Profile"; 52 - return { meta: [{ title: `${display} | DeckBelcher` }] }; 51 + const display = loaderData?.handle ? `@${loaderData.handle}` : "profile"; 52 + return { 53 + meta: [ 54 + { title: `${display} | deck belcher` }, 55 + { property: "og:title", content: `${display} | deck belcher` }, 56 + { property: "og:image", content: "/logo512-maskable.png" }, 57 + { property: "og:image:width", content: "512" }, 58 + { property: "og:image:height", content: "512" }, 59 + { name: "twitter:card", content: "summary" }, 60 + { name: "twitter:title", content: `${display} | deck belcher` }, 61 + { name: "twitter:image", content: "/logo512-maskable.png" }, 62 + ], 63 + }; 53 64 }, 54 65 }); 55 66
+10 -1
src/routes/signin.tsx
··· 8 8 export const Route = createFileRoute("/signin")({ 9 9 component: SignIn, 10 10 head: () => ({ 11 - meta: [{ title: "Sign In | DeckBelcher" }], 11 + meta: [ 12 + { title: "sign in | deck belcher" }, 13 + { property: "og:title", content: "sign in | deck belcher" }, 14 + { property: "og:image", content: "/logo512-maskable.png" }, 15 + { property: "og:image:width", content: "512" }, 16 + { property: "og:image:height", content: "512" }, 17 + { name: "twitter:card", content: "summary" }, 18 + { name: "twitter:title", content: "sign in | deck belcher" }, 19 + { name: "twitter:image", content: "/logo512-maskable.png" }, 20 + ], 12 21 }), 13 22 }); 14 23