diff --git a/public/i18n/en.json b/public/i18n/en.json
index d723515..977e810 100644
--- a/public/i18n/en.json
+++ b/public/i18n/en.json
@@ -558,7 +558,8 @@
"created_at": "Created At",
"recommended_by": "Recommended By",
"already_in_fed": "You're already in a federation!",
- "descriptionpart2": "Each one is ran by a group of different inviduals or companies. Discover one that you or your friends might trust below."
+ "descriptionpart2": "Each one is ran by a group of different inviduals or companies. Discover one that you or your friends might trust below.",
+ "join_me": "Join me"
},
"gift": {
"give_sats_link": "Give sats as a gift",
diff --git a/src/components/FederationInviteShower.tsx b/src/components/FederationInviteShower.tsx
new file mode 100644
index 0000000..12cb1e1
--- /dev/null
+++ b/src/components/FederationInviteShower.tsx
@@ -0,0 +1,55 @@
+import { Copy, QrCode } from "lucide-solid";
+import { createSignal, Show } from "solid-js";
+import { QRCodeSVG } from "solid-qr-code";
+
+import { SimpleDialog } from "~/components";
+import { useI18n } from "~/i18n/context";
+import { useCopy } from "~/utils";
+
+export function FederationInviteShower(props: {
+ name?: string;
+ inviteCode: string;
+}) {
+ const i18n = useI18n();
+ const [showQr, setShowQr] = createSignal(false);
+
+ const [copy, copied] = useCopy({ copiedTimeout: 1000 });
+
+ return (
+ <>
+