diff --git a/package-lock.json b/package-lock.json index 5ed1768..6345e36 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2385,6 +2385,7 @@ "integrity": "sha512-1LOH8xovvsKsCBq1wnT4ntDUdCJKmnEakhsuoUSy6ExlHCkGP2hqnatagYTgFk6oeL0VU31u7SNjunPN+GchtA==", "devOptional": true, "license": "MIT", + "peer": true, "dependencies": { "csstype": "^3.0.2" } @@ -2395,6 +2396,7 @@ "integrity": "sha512-brtBs0MnE9SMx7px208g39lRmC5uHZs96caOJfTjFcYSLHNamvaSMfJNagChVNkup2SdtOxKX1FDBkRSJe1ZAg==", "devOptional": true, "license": "MIT", + "peer": true, "peerDependencies": { "@types/react": "^19.2.0" } @@ -2461,6 +2463,7 @@ "integrity": "sha512-TGf22kon8KW+DeKaUmOibKWktRY8b2NSAZNdtWh798COm1NWx8+xJ6iFBtk3IvLdv6+LGLJLRlyhrhEDZWargQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "8.45.0", "@typescript-eslint/types": "8.45.0", @@ -2988,6 +2991,7 @@ "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "dev": true, "license": "MIT", + "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -3973,6 +3977,7 @@ "integrity": "sha512-hB4FIzXovouYzwzECDcUkJ4OcfOEkXTv2zRY6B9bkwjx/cprAq0uvm1nl7zvQ0/TsUk0zQiN4uPfJpB9m+rPMQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", @@ -4147,6 +4152,7 @@ "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@rtsao/scc": "^1.1.0", "array-includes": "^3.1.9", @@ -6446,6 +6452,7 @@ "resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz", "integrity": "sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==", "license": "MIT", + "peer": true, "engines": { "node": ">=0.10.0" } @@ -6455,6 +6462,7 @@ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.0.tgz", "integrity": "sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==", "license": "MIT", + "peer": true, "dependencies": { "scheduler": "^0.26.0" }, @@ -7289,6 +7297,7 @@ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=12" }, @@ -7460,6 +7469,7 @@ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "dev": true, "license": "Apache-2.0", + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" diff --git a/src/app/(app)/library/page.tsx b/src/app/(app)/library/page.tsx index ba1ba62..9923228 100644 --- a/src/app/(app)/library/page.tsx +++ b/src/app/(app)/library/page.tsx @@ -147,11 +147,11 @@ export default function LibraryPage() { if (loading) { return ( -
- - -
-

{loadingMessage}

+
+ + +
+

{loadingMessage}

@@ -160,12 +160,12 @@ export default function LibraryPage() { if (!email) { return ( -
- - - -

Please sign in to view your library

-
@@ -175,10 +175,10 @@ export default function LibraryPage() { } return ( -
-
-

My Library

-

Manage your digital book collection

+
+
+

My Library

+

Manage your digital book collection

@@ -191,54 +191,54 @@ export default function LibraryPage() { function BookList({ books, onDeleteBook }: { books: BookRow[]; onDeleteBook: (id: string) => void }) { if (!books.length) { return ( - - - -

No books yet

-

Upload a PDF to get started with your digital library. EPUB support coming soon!

+ + + +

No books yet

+

Upload a PDF to get started with your digital library.

); } return ( -
+
{books.map((b) => ( - + -
+
{b.cover_url ? ( {b.title ) : (
{b.format === 'pdf' ? ( - + ) : ( - + )}
)} {b.format?.toUpperCase()} - {/* Delete button - always visible */} -
+ {/* Delete button */} +
@@ -264,12 +264,12 @@ function BookList({ books, onDeleteBook }: { books: BookRow[]; onDeleteBook: (id
-
+
-

+

{b.title ?? "Untitled"}

-

+

{b.author ?? "Unknown Author"}

@@ -319,20 +319,20 @@ function UploadForm({ onUploaded }: { onUploaded: () => void }) { }, [file, onUploaded]); return ( - - - - + + + + Upload a Book - - Upload PDF files to add them to your library. EPUB support coming soon! + + Upload PDF files to add them to your library. -
-
- + +
+
void }) { - + {file?.name ?? "No file selected"}
@@ -358,7 +359,8 @@ function UploadForm({ onUploaded }: { onUploaded: () => void }) { ) : ( - )} @@ -155,13 +165,13 @@ export default function SignInPage() {
{status && ( -
-

{status}

+
+

{status}

)}
-
diff --git a/src/app/(auth)/sign-up/page.tsx b/src/app/(auth)/sign-up/page.tsx index 33655ed..fecacdc 100644 --- a/src/app/(auth)/sign-up/page.tsx +++ b/src/app/(auth)/sign-up/page.tsx @@ -34,21 +34,24 @@ export default function SignUpPage() { } return ( -
- - -
- +
+ + +
+
+
+ +
- Create account - + Create account + Sign up to start your reading journey with BookMarked
- - + +
- + setEmail(e.target.value)} placeholder="you@example.com" + className="h-11" />
- + setPassword(e.target.value)} placeholder="Create a password" + className="h-11" /> -

+

Password must be at least 6 characters and contain both letters and digits.

-
{status && ( -
-

{status}

+
+

{status}

)}
-
diff --git a/src/app/globals.css b/src/app/globals.css index bc9b743..0914817 100644 --- a/src/app/globals.css +++ b/src/app/globals.css @@ -92,7 +92,7 @@ --font-sans: Geist, sans-serif; --font-serif: "Lora", Georgia, serif; --font-mono: "Fira Code", "Courier New", monospace; - --radius: 0.5rem; + --radius: 0.75rem; --shadow-x: 1px; --shadow-y: 2px; --shadow-blur: 5px; @@ -147,7 +147,7 @@ --font-sans: Geist, sans-serif; --font-serif: "Lora", Georgia, serif; --font-mono: "Fira Code", "Courier New", monospace; - --radius: 0.5rem; + --radius: 0.75rem; --shadow-x: 1px; --shadow-y: 2px; --shadow-blur: 5px; @@ -170,7 +170,12 @@ } body { @apply bg-background text-foreground; - font-family: var(--font-instrument-sans), ui-sans-serif, system-ui, sans-serif; + font-family: var(--font-inter), ui-sans-serif, system-ui, sans-serif; + letter-spacing: -0.011em; + } + + h1, h2, h3, h4, h5, h6 { + letter-spacing: -0.022em; } } diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 3b4a37c..a53c21d 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -1,14 +1,19 @@ import type { Metadata } from "next"; -import { Instrument_Sans } from "next/font/google"; +import { Inter, Literata } from "next/font/google"; import "./globals.css"; import { ThemeProvider } from "@/components/theme-provider"; import { Header } from "@/components/header"; import { ServiceWorkerProvider } from "@/components/service-worker-provider"; -const instrumentSans = Instrument_Sans({ - variable: "--font-instrument-sans", +const inter = Inter({ + variable: "--font-inter", + subsets: ["latin"], + display: "swap", +}); + +const literata = Literata({ + variable: "--font-literata", subsets: ["latin"], - weight: ["400", "500", "600", "700"], display: "swap", }); @@ -32,12 +37,12 @@ export default function RootLayout({ }>) { return ( - +
-
+
{children}
diff --git a/src/app/page.tsx b/src/app/page.tsx index 5d4d3a0..cc32a27 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -28,29 +28,32 @@ export default function Home() { return (
{/* Hero Section */} -
-
+
+
-
+
- +
+
+ +
-
-

+
+

BookMarked

-

- Your personal digital library. Read your EPUB and PDF books anywhere. Sync your progress across all devices seamlessly. +

+ Your personal digital library. Read your books anywhere, sync your progress seamlessly across all devices.

-
-
diff --git a/src/components/header.tsx b/src/components/header.tsx index 3106849..2a748cf 100644 --- a/src/components/header.tsx +++ b/src/components/header.tsx @@ -54,31 +54,31 @@ export function Header() { if (!mounted) { return ( -
-
-
- -
- BookMarked +
+
+
+ +
+ BookMarked - +
-
+
@@ -86,43 +86,45 @@ export function Header() { } return ( -
-
-
- - - BookMarked +
+
+
+ + + BookMarked - +
{!isOnline && ( - Offline + + Offline + )} {signedIn ? ( - ) : ( - )} diff --git a/src/components/theme-toggle.tsx b/src/components/theme-toggle.tsx index 202a988..2acacfb 100644 --- a/src/components/theme-toggle.tsx +++ b/src/components/theme-toggle.tsx @@ -18,20 +18,23 @@ export function ThemeToggle() { return ( - - - setTheme("light")}> + + setTheme("light")} className="cursor-pointer"> + Light - setTheme("dark")}> + setTheme("dark")} className="cursor-pointer"> + Dark - setTheme("system")}> + setTheme("system")} className="cursor-pointer"> + System