feat(branding): integrar splash screen oficial con emblema D sneaker, launcher icon 1:1 y fusion en logo web

This commit is contained in:
AI Bot 2026-08-26 07:22:15 -05:00
parent 607245a958
commit b98b97c938
45 changed files with 39 additions and 24 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 519 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 541 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 548 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 501 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 532 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 755 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 848 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 608 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 450 KiB

After

Width:  |  Height:  |  Size: 473 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 192 KiB

After

Width:  |  Height:  |  Size: 205 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 939 KiB

After

Width:  |  Height:  |  Size: 990 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 MiB

After

Width:  |  Height:  |  Size: 1.8 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 MiB

After

Width:  |  Height:  |  Size: 2.8 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 498 KiB

After

Width:  |  Height:  |  Size: 515 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 203 KiB

After

Width:  |  Height:  |  Size: 214 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 MiB

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 MiB

After

Width:  |  Height:  |  Size: 2.1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 MiB

After

Width:  |  Height:  |  Size: 3.1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 498 KiB

After

Width:  |  Height:  |  Size: 515 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.8 KiB

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.8 KiB

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.8 KiB

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 54 KiB

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 54 KiB

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 54 KiB

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 414 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 519 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 54 KiB

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 352 KiB

After

Width:  |  Height:  |  Size: 333 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 519 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 333 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 MiB

After

Width:  |  Height:  |  Size: 2.1 MiB

View File

@ -2,6 +2,7 @@
import React from 'react'; import React from 'react';
import Link from 'next/link'; import Link from 'next/link';
import Image from 'next/image';
import { usePathname } from 'next/navigation'; import { usePathname } from 'next/navigation';
import { import {
LayoutDashboard, LayoutDashboard,
@ -38,9 +39,16 @@ export default function AdminLayout({ children }: { children: React.ReactNode })
<aside className="w-full md:w-64 bg-neutral-900/90 backdrop-blur-xl border-r border-purple-500/20 flex flex-col justify-between shrink-0 p-4"> <aside className="w-full md:w-64 bg-neutral-900/90 backdrop-blur-xl border-r border-purple-500/20 flex flex-col justify-between shrink-0 p-4">
<div className="space-y-6"> <div className="space-y-6">
{/* Logo */} {/* Logo */}
<div className="flex items-center space-x-2.5 px-2"> <div className="flex items-center space-x-3 px-2">
<div className="w-9 h-9 rounded-xl bg-gradient-to-br from-purple-600 to-fuchsia-500 flex items-center justify-center text-white shadow-[0_0_15px_rgba(168,85,247,0.4)]"> <div className="relative w-10 h-10 rounded-xl overflow-hidden border border-purple-500/40 shadow-[0_0_15px_rgba(168,85,247,0.4)] shrink-0 bg-neutral-950">
<span className="font-black text-sm">D</span> <Image
src="/d-emblem.png"
alt="DripZone Admin"
width={40}
height={40}
priority
className="object-cover w-full h-full"
/>
</div> </div>
<div> <div>
<h2 className="font-black text-sm text-white tracking-wider">DRIPZONE</h2> <h2 className="font-black text-sm text-white tracking-wider">DRIPZONE</h2>

View File

@ -2,6 +2,7 @@
import React from 'react'; import React from 'react';
import Link from 'next/link'; import Link from 'next/link';
import Image from 'next/image';
import { ShoppingBag, Search, MapPin, Zap, Sparkles, ShieldCheck, Store, User as UserIcon } from 'lucide-react'; import { ShoppingBag, Search, MapPin, Zap, Sparkles, ShieldCheck, Store, User as UserIcon } from 'lucide-react';
import { City } from '@/types'; import { City } from '@/types';
import { useBrand } from '@/context/BrandContext'; import { useBrand } from '@/context/BrandContext';
@ -54,23 +55,26 @@ export const Navbar: React.FC<NavbarProps> = ({
{/* Main Navbar */} {/* Main Navbar */}
<div className="max-w-7xl mx-auto px-4 py-3 flex items-center justify-between gap-3"> <div className="max-w-7xl mx-auto px-4 py-3 flex items-center justify-between gap-3">
{/* Brand Logo */} {/* Brand Logo Fusion */}
<Link href="/" className="flex items-center space-x-2.5 shrink-0 group"> <Link href="/" className="flex items-center space-x-3 shrink-0 group">
<div className={`w-10 h-10 rounded-xl bg-gradient-to-br ${currentBrand.colors.primaryGradient} p-0.5 ${currentBrand.colors.accentGlow} group-hover:scale-105 transition-transform flex items-center justify-center`}> <div className="relative w-12 h-12 rounded-2xl overflow-hidden border border-purple-500/40 shadow-[0_0_20px_rgba(168,85,247,0.45)] group-hover:scale-105 group-hover:border-purple-400 transition-all duration-300 bg-neutral-950 flex items-center justify-center p-0.5">
<div className="w-full h-full bg-neutral-950 rounded-[10px] flex items-center justify-center"> <Image
<span className={`font-black text-xl text-transparent bg-clip-text bg-gradient-to-r ${currentBrand.colors.primaryGradient}`}> src="/d-emblem.png"
{currentBrand.logo.iconText} alt="DripZone Emblem"
</span> width={48}
</div> height={48}
priority
className="object-cover w-full h-full rounded-xl"
/>
</div> </div>
<div> <div>
<div className="flex items-center space-x-1"> <div className="flex items-center space-x-1">
<span className="font-black text-xl tracking-tight text-white">{currentBrand.logo.mainText}</span> <span className="font-black text-xl tracking-tight text-white">DRIP</span>
<span className={`font-black text-xl tracking-tight text-transparent bg-clip-text bg-gradient-to-r ${currentBrand.colors.primaryGradient}`}> <span className={`font-black text-xl tracking-tight text-transparent bg-clip-text bg-gradient-to-r ${currentBrand.colors.primaryGradient}`}>
{currentBrand.logo.accentText} ZONE
</span> </span>
</div> </div>
<p className="text-[10px] text-neutral-400 uppercase tracking-widest font-bold -mt-1">{currentBrand.tagline}</p> <p className="text-[10px] text-neutral-400 uppercase tracking-widest font-bold -mt-0.5">{currentBrand.tagline}</p>
</div> </div>
</Link> </Link>

View File

@ -124,7 +124,7 @@ export const BRANDS: Record<BrandId, BrandTheme> = {
id: 'dripzone', id: 'dripzone',
name: 'DRIPZONE', name: 'DRIPZONE',
shortName: 'DripZone', shortName: 'DripZone',
tagline: 'Streetwear & Sneakers Exclusivos', tagline: 'Ropa urbana y zapatillas deportivas',
badge: 'Edición Limitada', badge: 'Edición Limitada',
couponCode: 'DRIP-VIP', couponCode: 'DRIP-VIP',
whatsappNumber: '573167455877', whatsappNumber: '573167455877',

View File

@ -1,8 +1,8 @@
import os import os
from PIL import Image from PIL import Image
SPLASH_SRC = r"C:\Users\Carlos\.gemini\antigravity-ide\brain\1e6eeae9-f978-4645-8d96-5b5676a57162\dripzone_splash_website_colors_1787718779379.jpg" SPLASH_SRC = r"c:\Users\Carlos\dev\almeira-web\assets_generados\dripzone_splash_clean_1787718656035.jpg"
ICON_SRC = r"C:\Users\Carlos\.gemini\antigravity-ide\brain\1e6eeae9-f978-4645-8d96-5b5676a57162\dripzone_icon_website_colors_1787718844595.jpg" ICON_SRC = r"c:\Users\Carlos\dev\almeira-web\assets_generados\dripzone_app_icon_1787718672979.jpg"
RES_DIR = r"c:\Users\Carlos\dev\almeira-web\dripzone-app\android\app\src\main\res" RES_DIR = r"c:\Users\Carlos\dev\almeira-web\dripzone-app\android\app\src\main\res"
splash_img = Image.open(SPLASH_SRC).convert('RGBA') splash_img = Image.open(SPLASH_SRC).convert('RGBA')
@ -32,7 +32,7 @@ icon_sizes = {
'mipmap-xxxhdpi': 192, 'mipmap-xxxhdpi': 192,
} }
print("-> Actualizando Splash Screens de DripZone...") print("-> Actualizando Splash Screens de DripZone con la imagen oficial...")
for folder, size in splash_sizes.items(): for folder, size in splash_sizes.items():
target_dir = os.path.join(RES_DIR, folder) target_dir = os.path.join(RES_DIR, folder)
os.makedirs(target_dir, exist_ok=True) os.makedirs(target_dir, exist_ok=True)
@ -41,24 +41,27 @@ for folder, size in splash_sizes.items():
resized.save(target_path, 'PNG') resized.save(target_path, 'PNG')
print(f" [OK] {folder}/splash.png ({size[0]}x{size[1]})") print(f" [OK] {folder}/splash.png ({size[0]}x{size[1]})")
print("\n-> Actualizando Iconos de la Aplicacion (Launcher Icons)...") print("\n-> Actualizando Iconos de la Aplicacion (Launcher Icons con el logo DRIPZONE)...")
for folder, size in icon_sizes.items(): for folder, size in icon_sizes.items():
target_dir = os.path.join(RES_DIR, folder) target_dir = os.path.join(RES_DIR, folder)
os.makedirs(target_dir, exist_ok=True) os.makedirs(target_dir, exist_ok=True)
resized_icon = icon_img.resize((size, size), Image.Resampling.LANCZOS) resized_icon = icon_img.resize((size, size), Image.Resampling.LANCZOS)
# ic_launcher.png
resized_icon.save(os.path.join(target_dir, 'ic_launcher.png'), 'PNG') resized_icon.save(os.path.join(target_dir, 'ic_launcher.png'), 'PNG')
# ic_launcher_round.png
resized_icon.save(os.path.join(target_dir, 'ic_launcher_round.png'), 'PNG') resized_icon.save(os.path.join(target_dir, 'ic_launcher_round.png'), 'PNG')
# ic_launcher_foreground.png
resized_icon.save(os.path.join(target_dir, 'ic_launcher_foreground.png'), 'PNG') resized_icon.save(os.path.join(target_dir, 'ic_launcher_foreground.png'), 'PNG')
print(f" [OK] {folder} ({size}x{size})") print(f" [OK] {folder} ({size}x{size})")
# También actualizar en public/ de dripzone-app para PWA e iconos web # Actualizar en public/ de dripzone-app
public_dir = r"c:\Users\Carlos\dev\almeira-web\dripzone-app\public" public_dir = r"c:\Users\Carlos\dev\almeira-web\dripzone-app\public"
splash_img.resize((1080, 1920), Image.Resampling.LANCZOS).save(os.path.join(public_dir, 'splash.png'), 'PNG') splash_img.resize((1080, 1920), Image.Resampling.LANCZOS).save(os.path.join(public_dir, 'splash.png'), 'PNG')
icon_img.resize((512, 512), Image.Resampling.LANCZOS).save(os.path.join(public_dir, 'icon.png'), 'PNG') icon_img.resize((512, 512), Image.Resampling.LANCZOS).save(os.path.join(public_dir, 'icon.png'), 'PNG')
icon_img.resize((192, 192), Image.Resampling.LANCZOS).save(os.path.join(public_dir, 'icon-192.png'), 'PNG') icon_img.resize((192, 192), Image.Resampling.LANCZOS).save(os.path.join(public_dir, 'icon-192.png'), 'PNG')
icon_img.resize((512, 512), Image.Resampling.LANCZOS).save(os.path.join(public_dir, 'logo.png'), 'PNG')
print("\n[EXITO] Todos los assets nativos de Android y Web quedaron actualizados con la marca oficial DripZone.") # Generar D-Emblem recortado para el Header Web (Fusión)
w, h = splash_img.size
crop_sq = splash_img.crop((125, 230, 645, 750)).resize((512, 512), Image.Resampling.LANCZOS)
crop_sq.save(os.path.join(public_dir, 'd-emblem.png'), 'PNG')
print("\n[EXITO] Splash Screen, Icono de Aplicacion y D-Emblem actualizados correctamente.")