)}
{/* ── 7. Bottom CTA ── */}
{/* ── 8. Recent photos (compact) ── */}
{recentPhotos.length > 0 && (
-
-
-
-
- {tp("recentPhotos")}
-
-
-
-
- {recentPhotos.slice(0, 4).map((p) => (
-
-
-
- ))}
-
+
+
+ {tp("recentPhotos")}
+
+
+ {recentPhotos.slice(0, 4).map((p) => (
+
+
+
+ ))}
)}
diff --git a/src/components/mobile-nav.tsx b/src/components/mobile-nav.tsx
index dd6a2fe9..de76d8e1 100644
--- a/src/components/mobile-nav.tsx
+++ b/src/components/mobile-nav.tsx
@@ -1,10 +1,10 @@
"use client";
import { AnimatePresence, motion } from "framer-motion";
+import Image from "next/image";
import { type ReactNode, useRef, useState } from "react";
import { FALLBACK_HOTEL_NAME } from "@/lib/brand";
import { mobileMenuVariants } from "@/lib/motion";
-import { HabboHome } from "@/components/shared/habbo-icons";
interface MobileNavProps {
children: ReactNode;
@@ -88,7 +88,13 @@ export function MobileNav({
"color-mix(in srgb, var(--color-primary) 12%, transparent)",
}}
>
-
+
{icon ? (
- {icon}
+
) : null}
{label}
-
- {t("home")}
+
+ {t("home")}
@@ -72,7 +68,7 @@ export async function Navigation({ session }: { session: Session | null }) {
}
+ icon="/assets/images/icons/navigation/community.png"
>
{t("articles")}
@@ -99,7 +95,7 @@ export async function Navigation({ session }: { session: Session | null }) {
}
+ icon="/assets/images/icons/navigation/shop.png"
>
{t("shop")}
@@ -113,18 +109,30 @@ export async function Navigation({ session }: { session: Session | null }) {
-
- {t("leaderboards")}
+
+ {t("leaderboards")}
-
- {t("radio")}
+
+ {t("radio")}
}
+ icon="/assets/images/icons/navigation/rules.gif"
>
{t("helpCenter")}
@@ -149,27 +157,51 @@ export async function Navigation({ session }: { session: Session | null }) {
{session?.user ? (
<>
-
- {t("friends")}
+
+ {t("friends")}
-
- {t("messages")}
+
+ {t("messages")}
>
) : null}
{showMod ? (
-
- {t("mod")}
+
+ {t("mod")}
) : null}
{showAdmin ? (
-
- {t("admin")}
+
+ {t("admin")}
) : null}
@@ -181,13 +213,19 @@ export async function Navigation({ session }: { session: Session | null }) {
brandLabel={brandLabel}
>
-
-
{t("home")}
+
+ {t("home")}
}
+ icon="/assets/images/icons/navigation/community.png"
>
{t("articles")}
@@ -214,7 +252,7 @@ export async function Navigation({ session }: { session: Session | null }) {
}
+ icon="/assets/images/icons/navigation/shop.png"
>
{t("shop")}
@@ -228,18 +266,30 @@ export async function Navigation({ session }: { session: Session | null }) {
-
-
{t("leaderboards")}
+
+ {t("leaderboards")}
-
-
{t("radio")}
+
+ {t("radio")}
}
+ icon="/assets/images/icons/navigation/rules.gif"
>
{t("helpCenter")}
@@ -264,27 +314,51 @@ export async function Navigation({ session }: { session: Session | null }) {
{session?.user ? (
<>
-
-
{t("friends")}
+
+ {t("friends")}
-
-
{t("messages")}
+
+ {t("messages")}
>
) : null}
{showMod ? (
-
-
{t("mod")}
+
+ {t("mod")}
) : null}
{showAdmin ? (
-
-
{t("admin")}
+
+ {t("admin")}
) : null}
@@ -307,7 +381,12 @@ export async function Navigation({ session }: { session: Session | null }) {
className="ml-auto flex md:hidden items-center gap-2 shrink-0"
aria-label="Home"
>
-
+
& { size?: number };
-
-function IconSvg({
- children,
- size = 24,
- viewBox = "0 0 24 24",
- ...props
-}: IconProps & { viewBox?: string }) {
- return (
-
- );
-}
-
-export function HabboHome({ size, ...props }: IconProps) {
- return (
-
-
-
-
-
-
-
-
- );
-}
-
-export function HabboUser({ size, ...props }: IconProps) {
- return (
-
-
-
-
-
-
- );
-}
-
-export function HabboCatalog({ size, ...props }: IconProps) {
- return (
-
-
-
-
-
-
-
- );
-}
-
-export function HabboStar({ size, ...props }: IconProps) {
- return (
-
-
-
-
-
-
-
-
-
-
-
- );
-}
-
-export function HabboCommunity({ size, ...props }: IconProps) {
- return (
-
-
-
-
-
-
-
-
- );
-}
-
-export function HabboGames({ size, ...props }: IconProps) {
- return (
-
-
-
-
-
-
-
-
-
- );
-}
-
-export function HabboEnter({ size, ...props }: IconProps) {
- return (
-
-
-
-
-
-
- );
-}
-
-export function HabboNews({ size, ...props }: IconProps) {
- return (
-
-
-
-
-
-
-
-
-
- );
-}
-
-export function HabboOnline({ size, ...props }: IconProps) {
- return (
-
-
-
-
-
-
-
-
- );
-}
-
-export function HabboCamera({ size, ...props }: IconProps) {
- return (
-
-
-
-
-
-
-
-
- );
-}
-
-export function HabboChat({ size, ...props }: IconProps) {
- return (
-
-
-
-
-
-
-
-
- );
-}
-
-export function HabboClock({ size, ...props }: IconProps) {
- return (
-
-
-
-
-
-
-
- );
-}
-
-export function HabboHeart({ size, ...props }: IconProps) {
- return (
-
-
-
-
-
-
-
-
-
-
- );
-}
-
-export function HabboArrowRight({ size, ...props }: IconProps) {
- return (
-
-
-
-
- );
-}
-
-export function HabboCog({ size, ...props }: IconProps) {
- return (
-
-
-
-
-
-
-
-
-
-
-
-
- );
-}
-
-export function HabboFurni({ size, ...props }: IconProps) {
- return (
-
-
-
-
-
-
-
-
-
- );
-}
-
-export function HabboDiamond({ size, ...props }: IconProps) {
- return (
-
-
-
-
-
-
-
- );
-}
-
-export function HabboCredits({ size, ...props }: IconProps) {
- return (
-
-
-
-
-
-
- );
-}
-
-export function HabboDuckets({ size, ...props }: IconProps) {
- return (
-
-
-
-
-
-
-
- );
-}
-
-export function HabboRank({ size, ...props }: IconProps) {
- return (
-
-
-
-
-
-
-
- );
-}
-
-const iconMap = {
- home: HabboHome,
- user: HabboUser,
- catalog: HabboCatalog,
- star: HabboStar,
- community: HabboCommunity,
- games: HabboGames,
- enter: HabboEnter,
- news: HabboNews,
- online: HabboOnline,
- camera: HabboCamera,
- chat: HabboChat,
- clock: HabboClock,
- heart: HabboHeart,
- arrowRight: HabboArrowRight,
- cog: HabboCog,
- furni: HabboFurni,
- diamond: HabboDiamond,
- credits: HabboCredits,
- duckets: HabboDuckets,
- rank: HabboRank,
-};
-
-export type HabboIconName = keyof typeof iconMap;
-
-export function HabboIcon({ name, size, ...props }: IconProps & { name: HabboIconName }) {
- const Icon = iconMap[name];
- return ;
-}