Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
51 changes: 27 additions & 24 deletions apps/mail/app/(full-width)/privacy/page.tsx
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
"use client";

import { useCopyToClipboard } from "@/hooks/use-copy-to-clipboard";
import { Card, CardHeader, CardTitle } from "@/components/ui/card";
import { Github, Mail, ArrowLeft, Link2 } from "lucide-react";
import { Button } from "@/components/ui/button";
import { useRouter } from "next/navigation";
import React from "react";
import Footer from "@/components/home/footer";
import { toast } from "sonner";
import { useCopyToClipboard } from "@/hooks/useCopyToClipboard";
import { createSectionId } from "@/lib/utils";
import { useRouter } from "next/navigation";
import { toast } from "sonner";
import React from "react";

const LAST_UPDATED = "February 13, 2025";

Expand All @@ -22,14 +22,14 @@ export default function PrivacyPolicy() {
};

return (
<div className="relative flex flex-col min-h-screen w-full overflow-auto bg-white dark:bg-black">
<div className="relative z-10 flex-grow flex flex-col">
<div className="relative flex min-h-screen w-full flex-col overflow-auto bg-white dark:bg-black">
<div className="relative z-10 flex flex-grow flex-col">
<div className="absolute left-4 top-4 md:left-8 md:top-8">
<Button
variant="ghost"
size="sm"
className="gap-2 text-gray-600 hover:text-gray-900 dark:text-muted-foreground dark:hover:text-white"
onClick={() => router.push('/')}
className="dark:text-muted-foreground gap-2 text-gray-600 hover:text-gray-900 dark:hover:text-white"
onClick={() => router.push("/")}
>
<ArrowLeft className="h-4 w-4" />
Back
Expand All @@ -40,9 +40,13 @@ export default function PrivacyPolicy() {
<Card className="overflow-hidden rounded-xl border-none bg-gray-50/80 shadow-xl backdrop-blur-lg dark:bg-black/40">
<CardHeader className="space-y-4 bg-gray-100/90 px-8 py-8 dark:bg-black/60">
<div className="space-y-2 text-center">
<CardTitle className="text-3xl font-bold tracking-tight text-gray-900 dark:text-white md:text-4xl">Privacy Policy</CardTitle>
<CardTitle className="text-3xl font-bold tracking-tight text-gray-900 md:text-4xl dark:text-white">
Privacy Policy
</CardTitle>
<div className="flex items-center justify-center gap-2">
<p className="text-sm text-gray-500 dark:text-muted-foreground">Last updated: {LAST_UPDATED}</p>
<p className="dark:text-muted-foreground text-sm text-gray-500">
Last updated: {LAST_UPDATED}
</p>
</div>
</div>
</CardHeader>
Expand All @@ -57,26 +61,27 @@ export default function PrivacyPolicy() {
className="group rounded-xl border border-gray-200 bg-white/70 p-6 transition-all hover:border-gray-300 hover:bg-white dark:border-gray-800/10 dark:bg-black/20 dark:hover:border-gray-700/30 dark:hover:bg-black/30"
>
<div className="mb-4 flex items-center justify-between">
<h2 className="text-xl font-semibold tracking-tight text-gray-900 dark:text-white">{section.title}</h2>
<button
<h2 className="text-xl font-semibold tracking-tight text-gray-900 dark:text-white">
{section.title}
</h2>
<button
onClick={() => handleCopyLink(sectionId)}
className="text-gray-400 transition-all hover:text-gray-700 dark:text-muted-foreground dark:hover:text-white"
className="dark:text-muted-foreground text-gray-400 transition-all hover:text-gray-700 dark:hover:text-white"
aria-label={`Copy link to ${section.title} section`}
>
<Link2
className={`h-4 w-4 ${copiedSection === sectionId ? 'text-green-500 dark:text-green-400' : ''}`}
<Link2
className={`h-4 w-4 ${copiedSection === sectionId ? "text-green-500 dark:text-green-400" : ""}`}
/>
</button>
</div>
<div className="prose prose-sm max-w-none text-gray-700 prose-a:text-blue-600 prose-a:no-underline hover:prose-a:text-blue-800 dark:prose-invert dark:text-gray-300 dark:prose-a:text-blue-300 dark:hover:prose-a:text-blue-200">
<div className="prose prose-sm prose-a:text-blue-600 prose-a:no-underline hover:prose-a:text-blue-800 dark:prose-invert dark:prose-a:text-blue-300 dark:hover:prose-a:text-blue-200 max-w-none text-gray-700 dark:text-gray-300">
{section.content}
</div>
</div>
);
})}

<div className="mt-12 flex flex-wrap items-center justify-center gap-4">
</div>
<div className="mt-12 flex flex-wrap items-center justify-center gap-4"></div>
</div>
</Card>
</div>
Expand All @@ -92,9 +97,9 @@ const sections = [
title: "Our Commitment to Privacy",
content: (
<p>
At Zero, we believe that privacy is a fundamental right. Our open-source email solution
is built with privacy at its core, and we&apos;re committed to being transparent about how
we handle your data.
At Zero, we believe that privacy is a fundamental right. Our open-source email solution is
built with privacy at its core, and we&apos;re committed to being transparent about how we
handle your data.
</p>
),
},
Expand Down Expand Up @@ -139,9 +144,7 @@ const sections = [
<div>
<h3 className="mb-3 text-lg font-medium">Self-Hosted Instances</h3>
<ul className="ml-4 list-disc space-y-2">
<li>
When you self-host Zero, your email data remains entirely under your control
</li>
<li>When you self-host Zero, your email data remains entirely under your control</li>
<li>No data is sent to our servers or third parties without your explicit consent</li>
<li>You maintain complete ownership and responsibility for your data</li>
</ul>
Expand Down
58 changes: 31 additions & 27 deletions apps/mail/app/(full-width)/terms/page.tsx
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
"use client";

import { useCopyToClipboard } from "@/hooks/use-copy-to-clipboard";
import { Card, CardHeader, CardTitle } from "@/components/ui/card";
import { Github, ArrowLeft, Link2 } from "lucide-react";
import { Button } from "@/components/ui/button";
import { useRouter } from "next/navigation";
import React from "react";
import Footer from "@/components/home/footer";
import { toast } from "sonner";
import { useCopyToClipboard } from "@/hooks/useCopyToClipboard";
import { createSectionId } from "@/lib/utils";
import { useRouter } from "next/navigation";
import { toast } from "sonner";
import React from "react";

const LAST_UPDATED = "February 13, 2025";

Expand All @@ -22,15 +22,15 @@ export default function TermsOfService() {
};

return (
<div className="relative flex flex-col min-h-screen w-full overflow-auto bg-white dark:bg-black">
<div className="relative z-10 flex-grow flex flex-col">
<div className="relative flex min-h-screen w-full flex-col overflow-auto bg-white dark:bg-black">
<div className="relative z-10 flex flex-grow flex-col">
{/* Back Button */}
<div className="absolute left-4 top-4 md:left-8 md:top-8">
<Button
variant="ghost"
size="sm"
className="gap-2 text-gray-600 hover:text-gray-900 dark:text-muted-foreground dark:hover:text-white"
onClick={() => router.push('/')}
className="dark:text-muted-foreground gap-2 text-gray-600 hover:text-gray-900 dark:hover:text-white"
onClick={() => router.push("/")}
>
<ArrowLeft className="h-4 w-4" />
Back
Expand All @@ -41,9 +41,13 @@ export default function TermsOfService() {
<Card className="overflow-hidden rounded-xl border-none bg-gray-50/80 shadow-xl backdrop-blur-lg dark:bg-black/40">
<CardHeader className="space-y-4 bg-gray-100/90 px-8 py-8 dark:bg-black/60">
<div className="space-y-2 text-center">
<CardTitle className="text-3xl font-bold tracking-tight text-gray-900 dark:text-white md:text-4xl">Terms of Service</CardTitle>
<CardTitle className="text-3xl font-bold tracking-tight text-gray-900 md:text-4xl dark:text-white">
Terms of Service
</CardTitle>
<div className="flex items-center justify-center gap-2">
<p className="text-sm text-gray-500 dark:text-muted-foreground">Last updated: {LAST_UPDATED}</p>
<p className="dark:text-muted-foreground text-sm text-gray-500">
Last updated: {LAST_UPDATED}
</p>
</div>
</div>
</CardHeader>
Expand All @@ -58,26 +62,27 @@ export default function TermsOfService() {
className="group rounded-xl border border-gray-200 bg-white/70 p-6 transition-all hover:border-gray-300 hover:bg-white dark:border-gray-800/10 dark:bg-black/20 dark:hover:border-gray-700/30 dark:hover:bg-black/30"
>
<div className="mb-4 flex items-center justify-between">
<h2 className="text-xl font-semibold tracking-tight text-gray-900 dark:text-white">{section.title}</h2>
<button
<h2 className="text-xl font-semibold tracking-tight text-gray-900 dark:text-white">
{section.title}
</h2>
<button
onClick={() => handleCopyLink(sectionId)}
className="text-gray-400 transition-all hover:text-gray-700 dark:text-muted-foreground dark:hover:text-white"
className="dark:text-muted-foreground text-gray-400 transition-all hover:text-gray-700 dark:hover:text-white"
aria-label={`Copy link to ${section.title} section`}
>
<Link2
className={`h-4 w-4 ${copiedSection === sectionId ? 'text-green-500 dark:text-green-400' : ''}`}
<Link2
className={`h-4 w-4 ${copiedSection === sectionId ? "text-green-500 dark:text-green-400" : ""}`}
/>
</button>
</div>
<div className="prose prose-sm max-w-none text-gray-700 prose-a:text-blue-600 prose-a:no-underline hover:prose-a:text-blue-800 dark:prose-invert dark:text-gray-300 dark:prose-a:text-blue-300 dark:hover:prose-a:text-blue-200">
<div className="prose prose-sm prose-a:text-blue-600 prose-a:no-underline hover:prose-a:text-blue-800 dark:prose-invert dark:prose-a:text-blue-300 dark:hover:prose-a:text-blue-200 max-w-none text-gray-700 dark:text-gray-300">
{section.content}
</div>
</div>
);
})}

<div className="mt-12 flex flex-wrap items-center justify-center gap-4">
</div>
<div className="mt-12 flex flex-wrap items-center justify-center gap-4"></div>
</div>
</Card>
</div>
Expand All @@ -93,9 +98,8 @@ const sections = [
title: "Overview",
content: (
<p>
0.email is an open-source email solution that enables users to self-host their email
service or integrate with external email providers. By using 0.email, you agree to these
terms.
0.email is an open-source email solution that enables users to self-host their email service
or integrate with external email providers. By using 0.email, you agree to these terms.
</p>
),
},
Expand All @@ -104,15 +108,15 @@ const sections = [
content: (
<div className="space-y-8">
<div>
<h3 className="mb-3 text-xl font-medium text-card-foreground">Self-Hosted Service</h3>
<h3 className="text-card-foreground mb-3 text-xl font-medium">Self-Hosted Service</h3>
<ul className="ml-4 list-disc space-y-2">
<li>0.email provides software that users can deploy on their own infrastructure</li>
<li>Users are responsible for their own hosting, maintenance, and compliance</li>
<li>The software is provided &quot;as is&quot; under the MIT License</li>
</ul>
</div>
<div>
<h3 className="mb-3 text-xl font-medium text-card-foreground">
<h3 className="text-card-foreground mb-3 text-xl font-medium">
External Email Integration
</h3>
<ul className="ml-4 list-disc space-y-2">
Expand All @@ -127,7 +131,7 @@ const sections = [
{
title: "User Responsibilities",
content: (
<div className="mt-4 space-y-3 text-muted-foreground">
<div className="text-muted-foreground mt-4 space-y-3">
<p>Users agree to:</p>
<ul className="ml-4 list-disc space-y-2">
<li>Comply with all applicable laws and regulations</li>
Expand All @@ -142,7 +146,7 @@ const sections = [
{
title: "Software License",
content: (
<div className="mt-4 space-y-3 text-muted-foreground">
<div className="text-muted-foreground mt-4 space-y-3">
<p>0.email is licensed under the MIT License:</p>
<ul className="ml-4 list-disc space-y-2">
<li>Users can freely use, modify, and distribute the software</li>
Expand All @@ -155,7 +159,7 @@ const sections = [
{
title: "Community Guidelines",
content: (
<div className="mt-4 space-y-3 text-muted-foreground">
<div className="text-muted-foreground mt-4 space-y-3">
<p>Users participating in our community agree to:</p>
<ul className="ml-4 list-disc space-y-2">
<li>Follow our code of conduct</li>
Expand All @@ -169,7 +173,7 @@ const sections = [
{
title: "Contact Information",
content: (
<div className="mt-4 space-y-3 text-muted-foreground">
<div className="text-muted-foreground mt-4 space-y-3">
<p>For questions about these terms:</p>
<div className="flex flex-col space-y-2">
<a
Expand Down
2 changes: 1 addition & 1 deletion apps/mail/app/(routes)/settings/connections/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,10 @@ import {
import { Tooltip, TooltipContent, TooltipTrigger } from "@/components/ui/tooltip";
import { SettingsCard } from "@/components/settings/settings-card";
import { AddConnectionDialog } from "@/components/connection/add";
import { emailProviders } from "@/constants/emailProviders";
import { useConnections } from "@/hooks/use-connections";
import { deleteConnection } from "@/actions/connections";
import { Skeleton } from "@/components/ui/skeleton";
import { emailProviders } from "@/lib/constants";
import { Button } from "@/components/ui/button";
import { useSession } from "@/lib/auth-client";
import { useTranslations } from "next-intl";
Expand Down
4 changes: 2 additions & 2 deletions apps/mail/components/connection/add.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@ import {
DialogTitle,
DialogTrigger,
} from "../ui/dialog";
import { emailProviders } from "@/constants/emailProviders";
import { emailProviders } from "@/lib/constants";
import { Plus, UserPlus } from "lucide-react";
import { useTranslations } from "next-intl";
import { motion } from "motion/react";
import { Button } from "../ui/button";
import { motion } from "motion/react";
import { cn } from "@/lib/utils";

export const AddConnectionDialog = ({
Expand Down
2 changes: 1 addition & 1 deletion apps/mail/components/mail/empty-state.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@ import {
Send,
Trash2,
} from "lucide-react";
import { emailProviders } from "@/constants/emailProviders";
import { useConnections } from "@/hooks/use-connections";
import { emailProviders } from "@/lib/constants";
import { Button } from "@/components/ui/button";
import { cn } from "@/lib/utils";
import { useMemo } from "react";
Expand Down
Empty file removed apps/mail/config/site-config.ts
Empty file.
7 changes: 0 additions & 7 deletions apps/mail/constants/emailProviders.ts

This file was deleted.

76 changes: 0 additions & 76 deletions apps/mail/db/migrations/0000_spotty_starhawk.sql

This file was deleted.

Loading