Skip to content

feat(ui): implement active state and refactor GroupSidebar #105#127

Closed
The-Big-Danny wants to merge 2 commits into
Lumina-eX:mainfrom
The-Big-Danny:feat/sidebar-active-state-105
Closed

feat(ui): implement active state and refactor GroupSidebar #105#127
The-Big-Danny wants to merge 2 commits into
Lumina-eX:mainfrom
The-Big-Danny:feat/sidebar-active-state-105

Conversation

@The-Big-Danny
Copy link
Copy Markdown

@The-Big-Danny The-Big-Danny commented Apr 25, 2026

Closes #105


📌 Pull Request

🔗 Related Issue

Closes #


📝 Description

📝 Description of Changes: Issue #105

  1. Architectural Refactor
    Component Extraction: Moved the sidebar logic from the monolithic app/chat/page.tsx into a new, reusable component: components/group-sidebar.tsx.

Interface Definition: Established a strict Group interface to ensure type safety across the application when handling room metadata and message previews.

State Decoupling: Centralized the sidebar's internal state (search queries, loading skeletons) while maintaining a clean prop-based communication with the main chat layout.

  1. UI/UX Enhancements (Sidebar)
    Active State Visualization: * Implemented a distinct background highlight (bg-primary/10) and border tint for the currently selected group.

Added a vertical accent bar on the left edge of the active item to provide clear visual feedback on the current selection.

Message Previews: * Added a "Last Message" snippet below each group name to provide immediate context for recent activity.

Utilized Tailwind's truncate and line-clamp-1 utilities to ensure the layout remains clean and consistent regardless of message length.

Presence Indicators: Integrated the PresenceIndicator component to show real-time status (online/recently active) for each group in the list.

  1. Polish & Optimization
    Clean Transitions: Added smooth CSS transitions for hover states and selection changes.

Responsive Logic: Preserved and refined the mobile sidebar toggle functionality, ensuring the new GroupSidebar component works seamlessly on smaller screens.

Type Safety: Resolved several TypeScript "ghost" errors by aligning the DBRoom fetch results with the new Group union type.

🚀 Changes Made

  • Feature implemented:
  • Bug fixed:
  • Refactor:
  • Documentation updated:

🧪 Testing & Validation

  • Tested locally
  • No runtime errors
  • Existing features work as expected
  • Edge cases handled

⚠️ Breaking Changes

  • No breaking changes
  • Breaking changes exist (explain below)

If yes, explain:


📸 Screenshots (REQUIRED for UI changes)

Before After

📋 Contributor Checklist (MANDATORY)

  • I was assigned to this issue
  • My code follows the project structure and conventions
  • I have tested my changes thoroughly
  • I did not introduce unnecessary dependencies
  • I have linked the issue (Closes #)
  • This PR is ready for review

💡 Notes for Reviewer

  • Key areas to review:
  • Known limitations:

@drips-wave
Copy link
Copy Markdown

drips-wave Bot commented Apr 25, 2026

@The-Big-Danny Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits.

You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀

Learn more about application limits

@SudiptaPaul-31
Copy link
Copy Markdown
Collaborator

@The-Big-Danny build failing

@SudiptaPaul-31
Copy link
Copy Markdown
Collaborator

@The-Big-Danny resolve conflicts

@SudiptaPaul-31 SudiptaPaul-31 added invalid This doesn't seem right wontfix This will not be worked on labels May 2, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

invalid This doesn't seem right wontfix This will not be worked on

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Group List Sidebar with Active State

2 participants