diff --git a/package.json b/package.json index 9c3da4d..c716daf 100644 --- a/package.json +++ b/package.json @@ -15,6 +15,7 @@ "@astrojs/tailwind": "^5.1.0", "@calcom/embed-react": "^1.5.0", "@fontsource/inter": "^5.0.19", + "@fontsource/jetbrains-mono": "^5.2.6", "@fontsource/plus-jakarta-sans": "^5.0.20", "astro": "^4.12.1", "astro-seo": "^0.8.4", diff --git a/public/assets/logo.png b/public/assets/logo.png new file mode 100644 index 0000000..e398b7e Binary files /dev/null and b/public/assets/logo.png differ diff --git a/src/assets/icons/Download.jsx b/src/assets/icons/Download.jsx new file mode 100644 index 0000000..bc64991 --- /dev/null +++ b/src/assets/icons/Download.jsx @@ -0,0 +1,6 @@ + +export const Download = ({ size = 24 }) => ( + + + +) \ No newline at end of file diff --git a/src/assets/icons/PlayButton.jsx b/src/assets/icons/PlayButton.jsx index 68898e8..0b11b75 100644 --- a/src/assets/icons/PlayButton.jsx +++ b/src/assets/icons/PlayButton.jsx @@ -1,5 +1,5 @@ import React from "react"; -export const PlayButton = () => ( +export const PlayButton = ({ color = "#89B4FA" }) => ( ( fillRule="evenodd" clipRule="evenodd" d="M2 12C2 17.515 6.485 22 12 22C17.515 22 22 17.515 22 12C22 6.485 17.515 2 12 2C6.485 2 2 6.485 2 12ZM3.5 12C3.5 7.315 7.315 3.5 12 3.5C16.685 3.5 20.5 7.315 20.5 12C20.5 16.685 16.685 20.5 12 20.5C7.315 20.5 3.5 16.685 3.5 12ZM9.625 16.215C9.82 16.33 10.035 16.385 10.25 16.385V16.38C10.465 16.38 10.68 16.325 10.875 16.21L16.3 13.075C16.69 12.85 16.925 12.44 16.925 11.995C16.925 11.55 16.685 11.135 16.3 10.91L10.875 7.77501C10.485 7.55001 10.015 7.55001 9.625 7.77501C9.235 8.00501 9 8.41001 9 8.86001V15.13C9 15.585 9.235 15.99 9.625 16.215ZM10.5 14.7V9.30001L15.175 12L10.5 14.7Z" - fill="#89B4FA" + fill={color} /> diff --git a/src/assets/images/art.png b/src/assets/images/art.png new file mode 100644 index 0000000..7085c71 Binary files /dev/null and b/src/assets/images/art.png differ diff --git a/src/assets/images/art.webp b/src/assets/images/art.webp new file mode 100644 index 0000000..9585fe1 Binary files /dev/null and b/src/assets/images/art.webp differ diff --git a/src/assets/images/livnote.png b/src/assets/images/livnote.png new file mode 100644 index 0000000..71fcc7a Binary files /dev/null and b/src/assets/images/livnote.png differ diff --git a/src/assets/images/livnote.webp b/src/assets/images/livnote.webp new file mode 100644 index 0000000..86841ce Binary files /dev/null and b/src/assets/images/livnote.webp differ diff --git a/src/assets/images/livnotethumb.png b/src/assets/images/livnotethumb.png new file mode 100644 index 0000000..bd63750 Binary files /dev/null and b/src/assets/images/livnotethumb.png differ diff --git a/src/assets/images/osvauldthumb.png b/src/assets/images/osvauldthumb.png new file mode 100644 index 0000000..cedd755 Binary files /dev/null and b/src/assets/images/osvauldthumb.png differ diff --git a/src/assets/images/sharing.webm b/src/assets/images/sharing.webm deleted file mode 100644 index 480dfdc..0000000 Binary files a/src/assets/images/sharing.webm and /dev/null differ diff --git a/src/assets/images/thumbnail.webp b/src/assets/images/thumbnail.webp deleted file mode 100644 index 970c62d..0000000 Binary files a/src/assets/images/thumbnail.webp and /dev/null differ diff --git a/src/components/DownloadButton.jsx b/src/components/DownloadButton.jsx new file mode 100644 index 0000000..cd58a8d --- /dev/null +++ b/src/components/DownloadButton.jsx @@ -0,0 +1,118 @@ +import React, { useState, useEffect } from "react"; +import { Download } from "../assets/icons/Download"; + +const DownloadButton = () => { + const [platform, setPlatform] = useState("unknown"); + const [showDropdown, setShowDropdown] = useState(false); + + // Download URLs for different platforms + const downloadUrls = { + mac: "https://github.com/osvauld/osvauld/releases/download/alpha/osvauld_0.1.0_aarch64.dmg", // Replace with actual URL + linux: "https://github.com/osvauld/osvauld/releases/download/alpha/osvauld_0.1.0_amd64.deb", // Replace with actual URL + fedora: "https://github.com/osvauld/osvauld/releases/download/alpha/osvauld-0.1.0-1.x86_64.rpm", // Replace with actual URL + windows: "https://github.com/osvauld/osvauld/releases/download/alpha/osvauld_0.1.0_x64-setup.exe", // Replace with actual URL + }; + + // Platform names for display + const platformNames = { + mac: "Mac (Apple Silicon)", + linux: "Linux (Debian)", + fedora: "Linux (Fedora)", + windows: "Windows", + }; + + useEffect(() => { + // Detect user's platform + const userAgent = navigator.userAgent.toLowerCase(); + const platform = navigator.platform.toLowerCase(); + + if (userAgent.includes("mac")) { + setPlatform("mac"); + } else if (userAgent.includes("linux")) { + // Try to detect if it's Fedora or Debian-based + // This is a simplified detection - you might want to enhance this + if (userAgent.includes("fedora")) { + setPlatform("fedora"); + } else { + setPlatform("linux"); + } + } else if (userAgent.includes("windows")) { + setPlatform("windows"); + } else { + setPlatform("unknown"); + } + }, []); + + const handleDownload = (selectedPlatform = platform) => { + if (selectedPlatform !== "unknown" && downloadUrls[selectedPlatform]) { + // Create a temporary anchor element to trigger download + const downloadUrl = downloadUrls[selectedPlatform]; + const link = document.createElement('a'); + link.href = downloadUrl; + link.download = downloadUrl.split('/').pop(); // Extract filename from URL + document.body.appendChild(link); + link.click(); + document.body.removeChild(link); + setShowDropdown(false); + } else { + // Show dropdown for manual selection + setShowDropdown(true); + } + }; + + const handlePlatformSelect = (selectedPlatform) => { + handleDownload(selectedPlatform); + }; + + return ( +
+ + + + {/* Dropdown for platform selection */} + {showDropdown && ( +
+
+
+ Choose your platform: +
+ {Object.entries(platformNames).map(([key, name]) => ( + + ))} +
+
+ )} + + {/* Backdrop to close dropdown */} + {showDropdown && ( +
setShowDropdown(false)} + /> + )} +
+ ); +}; + +export default DownloadButton; \ No newline at end of file diff --git a/src/components/FooterV2.jsx b/src/components/FooterV2.jsx index 41aa09c..c1589e3 100644 --- a/src/components/FooterV2.jsx +++ b/src/components/FooterV2.jsx @@ -1,16 +1,16 @@ import { motion } from "framer-motion"; import { DiscordIcon } from "../assets/icons/DiscordIcon"; -import { LinktreeIcon } from "../assets/icons/LinktreeIcon"; -import { LinkdinIcon } from "../assets/icons/LinkdinIcon"; -import { InstagramIcon } from "../assets/icons/InstagramIcon"; import { GithubIcon } from "../assets/icons/GithubIcon"; import { FooterOsvauld } from "../assets/logos/FooterOsvauld"; -import Matrix from "../assets/logos/Matrix"; -import Docker from "../assets/logos/Docker"; -import Twitter from "../assets/logos/Twitter"; -import Mastodon from "../assets/logos/Mastodon"; -export const Footer = () => { +export const Footer = ({ isLivnote }) => { + const heading = isLivnote + ? "Notes that live with you." + : "Protecting what matters the most."; + const buttonText = isLivnote ? "Explore Livnote" : "Join Waitlist"; + const buttonLink = isLivnote + ? "https://github.com/osvauld/osvauld" + : "https://getwaitlist.com/waitlist/14960"; return ( { viewport={{ once: true }} transition={{ duration: 0.5, delay: 0.2 }} > -
+