Skip to content

Commit ccf6b1f

Browse files
committed
style: header adapts to mobile
1 parent 518c97c commit ccf6b1f

File tree

1 file changed

+58
-26
lines changed

1 file changed

+58
-26
lines changed

src/layouts/components/Header.tsx

Lines changed: 58 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -11,34 +11,66 @@ const Header: React.FC = () => {
1111

1212
return (
1313
<header className='bg-brand-pink text-white p-4 shadow-md sticky top-0 z-50'>
14-
<div className='container mx-auto flex items-center justify-between'>
15-
{/* Left side: Logo and Title */}
16-
<div className='flex items-center'>
17-
<img src='/lift_logo.png' alt='Logo' className='h-10 mr-2' />
18-
<h1 className='text-2xl font-bold'>Beacons</h1>
19-
</div>
20-
21-
{/* Right side: User info & dashboard trigger */}
22-
{data.username ? (
23-
<Dialog open={isDashboardOpen} onOpenChange={setIsDashboardOpen}>
24-
<DialogTrigger asChild>
25-
<div className='flex items-center border-2 border-white rounded-full px-3 py-1.5 sm:px-4 sm:py-2 cursor-pointer hover:bg-pink-600 transition-colors'>
26-
<span className='hidden sm:inline mr-2'>Logged as: </span>
27-
<span className='mr-2 text-sm sm:text-base'>{data.username}</span>
28-
<SmallCircularQuestionCounter size={20} />
14+
<div className='container mx-auto'>
15+
{/* Mobile: Stacked layout / Desktop: Single row with 3 items */}
16+
<div className='flex flex-wrap items-center'>
17+
{/* Mobile: Top row with logo and login / Desktop: 3-column layout */}
18+
<div className='flex w-full min-[580px]:w-auto items-center justify-between min-[580px]:justify-start'>
19+
{/* Logo - always left */}
20+
<img src='/lift_logo.png' alt='Logo' className='h-8 sm:h-10 mr-2 shrink-0' />
21+
22+
{/* Login - right on mobile, disappears on desktop (reappears in its desktop position) */}
23+
<div className="min-[580px]:hidden">
24+
{data.username ? (
25+
<Dialog open={isDashboardOpen} onOpenChange={setIsDashboardOpen}>
26+
<DialogTrigger asChild>
27+
<div className='flex items-center shrink-0 border-2 border-white rounded-full px-2 py-1 sm:px-4 sm:py-2 cursor-pointer hover:bg-pink-600 transition-colors'>
28+
<span className='hidden sm:inline mr-2'>Logged as: </span>
29+
<span className='mr-2 text-xs sm:text-base truncate max-w-[100px] sm:max-w-[150px]'>{data.username}</span>
30+
<SmallCircularQuestionCounter size={18} />
31+
</div>
32+
</DialogTrigger>
33+
<UserDataModal
34+
onOpenChange={setIsDashboardOpen}
35+
/>
36+
</Dialog>
37+
) : (
38+
<div className='flex shrink-0 items-center border-2 border-white rounded-full px-2 py-1 sm:px-4 sm:py-2 cursor-default'>
39+
<span className='hidden sm:inline mr-2'>Not logged in</span>
40+
<span className='sm:hidden mr-2 text-xs'>Guest</span>
41+
<SmallCircularQuestionCounter size={18} />
42+
</div>
43+
)}
44+
</div>
45+
</div>
46+
47+
{/* Title - bottom row on mobile, center column on desktop */}
48+
<h1 className='text-xl sm:text-2xl font-bold w-full min-[580px]:w-auto min-[580px]:flex-1 text-left min-[580px]:text-center mt-2 min-[580px]:mt-0'>Beacons</h1>
49+
50+
{/* Login - hidden on mobile (appears in mobile top row), right on desktop */}
51+
<div className="hidden min-[580px]:block">
52+
{data.username ? (
53+
<Dialog open={isDashboardOpen} onOpenChange={setIsDashboardOpen}>
54+
<DialogTrigger asChild>
55+
<div className='flex items-center shrink-0 border-2 border-white rounded-full px-2 py-1 sm:px-4 sm:py-2 cursor-pointer hover:bg-pink-600 transition-colors'>
56+
<span className='hidden sm:inline mr-2'>Logged as: </span>
57+
<span className='mr-2 text-xs sm:text-base truncate max-w-[100px] sm:max-w-[150px]'>{data.username}</span>
58+
<SmallCircularQuestionCounter size={18} />
59+
</div>
60+
</DialogTrigger>
61+
<UserDataModal
62+
onOpenChange={setIsDashboardOpen}
63+
/>
64+
</Dialog>
65+
) : (
66+
<div className='flex shrink-0 items-center border-2 border-white rounded-full px-2 py-1 sm:px-4 sm:py-2 cursor-default'>
67+
<span className='hidden sm:inline mr-2'>Not logged in</span>
68+
<span className='sm:hidden mr-2 text-xs'>Guest</span>
69+
<SmallCircularQuestionCounter size={18} />
2970
</div>
30-
</DialogTrigger>
31-
<UserDataModal
32-
onOpenChange={setIsDashboardOpen}
33-
/>
34-
</Dialog>
35-
) : (
36-
<div className='flex items-center border-2 border-white rounded-full px-3 py-1.5 sm:px-4 sm:py-2 cursor-default'>
37-
<span className='hidden sm:inline mr-2'>Not logged in</span>
38-
<span className='sm:hidden mr-2'>Guest</span>
39-
<SmallCircularQuestionCounter size={20} />
71+
)}
4072
</div>
41-
)}
73+
</div>
4274
</div>
4375
</header>
4476
);

0 commit comments

Comments
 (0)