diff --git a/promo/public/gallery/store.png b/promo/public/gallery/store.png index 0270e9d8..7a594d27 100644 Binary files a/promo/public/gallery/store.png and b/promo/public/gallery/store.png differ diff --git a/promo/src/app/about/page.tsx b/promo/src/app/about/page.tsx index 57a06903..99e20f93 100644 --- a/promo/src/app/about/page.tsx +++ b/promo/src/app/about/page.tsx @@ -25,14 +25,14 @@ function Header() {

Our mission

-

+

We aim to build a "Steam-like experience for DRM-free games". One of the major sticking points of DRM games, and why platforms like Steam have done so well, is that they provide awesome features like worldwide play-together, social features, and useful overlays and tools. We aim to replicate this for any game.

-

+

Don't get us wrong, we don't think Steam or Valve is bad. They are unusually consumer-friendly, and provide a great service. They will always have a place, providing a marketplace for DRM @@ -41,16 +41,16 @@ function Header() {

The Numbers -
+
-
-
Lines of code
+
+
Lines of code
k
-
-
+
+
Individual open-source projects
@@ -59,13 +59,13 @@ function Header() {
-
Docker pulls
+
Docker pulls
k
-
Contributors
+
Contributors
> @@ -91,7 +91,7 @@ function FrequentlyAskedQuestions() {
Do you intend to replace Steam?
-
+
No. Drop is not a replacement for Steam, in the sense that we will ever offer a marketplace for developers to sell games. Drop can replace Steam for an individual, if they only played @@ -102,7 +102,7 @@ function FrequentlyAskedQuestions() {
Will Drop ever cost money or require a subscription?
-
+
We believe in paying for services, not code. All our projects are and always will be open source (AGPLv3), and we endeavour to allow users to self-host as much of it as possible. @@ -114,7 +114,7 @@ function FrequentlyAskedQuestions() {
Is Drop legal?
-
+
Yes. Officially, Drop is only for DRM-free games, like the ones you purchase from GOG or download from itch.io,{' '} and that you have a license to redistribute. We @@ -126,7 +126,7 @@ function FrequentlyAskedQuestions() {
How can I support Drop or get involved?
-
+
Thank you for helping us out! If you're looking to contribute code, check out our{' '} ) { return ( - + {children} diff --git a/promo/src/app/news/[slug]/page.tsx b/promo/src/app/news/[slug]/page.tsx index 873431a1..42380e65 100644 --- a/promo/src/app/news/[slug]/page.tsx +++ b/promo/src/app/news/[slug]/page.tsx @@ -61,7 +61,7 @@ export default async function BlogPost({ className="aspect-square size-6 rounded-full object-cover" /> )} -
{author.name}
+
{author.name}
)} { @@ -69,7 +69,7 @@ export default async function BlogPost({ {tags.map((tag) => (
{tag}
@@ -77,7 +77,7 @@ export default async function BlogPost({ } -
+
{post.image && ( -
+
404 diff --git a/promo/src/app/page.tsx b/promo/src/app/page.tsx index d07260ee..b9bf0c03 100644 --- a/promo/src/app/page.tsx +++ b/promo/src/app/page.tsx @@ -5,8 +5,8 @@ import { Footer } from '@/components/footer' import { Gradient } from '@/components/gradient' import { LogoCluster } from '@/components/logo-cluster' import { Navbar } from '@/components/navbar' -import { Screenshot } from '@/components/screenshot' import { Heading, Subheading } from '@/components/text' +import { ArrowDownCircleIcon } from '@heroicons/react/24/solid' import type { Metadata } from 'next' export const metadata: Metadata = { @@ -21,16 +21,18 @@ function Hero() {
-

+

An open Steam.

-

+

Drop is an open-source, self-hosted alternative to platforms like Steam and Epic.

- - +
@@ -42,18 +44,49 @@ function Hero() { function FeatureSection() { return ( -
- - - A better experience for DRM‑free games. - - - +
+
+
+ Drop OSS + + The ultimate self-hosted game manager. + + +

+ Drop is built from the ground up to be flexible, fast, and + beautiful. It's designed to scale with your library, and handle + thousands of games. +

+
+
+
+
+ App screenshot + +
+
+
+
+
+
{' '} +
ASDASDASDAS
+
+
+
) } @@ -132,7 +165,7 @@ export default function Home() {
-
+
diff --git a/promo/src/app/sponsors/page.tsx b/promo/src/app/sponsors/page.tsx index 5b7435a8..5e1444f4 100644 --- a/promo/src/app/sponsors/page.tsx +++ b/promo/src/app/sponsors/page.tsx @@ -26,7 +26,7 @@ function CTA() {
-

+

If you're looking to give back to the project financially - first off, thank you. It really does help a lot. There are two options for contributing: our OpenCollective, which funds @@ -45,7 +45,6 @@ function CTA() { diff --git a/promo/src/components/bento-card.tsx b/promo/src/components/bento-card.tsx index 0d1262d2..1fe8263f 100644 --- a/promo/src/components/bento-card.tsx +++ b/promo/src/components/bento-card.tsx @@ -29,28 +29,21 @@ export function BentoCard({ data-dark={dark ? 'true' : undefined} className={clsx( className, - 'group relative flex flex-col overflow-hidden rounded-lg', - 'bg-white shadow-xs ring-1 ring-black/5', - 'data-dark:bg-gray-800 data-dark:ring-white/15', + 'group relative flex flex-col overflow-hidden rounded-lg ring-1', + 'bg-zinc-900 ring-white/15', )} >

{graphic} - {fade.includes('top') && ( -
- )} - {fade.includes('bottom') && ( -
- )}
{eyebrow} -

+

{title}

-

+

{description}

diff --git a/promo/src/components/button.tsx b/promo/src/components/button.tsx index d4240c89..05d72c30 100644 --- a/promo/src/components/button.tsx +++ b/promo/src/components/button.tsx @@ -5,22 +5,22 @@ import { Link } from './link' const variants = { primary: clsx( 'inline-flex items-center justify-center px-4 py-[calc(--spacing(2)-1px)]', - 'rounded-full border border-transparent bg-gray-950 shadow-md', + 'rounded-lg border border-transparent bg-gray-950 shadow-md', 'text-base font-medium whitespace-nowrap text-white', 'data-disabled:bg-gray-950 data-disabled:opacity-40 data-hover:bg-gray-800', ), secondary: clsx( 'relative inline-flex items-center justify-center px-4 py-[calc(--spacing(2)-1px)]', - 'rounded-full border border-transparent bg-white/15 shadow-md ring-1 ring-[#D15052]/15', + 'rounded-lg border border-transparent bg-white/15 shadow-md ring-1 ring-[#D15052]/15', 'after:absolute after:inset-0 after:rounded-full after:shadow-[inset_0_0_2px_1px_#ffffff4d]', - 'text-base font-medium whitespace-nowrap text-gray-950', + 'text-base font-medium whitespace-nowrap text-zinc-100', 'data-disabled:bg-white/15 data-disabled:opacity-40 data-hover:bg-white/20', ), outline: clsx( - 'inline-flex items-center justify-center px-2 py-[calc(--spacing(1.5)-1px)]', - 'rounded-lg border border-transparent shadow-sm ring-1 ring-black/10', - 'text-sm font-medium whitespace-nowrap text-gray-950', - 'data-disabled:bg-transparent data-disabled:opacity-40 data-hover:bg-gray-50', + 'inline-flex items-center justify-center px-4 py-[calc(--spacing(1.5)-1px)]', + 'rounded-lg border border-transparent shadow-sm ring-1 ring-white/5', + 'text-sm font-medium whitespace-nowrap text-zinc-100', + 'data-disabled:bg-transparent data-disabled:opacity-40 data-hover:bg-zinc-900', ), } diff --git a/promo/src/components/comparison.tsx b/promo/src/components/comparison.tsx index fec9e2d9..38b6ad4c 100644 --- a/promo/src/components/comparison.tsx +++ b/promo/src/components/comparison.tsx @@ -39,7 +39,7 @@ function GameVaultLogo() { return (
GameVault Logo - +
GameVault+ icon +
coming soon™
) @@ -121,6 +121,7 @@ const projects: Array<{ 'Installer/setup games': true, 'Portable games': true, 'Archives support': 'All 7-zip formats', + 'Automatic import': 'Bulk-import tool', }, Metadata: { 'Additional with plugins': false, @@ -230,7 +231,7 @@ const projects: Array<{ 'Non-versioned layout': true, 'Automatic import': true, 'Archives support': 'All 7-zip formats', - 'Portable games': true + 'Portable games': true, }, Metadata: { IGDB: true, @@ -279,14 +280,14 @@ function Header() { ) } -function PricingCards() { +function ProjectCards() { return (
{projects.map((tier, tierIndex) => ( - + ))}
@@ -294,22 +295,22 @@ function PricingCards() { ) } -function PricingCard({ tier }: { tier: (typeof projects)[number] }) { +function ProjectCard({ tier }: { tier: (typeof projects)[number] }) { return ( -
+
-
+
{tier.logo()}
{tier.name} -

{tier.description}

+

{tier.description}

-

+

Key features:

    @@ -324,10 +325,10 @@ function PricingCard({ tier }: { tier: (typeof projects)[number] }) { ) } -function PricingTable({ - selectedTier: selectedProject, +function ProjectTable({ + selectedProject, }: { - selectedTier: (typeof projects)[number] + selectedProject: (typeof projects)[number] }) { function onlyUnique(value: T, index: number, array: Array) { return array.indexOf(value) === index @@ -385,7 +386,7 @@ function PricingTable({ {selectedProject.name} - + -
    +
    {section}
    @@ -452,11 +453,11 @@ function PricingTable({ {features[section].map((name) => ( {name} @@ -488,7 +489,7 @@ function PricingTable({ ) : ( -
    {value}
    +
    {value}
    )} ) @@ -514,10 +515,10 @@ function FeatureItem({ return (
  • - + {disabled && Coming soon:} {description} @@ -553,8 +554,8 @@ export default function Pricing() {
    - - + +
) diff --git a/promo/src/components/downloads.tsx b/promo/src/components/downloads.tsx index 88b38e9c..fdd0a48d 100644 --- a/promo/src/components/downloads.tsx +++ b/promo/src/components/downloads.tsx @@ -226,14 +226,14 @@ function DownloadCard({ return (
-
+
{data.icon()} {data.name}
-

+

{data.description}

@@ -266,11 +266,11 @@ export default function DownloadCards() {
-