diff --git a/web/app/dashboard/[guildId]/layout.tsx b/web/app/dashboard/[guildId]/layout.tsx
index 27d5084..47a0ebe 100644
--- a/web/app/dashboard/[guildId]/layout.tsx
+++ b/web/app/dashboard/[guildId]/layout.tsx
@@ -4,6 +4,8 @@ import { getUserGuilds } from "@/lib/discord";
import ServerSwitcher from "@/components/ServerSwitcher";
import DashboardSidebar from "@/components/DashboardSidebar";
import UserProfile from "@/components/UserProfile";
+import RequestAccessButton from "@/components/RequestAccessButton";
+
export default async function DashboardLayout({
@@ -74,13 +76,9 @@ export default async function DashboardLayout({
Add to Server
) : (
-
+
)}
+
diff --git a/web/app/dashboard/page.tsx b/web/app/dashboard/page.tsx
index 075920a..c460bfe 100644
--- a/web/app/dashboard/page.tsx
+++ b/web/app/dashboard/page.tsx
@@ -4,6 +4,8 @@ import Link from "next/link"
import { getUserGuilds } from "@/lib/discord"
import Toast from "@/components/Toast"
import UserProfile from "@/components/UserProfile"
+import RequestAccessButton from "@/components/RequestAccessButton"
+
export default async function Dashboard() {
@@ -74,13 +76,9 @@ export default async function Dashboard() {
Add to Server
) : (
-
+
)}
+
))}
diff --git a/web/components/RequestAccessButton.tsx b/web/components/RequestAccessButton.tsx
new file mode 100644
index 0000000..59dd19a
--- /dev/null
+++ b/web/components/RequestAccessButton.tsx
@@ -0,0 +1,89 @@
+"use client";
+
+import { useState } from "react";
+import { createPortal } from "react-dom";
+import { Lock, Copy, Check, X } from "lucide-react";
+
+interface RequestAccessButtonProps {
+ guildId: string;
+}
+
+export default function RequestAccessButton({ guildId }: RequestAccessButtonProps) {
+ const [isOpen, setIsOpen] = useState(false);
+ const [copied, setCopied] = useState(false);
+
+ const handleCopy = () => {
+ navigator.clipboard.writeText(guildId);
+ setCopied(true);
+ setTimeout(() => setCopied(false), 2000);
+ };
+
+ return (
+ <>
+
+
+ {isOpen && createPortal(
+
+ {/* Backdrop */}
+
setIsOpen(false)}
+ />
+
+ {/* Modal */}
+
+
+
+
+
+
+
+
+
+ Beta Access Required
+
+
+
+ Please send a DM to _void_x_ on Discord to enable beta access for your server.
+
+ Make sure to include your Server ID:
+
+
+
+
+ {guildId}
+
+
+
+
+
+
+
+
,
+ document.body
+ )}
+ >
+ );
+}