File size: 4,600 Bytes
759768a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
import React, { useState } from 'react';
import './Header.css';
import ProfileDropdown from '../ui/ProfileDropdown';

const Header = ({ 

  currentPage, 

  sidebarOpen, 

  onSidebarToggle,

  userStats = {},

  notifications = [],

  isGuest = false,

  user = null,

  onLogin,

  onLogout,

  onProfile

}) => {
  const [showRefresh, setShowRefresh] = useState(false);
  const formatNumber = (num) => {
    if (num >= 1000000) {
      return (num / 1000000).toFixed(1) + 'M';
    }
    if (num >= 1000) {
      return (num / 1000).toFixed(1) + 'K';
    }
    return num?.toString() || '0';
  };

  const getTimeGreeting = () => {
    const hour = new Date().getHours();
    if (hour < 12) return 'Good morning';
    if (hour < 17) return 'Good afternoon';
    return 'Good evening';
  };

  return (
    <header className="terra-header">

      <div className="terra-header__left">

        {/* Mobile menu button */}

        <button 

          className="terra-header__menu-btn"

          onClick={onSidebarToggle}

          aria-label="Toggle navigation menu"

        >

          <span className={`terra-header__menu-icon ${sidebarOpen ? 'terra-header__menu-icon--open' : ''}`}>

            <span></span>

            <span></span>

            <span></span>

          </span>

        </button>



        {/* Page info */}

        <div className="terra-header__page-info">

          <h1 className="terra-header__page-title">

            <span className="terra-header__page-icon">{currentPage?.icon}</span>

            <span className="terra-header__page-name">{currentPage?.name}</span>

          </h1>

          <p className="terra-header__page-subtitle">{currentPage?.description}</p>

        </div>

      </div>



      <div className="terra-header__right">

        {/* Environmental Stats */}

        <div className="terra-header__stats">

          <div className="terra-header__stat" title="COโ‚‚ Saved">

            <span className="terra-header__stat-icon">๐ŸŒฟ</span>

            <div className="terra-header__stat-content">

              <div className="terra-header__stat-value">

                {formatNumber(userStats.co2Saved || (isGuest ? 0 : 0))}

              </div>

              <div className="terra-header__stat-label">COโ‚‚ Saved (kg)</div>

            </div>

          </div>

          

          <div className="terra-header__stat" title="Water Tests Completed">

            <span className="terra-header__stat-icon">๐Ÿ’ง</span>

            <div className="terra-header__stat-content">

              <div className="terra-header__stat-value">

                {formatNumber(userStats.waterTests || (isGuest ? 0 : 0))}

              </div>

              <div className="terra-header__stat-label">Water Tests</div>

            </div>

          </div>

          

          <div className="terra-header__stat" title="Biodiversity Scans">

            <span className="terra-header__stat-icon">๐Ÿฆœ</span>

            <div className="terra-header__stat-content">

              <div className="terra-header__stat-value">

                {formatNumber(userStats.bioScans || (isGuest ? 0 : 0))}

              </div>

              <div className="terra-header__stat-label">Bio Scans</div>

            </div>

          </div>

        </div>



        {/* User Actions */}

        <div className="terra-header__actions">

          {/* Notifications */}

          <div className="terra-header__notifications">

            <button 

              className="terra-header__notification-btn"

              aria-label="View notifications"

            >

              <span className="terra-header__notification-icon">๐Ÿ””</span>

              {notifications.length > 0 && (

                <span className="terra-header__notification-badge">

                  {notifications.length > 9 ? '9+' : notifications.length}

                </span>

              )}

            </button>

          </div>



          {/* Refresh Button (when needed) */}

          {showRefresh && (

            <button 

              className="terra-header__refresh-btn"

              onClick={() => window.location.reload()}

              title="Refresh page"

            >

              ๐Ÿ”„

            </button>

          )}



          {/* Profile Dropdown */}

          <ProfileDropdown

            user={user}

            onLogin={onLogin}

            onLogout={onLogout}

            onProfile={onProfile}

          />

        </div>

      </div>

    </header>
  );
};

export default Header;