The weeb for the next gen discord boat - Wamellow wamellow.com
bot discord
3
fork

Configure Feed

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

pronouns fix cronical tag

Luna f2317a34 76238d16

+81 -29
+13
app/(home)/bot/pronouns/genders/page.tsx
··· 1 + import { Metadata } from "next"; 2 + 1 3 import { PronounsResponse } from "@/typings"; 4 + import { getCanonicalUrl } from "@/utils/urls"; 2 5 3 6 import List from "../list.component"; 7 + 8 + export const generateMetadata = (): Metadata => { 9 + const url = getCanonicalUrl("bot", "pronouns", "genders"); 10 + 11 + return { 12 + alternates: { 13 + canonical: url 14 + } 15 + }; 16 + }; 4 17 5 18 export default async function Home() { 6 19 const genders = await fetch("https://prns-api.waya.one/genders", { next: { revalidate: 60 * 60 } }).then((res) => res.json()) as PronounsResponse;
+3 -4
app/(home)/bot/pronouns/layout.tsx
··· 15 15 const montserrat = Montserrat({ subsets: ["latin"] }); 16 16 const handwritten = Patrick_Hand({ subsets: ["latin"], weight: "400" }); 17 17 18 - export const generateMetadata = async (): Promise<Metadata> => { 18 + export const generateMetadata = (): Metadata => { 19 19 20 - const title = "Pronouns"; 20 + const title = "Pronouns: A safe discord bot"; 21 21 const description = "Let your community describe themself with a wide variety of supported Pronouns, Sexualities and Genders."; 22 22 const url = getCanonicalUrl("bot", "pronouns"); 23 23 ··· 69 69 <ServerButton 70 70 as={Link} 71 71 href="/bot/pronouns" 72 - isIconOnly 73 72 > 74 73 <HiHome /> 75 74 </ServerButton> ··· 100 99 as={Link} 101 100 startContent={<HiUserAdd />} 102 101 className="button-primary w-1/2 lg:w-fit !text-xl !font-medium" 103 - href="https://top.gg/bot/912003493777268767/invite" 102 + href="https://discord.com/oauth2/authorize?client_id=912003493777268767&permissions=8&scope=bot%20applications.commands" 104 103 size="lg" 105 104 > 106 105 <span className="block sm:hidden">Invite</span>
+38 -24
app/(home)/bot/pronouns/page.tsx
··· 1 1 import { Montserrat } from "next/font/google"; 2 2 import Image from "next/image"; 3 3 import Link from "next/link"; 4 - import { HiPlus } from "react-icons/hi"; 4 + import { HiCash, HiPlus } from "react-icons/hi"; 5 5 6 + import Badge from "@/components/badge"; 7 + import Box from "@/components/box"; 6 8 import DiscordMessage from "@/components/discord/message"; 7 9 import { ServerButton } from "@/components/server-button"; 10 + import cn from "@/utils/cn"; 8 11 9 12 const montserrat = Montserrat({ subsets: ["latin"] }); 10 13 11 14 export default async function Home() { 12 15 16 + const styles = { 17 + h2: cn(montserrat.className, "lg:text-5xl text-4xl bg-gradient-to-b bg-clip-text text-transparent from-neutral-200 from-40% to-neutral-400 font-bold underline decoration-violet-400"), 18 + h3: cn(montserrat.className, "lg:text-2xl text-xl bg-gradient-to-b bg-clip-text text-transparent from-neutral-200 from-40% to-neutral-300 font-semibold") 19 + }; 20 + 13 21 const messageProps = (command: string) => { 14 22 return { 15 23 mode: "DARK" as const, ··· 29 37 }; 30 38 31 39 return ( 32 - <div className="flex flex-col gap-8 my-4"> 33 - 34 - <div className="flex flex-col-reverse md:flex-row gap-8 items-center"> 35 - 36 - <div className="md:ml-auto md:w-1/2 w-full px-3 pb-3 flex flex-col gap-4"> 37 - {["pronouns", "sexuality", "gender"].map((type) => 38 - <div className="w-full flex justify-between" key={type}> 39 - <DiscordMessage {...messageProps("add " + type)} > 40 - <span className="flex items-center gap-1"> 41 - <Image src="https://cdn.discordapp.com/emojis/949003338186383491.webp?size=44&quality=lossless" height={24} width={24} alt="" /> 42 - You successfully added @She/They as your {type}. 43 - </span> 44 - </DiscordMessage> 45 - </div> 46 - )} 47 - </div> 40 + <div> 41 + <h2 className={styles.h2}>It{"'"}s important for us</h2> 42 + <div className="my-8 max-w-md font-medium"> 43 + Support diverse identities openly, fostering a safe space for everyone to be their true selves. 44 + </div> 48 45 49 - <div className="text-left md:w-1/2"> 50 - <h2 className={`${montserrat.className} lg:text-4xl text-3xl dark:text-neutral-100 text-neutral-900 font-semibold underline decoration-violet-400`}>It{"'"}s important</h2> 51 - <div className="text-lg pt-6"> 46 + <Box className="flex flex-col md:flex-row gap-10 items-center"> 47 + <div className="md:w-1/2"> 48 + <Badge 49 + before={<HiCash />} 50 + text="100% free forever" 51 + classname="mr-auto ml-0 mb-4" 52 + /> 53 + <h3 className={styles.h3}>Sexualities, Genders & Pronouns</h3> 54 + <div className="pt-6"> 52 55 Let your community describe themself with a wide variety of supported Pronouns, Sexualities and Genders. 53 56 This has become very important in recent years as more and more people finally feel safe to come out publicly as who they really are, and we think this is a great way to express this publicly online. 54 57 </div> 55 - 56 - <div className="flex gap-2 mt-4"> 58 + <div className="flex gap-2 mt-6"> 57 59 <ServerButton 58 60 as={Link} 61 + className="bg-wamellow-alpha" 59 62 startContent={<HiPlus />} 60 63 href="/support" 61 64 > 62 65 Request additional 63 66 </ServerButton> 64 67 </div> 68 + </div> 65 69 70 + <div className="w-full md:w-1/2 px-8 py-4 rounded-lg flex flex-col gap-5" style={{ backgroundColor: "rgb(43, 45, 49)" }}> 71 + {[["pronouns", "@She/They"], ["sexuality", "lesbian"], ["gender", "transwoman"]].map(([type, name]) => 72 + <div className="w-full" key={"prns-" + type + name}> 73 + <DiscordMessage {...messageProps("add " + type)} > 74 + <span className="flex items-center gap-1"> 75 + <Image src="https://cdn.discordapp.com/emojis/949003338186383491.webp?size=44&quality=lossless" height={24} width={24} alt="" /> 76 + You added {name} as your {type}. 77 + </span> 78 + </DiscordMessage> 79 + </div> 80 + )} 66 81 </div> 67 - 68 - </div> 82 + </Box> 69 83 70 84 </div> 71 85 );
+13
app/(home)/bot/pronouns/pronouns/page.tsx
··· 1 + import { Metadata } from "next"; 2 + 1 3 import { PronounsResponse } from "@/typings"; 4 + import { getCanonicalUrl } from "@/utils/urls"; 2 5 3 6 import List from "../list.component"; 7 + 8 + export const generateMetadata = (): Metadata => { 9 + const url = getCanonicalUrl("bot", "pronouns", "pronouns"); 10 + 11 + return { 12 + alternates: { 13 + canonical: url 14 + } 15 + }; 16 + }; 4 17 5 18 export default async function Home() { 6 19 const pronouns = await fetch("https://prns-api.waya.one/pronouns", { next: { revalidate: 60 * 60 } }).then((res) => res.json()) as PronounsResponse;
+13
app/(home)/bot/pronouns/sexualities/page.tsx
··· 1 + import { Metadata } from "next"; 2 + 1 3 import { PronounsResponse } from "@/typings"; 4 + import { getCanonicalUrl } from "@/utils/urls"; 2 5 3 6 import List from "../list.component"; 7 + 8 + export const generateMetadata = (): Metadata => { 9 + const url = getCanonicalUrl("bot", "pronouns", "sexualities"); 10 + 11 + return { 12 + alternates: { 13 + canonical: url 14 + } 15 + }; 16 + }; 4 17 5 18 export default async function Home() { 6 19 const sexualities = await fetch("https://prns-api.waya.one/sexualities", { next: { revalidate: 60 * 60 } }).then((res) => res.json()) as PronounsResponse;
+1 -1
app/sitemap.xml/route.ts
··· 6 6 }[] 7 7 8 8 // Update sitemap only one a day 9 - // export const revalidate = 1000 * 60 * 60 * 24; 9 + export const revalidate = 1000 * 60 * 60 * 24; 10 10 11 11 export async function GET() { 12 12 const guildIds = await fetch(`${process.env.NEXT_PUBLIC_API}/guilds`, { headers: { Authorization: process.env.API_SECRET as string }, next: { revalidate: 60 * 12 } }).then((res) => res.json()) as string[];