diff --git a/public/favicon.png b/public/favicon.png new file mode 100644 index 0000000..683edca Binary files /dev/null and b/public/favicon.png differ diff --git a/public/images/icons/apple-icon-152x152.png b/public/images/icons/apple-icon-152x152.png index d425dc7..1cfa441 100644 Binary files a/public/images/icons/apple-icon-152x152.png and b/public/images/icons/apple-icon-152x152.png differ diff --git a/public/images/icons/apple-icon-167x167.png b/public/images/icons/apple-icon-167x167.png index 669523f..1575e86 100644 Binary files a/public/images/icons/apple-icon-167x167.png and b/public/images/icons/apple-icon-167x167.png differ diff --git a/public/images/icons/apple-icon-180x180.png b/public/images/icons/apple-icon-180x180.png index 7c505c2..bf71ff9 100644 Binary files a/public/images/icons/apple-icon-180x180.png and b/public/images/icons/apple-icon-180x180.png differ diff --git a/public/images/icons/home.png b/public/images/icons/home.png new file mode 100644 index 0000000..7814c7b Binary files /dev/null and b/public/images/icons/home.png differ diff --git a/public/images/icons/icon-128x128.png b/public/images/icons/icon-128x128.png index 6fa0e3a..364d0df 100644 Binary files a/public/images/icons/icon-128x128.png and b/public/images/icons/icon-128x128.png differ diff --git a/public/images/icons/icon-144x144.png b/public/images/icons/icon-144x144.png index 44887ed..d88c66b 100644 Binary files a/public/images/icons/icon-144x144.png and b/public/images/icons/icon-144x144.png differ diff --git a/public/images/icons/icon-152x152.png b/public/images/icons/icon-152x152.png index 87efe17..1cfa441 100644 Binary files a/public/images/icons/icon-152x152.png and b/public/images/icons/icon-152x152.png differ diff --git a/public/images/icons/icon-192x192.png b/public/images/icons/icon-192x192.png index d01b207..5718c49 100644 Binary files a/public/images/icons/icon-192x192.png and b/public/images/icons/icon-192x192.png differ diff --git a/public/images/icons/icon-384x384.png b/public/images/icons/icon-384x384.png index 62b582e..de09032 100644 Binary files a/public/images/icons/icon-384x384.png and b/public/images/icons/icon-384x384.png differ diff --git a/public/images/icons/icon-512x512.png b/public/images/icons/icon-512x512.png index 9f3ef11..3e50a06 100644 Binary files a/public/images/icons/icon-512x512.png and b/public/images/icons/icon-512x512.png differ diff --git a/public/images/icons/icon-72x72.png b/public/images/icons/icon-72x72.png index ef877b4..c00d8b8 100644 Binary files a/public/images/icons/icon-72x72.png and b/public/images/icons/icon-72x72.png differ diff --git a/public/images/icons/icon-96x96.png b/public/images/icons/icon-96x96.png index 4d32cba..7814c7b 100644 Binary files a/public/images/icons/icon-96x96.png and b/public/images/icons/icon-96x96.png differ diff --git a/public/images/icons/library.png b/public/images/icons/library.png new file mode 100644 index 0000000..7814c7b Binary files /dev/null and b/public/images/icons/library.png differ diff --git a/public/images/logostripstream-white.png b/public/images/logostripstream-white.png new file mode 100644 index 0000000..762dc42 Binary files /dev/null and b/public/images/logostripstream-white.png differ diff --git a/public/images/logostripstream.png b/public/images/logostripstream.png new file mode 100644 index 0000000..2d47634 Binary files /dev/null and b/public/images/logostripstream.png differ diff --git a/public/images/screenshots/home.png b/public/images/screenshots/home.png index 7f54ff6..9fa86c0 100644 Binary files a/public/images/screenshots/home.png and b/public/images/screenshots/home.png differ diff --git a/public/images/screenshots/reader.png b/public/images/screenshots/reader.png index bca7fee..3f1dd59 100644 Binary files a/public/images/screenshots/reader.png and b/public/images/screenshots/reader.png differ diff --git a/public/images/splash/splash-1125x2436.png b/public/images/splash/splash-1125x2436.png index 3b9086b..19b3446 100644 Binary files a/public/images/splash/splash-1125x2436.png and b/public/images/splash/splash-1125x2436.png differ diff --git a/public/images/splash/splash-1242x2208.png b/public/images/splash/splash-1242x2208.png index d1036a6..d6f20f7 100644 Binary files a/public/images/splash/splash-1242x2208.png and b/public/images/splash/splash-1242x2208.png differ diff --git a/public/images/splash/splash-1242x2688.png b/public/images/splash/splash-1242x2688.png index 46e5769..0e8c38b 100644 Binary files a/public/images/splash/splash-1242x2688.png and b/public/images/splash/splash-1242x2688.png differ diff --git a/public/images/splash/splash-1536x2048.png b/public/images/splash/splash-1536x2048.png index f6fda1a..b2125c8 100644 Binary files a/public/images/splash/splash-1536x2048.png and b/public/images/splash/splash-1536x2048.png differ diff --git a/public/images/splash/splash-1668x2388.png b/public/images/splash/splash-1668x2388.png index c7874a9..0d02fda 100644 Binary files a/public/images/splash/splash-1668x2388.png and b/public/images/splash/splash-1668x2388.png differ diff --git a/public/images/splash/splash-2048x2732.png b/public/images/splash/splash-2048x2732.png index 870fee3..87daed8 100644 Binary files a/public/images/splash/splash-2048x2732.png and b/public/images/splash/splash-2048x2732.png differ diff --git a/public/images/splash/splash-750x1334.png b/public/images/splash/splash-750x1334.png index 6b610ff..334c4ce 100644 Binary files a/public/images/splash/splash-750x1334.png and b/public/images/splash/splash-750x1334.png differ diff --git a/public/images/splash/splash-828x1792.png b/public/images/splash/splash-828x1792.png index be1dd53..20e4c95 100644 Binary files a/public/images/splash/splash-828x1792.png and b/public/images/splash/splash-828x1792.png differ diff --git a/public/offline.html b/public/offline.html index a551926..be01e17 100644 --- a/public/offline.html +++ b/public/offline.html @@ -23,7 +23,12 @@ body { margin: 0; padding: 0; - font-family: "Segoe UI", "SF Pro Text", -apple-system, BlinkMacSystemFont, sans-serif; + font-family: + "Segoe UI", + "SF Pro Text", + -apple-system, + BlinkMacSystemFont, + sans-serif; background: var(--bg); color: var(--text); min-height: 100vh; @@ -60,7 +65,12 @@ inset: 0; pointer-events: none; background: - linear-gradient(112deg, rgba(79, 70, 229, 0.24) 0%, rgba(6, 182, 212, 0.2) 30%, transparent 56%), + linear-gradient( + 112deg, + rgba(79, 70, 229, 0.24) 0%, + rgba(6, 182, 212, 0.2) 30%, + transparent 56% + ), linear-gradient(248deg, rgba(244, 114, 182, 0.16) 0%, transparent 46%), repeating-linear-gradient(135deg, rgba(226, 232, 240, 0.03) 0 1px, transparent 1px 11px); } @@ -82,6 +92,15 @@ gap: 0.75rem; } + .brand-logo { + width: 2.4rem; + height: 2.4rem; + border-radius: 0.6rem; + object-fit: cover; + box-shadow: 0 0 20px rgba(34, 211, 238, 0.35); + border: 1px solid rgba(148, 163, 184, 0.35); + } + .menu-btn { width: 2.25rem; height: 2.25rem; @@ -170,7 +189,12 @@ inset: 0; pointer-events: none; background: - linear-gradient(160deg, rgba(79, 70, 229, 0.12) 0%, rgba(6, 182, 212, 0.08) 32%, transparent 58%), + linear-gradient( + 160deg, + rgba(79, 70, 229, 0.12) 0%, + rgba(6, 182, 212, 0.08) 32%, + transparent 58% + ), linear-gradient(332deg, rgba(244, 114, 182, 0.06) 0%, transparent 42%), repeating-linear-gradient(135deg, rgba(226, 232, 240, 0.02) 0 1px, transparent 1px 11px); } @@ -327,8 +351,9 @@
+
-
STRIPSTREAM
+
StripStream
comic reader
@@ -358,16 +383,16 @@
● Hors ligne

Cette page n'est pas encore disponible hors ligne.

- Tu peux continuer a naviguer sur les pages deja consultees. Cette route sera - disponible hors ligne apres une visite en ligne. + Tu peux continuer a naviguer sur les pages deja consultees. Cette route sera disponible + hors ligne apres une visite en ligne.

- Astuce: visite d'abord Accueil, Bibliotheques, Series et pages de lecture quand tu es - en ligne. + Astuce: visite d'abord Accueil, Bibliotheques, Series et pages de lecture quand tu es en + ligne.
diff --git a/public/sw.js b/public/sw.js index a5ebbc7..390045d 100644 --- a/public/sw.js +++ b/public/sw.js @@ -112,7 +112,7 @@ function isHtmlResponse(response) { function createInlineOfflineResponse() { return new Response( - `Hors ligne - StripStream
STRIPSTREAM
comic reader
Mode hors ligne
● Hors ligne

Cette page n'est pas encore disponible hors ligne.

Tu peux continuer a naviguer sur les pages deja consultees. Cette route sera disponible hors ligne apres une visite en ligne.

Astuce: visite d'abord Accueil, Bibliotheques, Series et pages de lecture quand tu es en ligne.
`, + `Hors ligne - StripStream
StripStream logo
StripStream
comic reader
Mode hors ligne
● Hors ligne

Cette page n'est pas encore disponible hors ligne.

Tu peux continuer a naviguer sur les pages deja consultees. Cette route sera disponible hors ligne apres une visite en ligne.

Astuce: visite d'abord Accueil, Bibliotheques, Series et pages de lecture quand tu es en ligne.
`, { headers: { "Content-Type": "text/html; charset=utf-8", diff --git a/scripts/generate-icons.js b/scripts/generate-icons.js index 0f88a6c..12d3017 100644 --- a/scripts/generate-icons.js +++ b/scripts/generate-icons.js @@ -3,11 +3,11 @@ const fs = require("fs").promises; const path = require("path"); const sizes = [72, 96, 128, 144, 152, 192, 384, 512]; -const inputSvg = path.join(__dirname, "../public/favicon.svg"); -const inputAppleSvg = path.join(__dirname, "../public/apple-icon.svg"); +const sourceLogo = path.join(__dirname, "../public/images/logostripstream.png"); const outputDir = path.join(__dirname, "../public/images/icons"); const screenshotsDir = path.join(__dirname, "../public/images/screenshots"); const splashDir = path.join(__dirname, "../public/images/splash"); +const faviconPath = path.join(__dirname, "../public/favicon.png"); // Configuration des splashscreens pour différents appareils const splashScreens = [ @@ -24,35 +24,23 @@ const splashScreens = [ async function generateSplashScreens() { await fs.mkdir(splashDir, { recursive: true }); - // Créer le SVG de base pour la splashscreen avec le même style que le favicon - const splashSvg = ` - - - - - - - - - - - `; - for (const screen of splashScreens) { const outputPath = path.join(splashDir, `splash-${screen.width}x${screen.height}.png`); + const darkOverlay = Buffer.from( + ` + + ` + ); - await sharp(Buffer.from(splashSvg)) + await sharp(sourceLogo) .resize(screen.width, screen.height, { - fit: "contain", - background: "#4F46E5", + fit: "cover", + position: "center", + }) + .composite([{ input: darkOverlay, blend: "over" }]) + .png({ + compressionLevel: 9, }) - .png() .toFile(outputPath); console.log(`✓ Splashscreen ${screen.name} (${screen.width}x${screen.height}) générée`); @@ -61,17 +49,19 @@ async function generateSplashScreens() { async function generateIcons() { try { + await fs.access(sourceLogo); + // Créer les dossiers de sortie s'ils n'existent pas await fs.mkdir(outputDir, { recursive: true }); await fs.mkdir(screenshotsDir, { recursive: true }); - // Générer les icônes Android (avec bords arrondis) + // Générer les icônes Android for (const size of sizes) { const outputPath = path.join(outputDir, `icon-${size}x${size}.png`); - await sharp(inputSvg) + await sharp(sourceLogo) .resize(size, size, { - fit: "contain", + fit: "cover", background: { r: 0, g: 0, b: 0, alpha: 0 }, // Fond transparent }) .png({ @@ -88,9 +78,9 @@ async function generateIcons() { for (const size of appleSizes) { const outputPath = path.join(outputDir, `apple-icon-${size}x${size}.png`); - await sharp(inputAppleSvg) + await sharp(sourceLogo) .resize(size, size, { - fit: "contain", + fit: "cover", background: { r: 0, g: 0, b: 0, alpha: 0 }, // Fond transparent }) .png({ @@ -102,26 +92,25 @@ async function generateIcons() { console.log(`✓ Icône Apple ${size}x${size} générée`); } + // Générer le favicon principal utilisé par Next metadata + await sharp(sourceLogo) + .resize(64, 64, { + fit: "cover", + }) + .png({ + compressionLevel: 9, + palette: true, + }) + .toFile(faviconPath); + + console.log("✓ Favicon principal généré"); + // Générer les icônes de raccourcis - const shortcutIcons = [ - { name: "home", icon: "Home" }, - { name: "library", icon: "Library" }, - ]; + const shortcutIcons = ["home", "library"]; for (const shortcut of shortcutIcons) { - const outputPath = path.join(outputDir, `${shortcut.name}.png`); - - // Créer une image carrée avec fond indigo et icône blanche - const svg = ` - - - - - `; - - await sharp(Buffer.from(svg)) + const outputPath = path.join(outputDir, `${shortcut}.png`); + await sharp(sourceLogo) .resize(96, 96) .png({ compressionLevel: 9, @@ -129,7 +118,7 @@ async function generateIcons() { }) .toFile(outputPath); - console.log(`✓ Icône de raccourci ${shortcut.name} générée`); + console.log(`✓ Icône de raccourci ${shortcut} générée`); } // Générer les screenshots de démonstration @@ -166,14 +155,4 @@ async function generateIcons() { } } -// Fonction helper pour obtenir les chemins SVG des icônes -function getIconPath(iconName) { - const paths = { - Home: "M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6", - Library: - "M4 19.5A2.5 2.5 0 0 1 6.5 17H20M4 19.5A2.5 2.5 0 0 0 6.5 22H20M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H20", - }; - return paths[iconName] || ""; -} - generateIcons(); diff --git a/src/app/account/page.tsx b/src/app/account/page.tsx index b3b04cf..ca92871 100644 --- a/src/app/account/page.tsx +++ b/src/app/account/page.tsx @@ -15,7 +15,7 @@ export default async function AccountPage() { return (
-
+

Mon compte

diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 3ac0314..35eb971 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -36,8 +36,8 @@ export const metadata: Metadata = { icons: { icon: [ { - url: "/favicon.svg", - type: "image/svg+xml", + url: "/favicon.png", + type: "image/png", }, { url: "/images/icons/icon-72x72.png", sizes: "72x72", type: "image/png" }, { url: "/images/icons/icon-96x96.png", sizes: "96x96", type: "image/png" }, @@ -176,7 +176,11 @@ export default async function RootLayout({ children }: { children: React.ReactNo - + {children} diff --git a/src/app/loading.tsx b/src/app/loading.tsx index 170fdb5..9d23760 100644 --- a/src/app/loading.tsx +++ b/src/app/loading.tsx @@ -1,6 +1,7 @@ "use client"; import { useEffect, useState } from "react"; +import Image from "next/image"; const SHOW_DELAY_MS = 140; @@ -22,8 +23,22 @@ export default function AppLoading() { }`} >

-
-

+

+ StripStream Logo + StripStream Logo +

StripStream

Chargement de votre bibliotheque...

diff --git a/src/app/login/LoginContent.tsx b/src/app/login/LoginContent.tsx index 4fe548d..220bb7c 100644 --- a/src/app/login/LoginContent.tsx +++ b/src/app/login/LoginContent.tsx @@ -43,21 +43,21 @@ export function LoginContent({ searchParams }: LoginContentProps) { transition={{ duration: 0.6, delay: 0.2 }} className="relative z-20 flex items-center text-lg font-medium" > - - - - + /> + + StripStream @@ -83,12 +83,20 @@ export function LoginContent({ searchParams }: LoginContentProps) {
-
-
+
+ {t("login.title")} diff --git a/src/components/home/HomeClientWrapper.tsx b/src/components/home/HomeClientWrapper.tsx index ce52975..412ffb6 100644 --- a/src/components/home/HomeClientWrapper.tsx +++ b/src/components/home/HomeClientWrapper.tsx @@ -6,6 +6,7 @@ import { RefreshButton } from "@/components/library/RefreshButton"; import { PullToRefreshIndicator } from "@/components/common/PullToRefreshIndicator"; import { usePullToRefresh } from "@/hooks/usePullToRefresh"; import { revalidateForRefresh } from "@/app/actions/refresh"; +import Image from "next/image"; interface HomeClientWrapperProps { children: ReactNode; @@ -48,7 +49,25 @@ export function HomeClientWrapper({ children }: HomeClientWrapperProps) { isHiding={pullToRefresh.isHiding} />
-
+
+ + +
+
diff --git a/src/components/layout/Header.tsx b/src/components/layout/Header.tsx index 6a355d7..4d42d52 100644 --- a/src/components/layout/Header.tsx +++ b/src/components/layout/Header.tsx @@ -48,14 +48,14 @@ export function Header({