Epic Feature – Side Navigation (Expandable Nav + Routing + Account Access)
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- Mức phù hợp với người mới
- 35/100
- Loại issue
- Tính năng
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Ít trao đổi
- Công nghệ
- react, typescript
Hướng nghiên cứu
Bắt đầu bằng cách kiểm tra cấu hình routing hiện có và thư mục components/layout trước khi tạo SideNav.tsx. Sử dụng thiết kế Figma được liên kết và các đặc tả layout đã liệt kê để xác định cấu trúc điều hướng, sau đó kiểm tra các route Projects, Ecosystem Map và Account Settings. Công việc được xem là hoàn tất khi các tiêu chí nghiệm thu đều đạt, bao gồm hành vi hover trên desktop, kiểu hiển thị của trạng thái đang hoạt động, fallback responsive và các bài kiểm thử UI cơ bản.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Issue created with ChatGPT models' help¹
Description
This epic focuses on implementing the Side Navigation (Side Nav) component that appears on the left side of the application and provides primary navigation across the app¹. The side nav will include the ProgramEarth logo at the top, navigation icons in the middle, and a profile/account icon at the bottom².
On hover (desktop), the side nav should expand slightly to reveal labels next to icons, improving usability and discoverability³. Each icon will route to a specific page:
- Water droplet icon → Conservation Projects page
- Map icon → Ecosystem Map view
- Profile icon → Account Settings page⁴
The component should be built using Material UI (MUI) where possible and structured into reusable subcomponents⁵.
Goals
- Build reusable SideNav component¹
- Implement hover-based expand/collapse behavior (desktop)²
- Enable routing for each navigation icon³
- Match Figma layout and styling exactly⁴
- Consider extensibility for authentication/account features¹
- Consider mobile-friendly alternative (no hover)²
Implementation Instructions
- Create
SideNav.tsxcomponent under components/layout folder¹ - Use Material UI components (e.g., Drawer, Box, IconButton)²
- Create separate components for each nav item/icon³
- Implement hover state to expand nav width and show labels⁴
- Add routing using React Router (or existing routing setup)¹
- Logo click → redirect to ProgramEarth website²
- Projects icon → navigate to Saved Projects page³
- Map icon → navigate to Ecosystem Map view⁴
- Profile icon → navigate to Account Settings page¹
- Add basic state handling for selected/active menu item²
- Keep styling flexible (theme/styles folder integration later)³
Layout Specs (Figma)
side nav layout
- width: 86;¹
- height: 1049;²
- angle: 0 deg;³
- opacity: 1;⁴
- border-right-width: 2px;¹
- padding-right: 16px;²
- padding-left: 16px;³
- background: var(--Brand-white, #FFFFFF);⁴
- border-right: 2px solid var(--Grey-Border, #E8E8E8);¹
- box-shadow: 0px 20px 50px 0px #DCE0F980;²
row top vertical spacer
- Size="16px";¹
- Show=false;²
- width: 360;³
- height: 16;⁴
- angle: 0 deg;¹
- opacity: 1;²
programearth logo
- width: 44;¹
- height: 44;²
- angle: 0 deg;³
- opacity: 1;⁴
after logo spacer
- Size="24px";¹
- Show=false;²
- width: 360;³
- height: 24;⁴
- angle: 0 deg;¹
- opacity: 1;²
tab menu
- width: 54;¹
- height: 895;²
- angle: 0 deg;³
- opacity: 1;⁴
menu item
- State="Unselected";¹
- Show Label=false;²
- width: 32;³
- height: 32;⁴
- gap: 12px;¹
- angle: 0 deg;²
- opacity: 1;³
👉 On click:
- Navigate to: "Projects";¹
- Animate: Instant;²
- animation-duration: 0ms;³
vertical spacer bw menu item
- Size="24px";¹
- Show=false;²
- width: 360;³
- height: 24;⁴
- angle: 0 deg;¹
- opacity: 1;²
map menu item
- State="Selected";¹
- Show Label=false;²
- width: 32;³
- height: 32;⁴
- gap: 12px;¹
- angle: 0 deg;²
- opacity: 1;³
profile pic icon button
- width: 54;¹
- height: 54;²
- angle: 0 deg;³
- opacity: 1;⁴
- border-radius: 15px;¹
- background: #82B1FF80;²
👉 On click:
- Navigate to: "Account Settings";¹
- Animate: Instant;²
- animation-duration: 0ms;³
bottom spacer
- Size="16px";¹
- Show=false;²
- width: 360;³
- height: 16;⁴
- angle: 0 deg;¹
- opacity: 1;²
Acceptance Criteria
- Side navigation renders with correct layout and styling¹
- Hover expands nav and shows labels (desktop)²
- All icons navigate to correct routes³
- Active/selected state is visually indicated⁴
- Profile icon navigates to account settings¹
- Layout matches Figma specifications²
- Mobile fallback behavior is considered³
Sub-Issues
- Implement hover expand/collapse behavior
- Implement active/selected state styling
- Add mobile behavior (click to expand or drawer mode)
- Integrate with routing system
- Add basic UI tests
Resources
¹ https://mui.com/material-ui/react-drawer/
² https://react.dev/learn/conditional-rendering
³ https://reactrouter.com/en/main/start/overview
⁴ https://developer.mozilla.org/en-US/docs/Web/CSS/:hover
Figma Design (Refer for full details): https://www.figma.com/proto/e9z8edludVssFYABGEWsoI/OpenNature-Map--Hackathons-?node-id=1-1465&viewport=787%2C545%2C0.11&t=Xwc2asfn9Qksi99P-8&scaling=scale-down&content-scaling=fixed&starting-point-node-id=1%3A896&page-id=0%3A1&hide-ui=1
- Ngôn ngữ chính
- HTML
- Star
- 2
- Fork
- 11
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Chuẩn bị môi trường
Khởi chạy dev container của dự án ngay trên trình duyệt, bằng tài khoản GitHub của bạn.
- Không có Dockerfile hay tệp Docker Compose
- Có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của OpenSourceFellows/map_dashboard_hackathon
-
California Tribal GIS Hackathon Intermediate
Độ khó 2/5 Nửa ngày Mức phù hợp với người mới 68/100
-
California Tribal GIS Hackathon Intermediate
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 68/100
-
Endpoint to Fetch UsersĐang mởAdvanced California Tribal GIS Hackathon
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 45/100
-
Endpoint to update UsersĐang mởAdvanced California Tribal GIS Hackathon
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 48/100
-
Endpoint to create UsersĐang mởAdvanced California Tribal GIS Hackathon
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 45/100
Tất cả issue của OpenSourceFellows/map_dashboard_hackathon
Issue tương tự
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 85/100
Maintainer thường phản hồi trong vòng 1 ngày
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 69/100
glossyio/traffic-monitor#246 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
needs-triage
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 66/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
radix-ui/primitives#4254 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 66/100
Maintainer thường phản hồi trong vòng 1 ngày