src/components/about-dialog.tsx 2.3 K raw
1
import {
2
	Dialog,
3
	DialogContent,
4
	DialogHeader,
5
	DialogTitle,
6
	DialogTrigger,
7
} from "@/components/ui/dialog";
8
9
interface AboutDialogProps {
10
	open?: boolean;
11
	onOpenChange?: (open: boolean) => void;
12
	children?: React.ReactNode;
13
}
14
15
export function AboutDialog({
16
	open,
17
	onOpenChange,
18
	children,
19
}: AboutDialogProps) {
20
	return (
21
		<Dialog open={open} onOpenChange={onOpenChange}>
22
			{children && <DialogTrigger asChild>{children}</DialogTrigger>}
23
			<DialogContent>
24
				<DialogHeader>
25
					<DialogTitle>About</DialogTitle>
26
				</DialogHeader>
27
				<div className="space-y-4">
28
					<p className="text-sm text-muted-foreground">
29
						Alcove is built on two principles: privacy, and freedom of speech.
30
						Those two things are becoming harder to find these days, yet blogs
31
						and RSS feeds provides a way out. As long as someone is publishing
32
						and someone else is listening, these two fundamentals can help keep
33
						free speech alive. Alcove accomplishes privacy through a "can't be
34
						evil" tech stack, which you can read more about{" "}
35
						<a
36
							className="underline"
37
							target="_blank"
38
							rel="noreferrer"
39
							href="https://stevedylan.dev/posts/introducing-alcove/"
40
						>
41
							here
42
						</a>
43
						. TLDR: all of your feeds and posts that you read are encrypted
44
						locally and synced via cryptographic keypairs. Even if we wanted to
45
						read your stuff, we can't.
46
					</p>
47
					<p className="text-sm text-muted-foreground">
48
						Due to how the encryption works, it is critical that you backup your
49
						account passphrase to a secure location like a password manager. If
50
						you clear your local browser data there is no way for us to recover
51
						your account or feeds, and you will need to make a new one. You can
52
						back it up in the settings page.
53
					</p>
54
					<p className="text-sm text-muted-foreground">
55
						Alcove is{" "}
56
						<a
57
							className="underline"
58
							href="https://github.com/stevedylandev/alcove"
59
							target="_blank"
60
							rel="noreferrer"
61
						>
62
							MIT open sourced
63
						</a>{" "}
64
						and run by{" "}
65
						<a
66
							className="underline"
67
							href="https://stevedylan.dev"
68
							target="_blank"
69
							rel="noreferrer"
70
						>
71
							Steve
72
						</a>
73
						.
74
					</p>
75
				</div>
76
			</DialogContent>
77
		</Dialog>
78
	);
79
}