diff --git a/apps/marketing/public/Logo-bold.png b/apps/marketing/public/Logo-bold.png new file mode 100644 index 0000000..0bbe5e0 Binary files /dev/null and b/apps/marketing/public/Logo-bold.png differ diff --git a/apps/marketing/public/app.webp b/apps/marketing/public/app.webp new file mode 100644 index 0000000..40cc5d2 Binary files /dev/null and b/apps/marketing/public/app.webp differ diff --git a/apps/marketing/public/favicon.ico b/apps/marketing/public/favicon.ico new file mode 100644 index 0000000..3cdfa6b Binary files /dev/null and b/apps/marketing/public/favicon.ico differ diff --git a/apps/marketing/public/logo.svg b/apps/marketing/public/logo.svg new file mode 100644 index 0000000..f5ff6fa --- /dev/null +++ b/apps/marketing/public/logo.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/apps/marketing/public/next.svg b/apps/marketing/public/next.svg deleted file mode 100644 index 5174b28..0000000 --- a/apps/marketing/public/next.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/apps/marketing/public/vercel.svg b/apps/marketing/public/vercel.svg deleted file mode 100644 index d2f8422..0000000 --- a/apps/marketing/public/vercel.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/apps/marketing/src/app/favicon.ico b/apps/marketing/src/app/favicon.ico deleted file mode 100644 index 4570eb8..0000000 Binary files a/apps/marketing/src/app/favicon.ico and /dev/null differ diff --git a/apps/marketing/src/app/layout.tsx b/apps/marketing/src/app/layout.tsx index fa66b1e..f0569e3 100644 --- a/apps/marketing/src/app/layout.tsx +++ b/apps/marketing/src/app/layout.tsx @@ -7,7 +7,8 @@ const inter = Inter({ subsets: ["latin"] }); export const metadata: Metadata = { title: "Unsend", - description: "Open source sending infrastructure", + description: "Open source sending infrastructure for developers", + icons: [{ rel: "icon", url: "/favicon.ico" }], }; export default function RootLayout({ diff --git a/apps/marketing/src/app/page.tsx b/apps/marketing/src/app/page.tsx index 2f5f9ac..7e68d14 100644 --- a/apps/marketing/src/app/page.tsx +++ b/apps/marketing/src/app/page.tsx @@ -1,4 +1,4 @@ -"use client" +"use client"; import { motion } from "framer-motion"; import { @@ -21,27 +21,26 @@ import { ListOrdered, } from "lucide-react"; import { formatDate } from "date-fns"; -import { Code } from "@unsend/ui/src/code" -import { hi } from "date-fns/locale"; - +import { Code } from "@unsend/ui/src/code"; +import Link from "next/link"; +import Image from "next/image"; const jsCode = `const requestOptions = { method: "POST", headers: { "Accept": "application/json", "Content-Type": "application/json", - "Authorization": "Bearer us_ad9a79256e366399c747cbf0b38eca3c472e8a2e" + "Authorization": "Bearer us_1a2b3c4d5e6f7f8g" }, body: JSON.stringify({ - "to": "koushikmohan1996@gmail.com", - "from": "hello@test.splitpro.app", - "subject": "Test mail", - "html": "

Hello this is a test mail

" + "to": "test@company.com", + "from": "hello@unsend.dev", + "subject": "Unsend email", + "html": "

Unsend is the best open source product to send emails

" }), - redirect: "follow" }; -fetch("http://localhost:3000/api/v1/emails", requestOptions) +fetch("http://unsend.dev/api/v1/emails", requestOptions) .then(response => response.text()) .then(result => console.log(result)) .catch(error => console.error(error)); @@ -50,18 +49,18 @@ fetch("http://localhost:3000/api/v1/emails", requestOptions) const pythonCode = `import requests import json -url = "http://localhost:3000/api/v1/emails" +url = "http://unsend.dev/api/v1/emails" payload = json.dumps({ - "to": "koushikmohan1996@gmail.com", - "from": "hello@test.splitpro.app", - "subject": "Test mail", - "html": "

Hello this is a test mail

" + "to": "test@company.com", + "from": "hello@unsend.dev", + "subject": "Unsend email", + "html": "

Unsend is the best open source product to send emails

" }) headers = { 'Accept': 'application/json', 'Content-Type': 'application/json', - 'Authorization': 'Bearer us_ad9a79256e366399c747cbf0b38eca3c472e8a2e' + 'Authorization': 'Bearer us_1a2b3c4d5e6f7f8g' } response = requests.request("POST", url, headers=headers, data=payload) @@ -72,36 +71,36 @@ const rubyCode = `require 'uri' require 'net/http' require 'json' -url = URI("http://localhost:3000/api/v1/emails") +url = URI("http://unsend.dev/api/v1/emails") http = Net::HTTP.new(url.host, url.port) request = Net::HTTP::Post.new(url) request["Accept"] = 'application/json' request["Content-Type"] = 'application/json' -request["Authorization"] = 'Bearer us_ad9a79256e366399c747cbf0b38eca3c472e8a2e' +request["Authorization"] = 'Bearer us_1a2b3c4d5e6f7f8g' request.body = JSON.dump({ - "to" => "koushikmohan1996@gmail.com", - "from" => "hello@test.splitpro.app", - "subject" => "Test mail", - "html" => "

Hello this is a test mail

" + "to" => "test@company.com", + "from" => "hello@unsend.dev", + "subject" => "Unsend email", + "html" => "

Unsend is the best open source product to send emails

" }) response = http.request(request) puts response.read_body`; -const phpCode = `$url = "http://localhost:3000/api/v1/emails"; +const phpCode = `$url = "http://unsend.dev/api/v1/emails"; $payload = json_encode(array( - "to" => "koushikmohan1996@gmail.com", - "from" => "hello@test.splitpro.app", - "subject" => "Test mail", - "html" => "

Hello this is a test mail

" + "to" => "test@company.com", + "from" => "hello@unsend.dev", + "subject" => "Unsend email", + "html" => "

Unsend is the best open source product to send emails

" )); $headers = array( "Accept: application/json", "Content-Type: application/json", - "Authorization: Bearer us_ad9a79256e366399c747cbf0b38eca3c472e8a2e" + "Authorization: Bearer us_1a2b3c4d5e6f7f8g" ); $ch = curl_init($url); @@ -117,13 +116,54 @@ if (curl_errno($ch)) { echo $response; }`; +const cUrl = `curl --location 'https://unsend.dev/v1/emails' \\ +--header 'Accept: application/json' \\ +--header 'Content-Type: application/json' \\ +--header 'Authorization: Bearer us_44c1071bd30058322f89a09805522d7341a47b5e' \\ +--data-raw '{ + "to": "test@company.com", + "from": "hello@unsend.dev", + "subject": "Unsend email", + "html": "

Unsend is the best open source product to send emails

", +}'`; export default function Home() { return (
-
-
-

+
+ +
+

Open source sending infrastructure for{" "} developers @@ -148,9 +188,30 @@ export default function Home() {

+ + App + + {/* */}

-
+

Reach your users

@@ -176,6 +237,7 @@ export default function Home() { damping: 15, stiffness: 100, type: "spring", + delay: 0.3, }} viewport={{ once: true }} className="flex flex-col gap-4" @@ -214,7 +276,7 @@ export default function Home() { damping: 15, stiffness: 100, type: "spring", - delay: 0.3, + delay: 0.6, }} viewport={{ once: true }} > @@ -278,6 +340,7 @@ export default function Home() { stiffness: 100, delayChildren: 0.5, staggerChildren: 0.05, + delay: 0.3, }} viewport={{ once: true }} className="w-full rounded-lg border" @@ -393,7 +456,6 @@ export default function Home() {

SMS & Push notification

-
-
{'Coming soon!'.split('').map((l, i) => ( - {l} - ))}
+
+ {"Coming soon!".split("").map((l, i) => ( + + {l} + + ))} +
-

Integrate in minutes

- + Integrate in minutes +

+ {/* + delay: 0.2, + }} + > */} +
- +
+ {/*
*/}
- -
@@ -468,6 +539,37 @@ export default function Home() {
+
+
+ Email: hello@unsend.dev +
+
+ + + + + + + + + + + {/* Github */} +
+
); } diff --git a/apps/web/public/Logo-1.png b/apps/web/public/Logo-1.png deleted file mode 100644 index a238f96..0000000 Binary files a/apps/web/public/Logo-1.png and /dev/null differ diff --git a/apps/web/public/Logo-2.png b/apps/web/public/Logo-2.png deleted file mode 100644 index a0b3266..0000000 Binary files a/apps/web/public/Logo-2.png and /dev/null differ diff --git a/apps/web/public/Logo-bold.png b/apps/web/public/Logo-bold.png new file mode 100644 index 0000000..0bbe5e0 Binary files /dev/null and b/apps/web/public/Logo-bold.png differ diff --git a/apps/web/public/Logo.png b/apps/web/public/Logo.png new file mode 100644 index 0000000..f23d99d Binary files /dev/null and b/apps/web/public/Logo.png differ diff --git a/apps/web/public/favicon.ico b/apps/web/public/favicon.ico index 60c702a..3cdfa6b 100644 Binary files a/apps/web/public/favicon.ico and b/apps/web/public/favicon.ico differ diff --git a/apps/web/public/favicon_io/android-chrome-192x192.png b/apps/web/public/favicon_io/android-chrome-192x192.png new file mode 100644 index 0000000..f14ebea Binary files /dev/null and b/apps/web/public/favicon_io/android-chrome-192x192.png differ diff --git a/apps/web/public/favicon_io/android-chrome-512x512.png b/apps/web/public/favicon_io/android-chrome-512x512.png new file mode 100644 index 0000000..52d4367 Binary files /dev/null and b/apps/web/public/favicon_io/android-chrome-512x512.png differ diff --git a/apps/web/public/favicon_io/apple-touch-icon.png b/apps/web/public/favicon_io/apple-touch-icon.png new file mode 100644 index 0000000..a7f2f3b Binary files /dev/null and b/apps/web/public/favicon_io/apple-touch-icon.png differ diff --git a/apps/web/public/favicon_io/favicon-16x16.png b/apps/web/public/favicon_io/favicon-16x16.png new file mode 100644 index 0000000..8b52bb6 Binary files /dev/null and b/apps/web/public/favicon_io/favicon-16x16.png differ diff --git a/apps/web/public/favicon_io/favicon-32x32.png b/apps/web/public/favicon_io/favicon-32x32.png new file mode 100644 index 0000000..c99b13f Binary files /dev/null and b/apps/web/public/favicon_io/favicon-32x32.png differ diff --git a/apps/web/public/favicon_io/favicon.ico b/apps/web/public/favicon_io/favicon.ico new file mode 100644 index 0000000..3cdfa6b Binary files /dev/null and b/apps/web/public/favicon_io/favicon.ico differ diff --git a/apps/web/public/favicon_io/site.webmanifest b/apps/web/public/favicon_io/site.webmanifest new file mode 100644 index 0000000..45dc8a2 --- /dev/null +++ b/apps/web/public/favicon_io/site.webmanifest @@ -0,0 +1 @@ +{"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"} \ No newline at end of file diff --git a/apps/web/public/logo.svg b/apps/web/public/logo.svg new file mode 100644 index 0000000..f5ff6fa --- /dev/null +++ b/apps/web/public/logo.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/apps/web/public/unsend_white_logo.png b/apps/web/public/unsend_white_logo.png deleted file mode 100644 index 0e773b5..0000000 Binary files a/apps/web/public/unsend_white_logo.png and /dev/null differ diff --git a/apps/web/public/unsend_white_new.png b/apps/web/public/unsend_white_new.png deleted file mode 100644 index 7f4a664..0000000 Binary files a/apps/web/public/unsend_white_new.png and /dev/null differ diff --git a/apps/web/src/app/(dashboard)/emails/email-status-badge.tsx b/apps/web/src/app/(dashboard)/emails/email-status-badge.tsx index 674c544..5739f8e 100644 --- a/apps/web/src/app/(dashboard)/emails/email-status-badge.tsx +++ b/apps/web/src/app/(dashboard)/emails/email-status-badge.tsx @@ -12,13 +12,13 @@ export const EmailStatusBadge: React.FC<{ status: EmailStatus }> = ({ badgeColor = "bg-emerald-500/10 text-emerald-500 border-emerald-600/10"; break; case "BOUNCED": - badgeColor = "bg-red-500/10 text-red-600 border-red-600/10"; + badgeColor = "bg-red-500/30 text-red-600 border-red-600/10"; break; case "CLICKED": - badgeColor = "bg-cyan-500/10 text-cyan-600 border-cyan-600/10"; + badgeColor = "bg-cyan-500/10 text-cyan-500 border-cyan-600/10"; break; case "OPENED": - badgeColor = "bg-indigo-500/10 text-indigo-600 border-indigo-600/10"; + badgeColor = "bg-indigo-500/20 text-indigo-500 border-indigo-600/10"; break; case "DELIVERY_DELAYED": badgeColor = "bg-yellow-500/10 text-yellow-600 border-yellow-600/10"; diff --git a/apps/web/src/app/(dashboard)/layout.tsx b/apps/web/src/app/(dashboard)/layout.tsx index fa89c81..0bb6d49 100644 --- a/apps/web/src/app/(dashboard)/layout.tsx +++ b/apps/web/src/app/(dashboard)/layout.tsx @@ -37,7 +37,7 @@ import { NavButton } from "./nav-button"; export const metadata = { title: "Unsend", - description: "Generated by create-t3-app", + description: "Open source sending infrastructure for developers", icons: [{ rel: "icon", url: "/favicon.ico" }], }; @@ -59,9 +59,7 @@ export default async function AuthenticatedDashboardLayout({
- Unsend - - Unsend + Unsend
@@ -91,7 +89,7 @@ export default async function AuthenticatedDashboardLayout({ Marketing - + {/* SMS @@ -99,7 +97,7 @@ export default async function AuthenticatedDashboardLayout({ Push notification - + */} diff --git a/packages/ui/src/code.tsx b/packages/ui/src/code.tsx index c23512f..5922087 100644 --- a/packages/ui/src/code.tsx +++ b/packages/ui/src/code.tsx @@ -11,7 +11,7 @@ import { ClipboardCopy, Check } from "lucide-react"; import { useState } from "react"; import { cn } from "../lib/utils"; -type Language = "js" | "ruby" | "php" | "python"; +type Language = "js" | "ruby" | "php" | "python" | "curl"; type CodeProps = { codeBlocks: { @@ -85,7 +85,7 @@ export const Code: React.FC = ({ codeBlocks, codeClassName }) => { value={block.language} className="mt-0" > -
+
{block.code}