diff --git a/public/gallery/store.png b/public/gallery/store.png index 7a594d2..0270e9d 100644 Binary files a/public/gallery/store.png and b/public/gallery/store.png differ diff --git a/src/app/about/page.tsx b/src/app/about/page.tsx index 99e20f9..57a0690 100644 --- a/src/app/about/page.tsx +++ b/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/src/app/news/[slug]/page.tsx b/src/app/news/[slug]/page.tsx index 42380e6..873431a 100644 --- a/src/app/news/[slug]/page.tsx +++ b/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/src/app/page.tsx b/src/app/page.tsx index b9bf0c0..d07260e 100644 --- a/src/app/page.tsx +++ b/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,18 +21,16 @@ function Hero() {
-

+

An open Steam.

-

+

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

- - +
@@ -44,49 +42,18 @@ function Hero() { function FeatureSection() { return ( -
-
-
- 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
-
-
-
+
+ + + A better experience for DRM‑free games. + + +
) } @@ -165,7 +132,7 @@ export default function Home() {
-
+
diff --git a/src/app/sponsors/page.tsx b/src/app/sponsors/page.tsx index 5e1444f..5b7435a 100644 --- a/src/app/sponsors/page.tsx +++ b/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,6 +45,7 @@ function CTA() { diff --git a/src/components/bento-card.tsx b/src/components/bento-card.tsx index 1fe8263..0d1262d 100644 --- a/src/components/bento-card.tsx +++ b/src/components/bento-card.tsx @@ -29,21 +29,28 @@ export function BentoCard({ data-dark={dark ? 'true' : undefined} className={clsx( className, - 'group relative flex flex-col overflow-hidden rounded-lg ring-1', - 'bg-zinc-900 ring-white/15', + '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', )} >

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

+

{title}

-

+

{description}

diff --git a/src/components/button.tsx b/src/components/button.tsx index 05d72c3..d4240c8 100644 --- a/src/components/button.tsx +++ b/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-lg border border-transparent bg-gray-950 shadow-md', + 'rounded-full 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-lg border border-transparent bg-white/15 shadow-md ring-1 ring-[#D15052]/15', + 'rounded-full 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-zinc-100', + 'text-base font-medium whitespace-nowrap text-gray-950', 'data-disabled:bg-white/15 data-disabled:opacity-40 data-hover:bg-white/20', ), outline: clsx( - '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', + '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', ), } diff --git a/src/components/comparison.tsx b/src/components/comparison.tsx index 38b6ad4..fec9e2d 100644 --- a/src/components/comparison.tsx +++ b/src/components/comparison.tsx @@ -39,7 +39,7 @@ function GameVaultLogo() { return (
GameVault Logo - +
GameVault+ icon +
coming soon™
) @@ -121,7 +121,6 @@ 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, @@ -231,7 +230,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, @@ -280,14 +279,14 @@ function Header() { ) } -function ProjectCards() { +function PricingCards() { return (
{projects.map((tier, tierIndex) => ( - + ))}
@@ -295,22 +294,22 @@ function ProjectCards() { ) } -function ProjectCard({ tier }: { tier: (typeof projects)[number] }) { +function PricingCard({ tier }: { tier: (typeof projects)[number] }) { return ( -
+
-
+
{tier.logo()}
{tier.name} -

{tier.description}

+

{tier.description}

-

+

Key features:

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