Skip to content

feat(web): add sidebar with search, filters, and folder tree to media library#2959

Merged
ComputelessComputer merged 16 commits intomainfrom
devin/1768033096-media-sidebar-search
Jan 11, 2026
Merged

feat(web): add sidebar with search, filters, and folder tree to media library#2959
ComputelessComputer merged 16 commits intomainfrom
devin/1768033096-media-sidebar-search

Conversation

@devin-ai-integration
Copy link
Contributor

feat(web): add sidebar with search, filters, and folder tree to media library

Summary

Adds a collapsible left sidebar to the media library with search, file type filtering, and folder tree navigation. This is PR #6 in the stacked PR series for issue #2948 (new blog admin site).

New features:

  • Search input that filters files by name (case-insensitive)
  • File type filter buttons: All Files, Images, Videos, Documents
  • Folder tree navigation with expandable nodes (fetches up to 3 levels deep)
  • Collapsible sidebar with toggle button in header
  • "Clear Filters" button when filters are active
  • Empty state message when no files match filters

Layout changes:

  • Restructured from single column to flex layout with sidebar + main content
  • Sidebar is 256px wide (w-64) or collapsed to 0
  • Main content area scrolls independently

Review & Testing Checklist for Human

  • Verify modal positioning - The layout restructuring moved modals inside nested divs. Test that rename dialog, move dialog, and context menu still display correctly with proper z-index layering
  • Test folder tree with deep nesting - The recursive fetch goes 3 levels deep. Verify it doesn't cause performance issues or excessive API calls with many folders
  • Test search filtering - No debouncing implemented, so verify it doesn't lag with many files
  • Verify sidebar collapse/expand - Test the transition animation and that content reflows correctly

Recommended test plan:

  1. Navigate to /admin/media in the preview deployment
  2. Toggle sidebar collapse/expand using the hamburger menu button
  3. Type in search box and verify files filter in real-time
  4. Click each file type filter and verify correct filtering
  5. Click "Clear Filters" and verify it resets
  6. Expand folders in the tree and click to navigate
  7. Right-click a file to verify context menu still works
  8. Test rename and move dialogs to verify they display correctly over the sidebar

Notes

This is PR #6 in a stacked PR series. It depends on PR #5 (context menu & item actions).

Link to Devin run: https://app.devin.ai/sessions/5c615647f58c421dabccc0cdd5b4270c
Requested by: @ComputelessComputer

devin-ai-integration bot and others added 7 commits January 10, 2026 07:40
- Remove Decap CMS files (config.yml, index.html, media-library.js, etc.)
- Remove netlify-identity-redirect.js and its reference in __root.tsx
- Move mdx-format-core.js to scripts/ folder (still used by format-mdx.js)
- Add admin authentication with email whitelist
- Add admin layout route with auth guard
- Add admin dashboard and media library placeholder pages
- Update handbook documentation to reflect new admin system

Co-Authored-By: john@hyprnote.com <john@hyprnote.com>
The _admin prefix creates a pathless layout route which conflicts with
_view's index.tsx since both resolve to '/'. Renaming to 'admin' creates
routes at /admin/* which don't conflict.

Co-Authored-By: john@hyprnote.com <john@hyprnote.com>
- Add github-media.ts with utilities for listing, uploading, deleting,
  moving files and creating folders via GitHub API
- Add /api/admin/media/list endpoint for listing media files
- Add /api/admin/media/upload endpoint for uploading files
- Add /api/admin/media/delete endpoint for batch deleting files
- Add /api/admin/media/move endpoint for moving/renaming files
- Add /api/admin/media/create-folder endpoint for creating folders
- All endpoints protected with admin authentication check

Co-Authored-By: john@hyprnote.com <john@hyprnote.com>
- Add responsive file grid with folder and image thumbnails
- Add drag-and-drop file upload functionality
- Add breadcrumb navigation for folder hierarchy
- Add file selection with batch delete support
- Add create folder functionality
- Add copy-to-clipboard for file paths
- Show file sizes and loading states

Co-Authored-By: john@hyprnote.com <john@hyprnote.com>
- Add select all / deselect all functionality
- Add batch download for selected files
- Add batch move with folder picker dialog
- Add selection toolbar with count display
- Improve selection UI with cancel button

Co-Authored-By: john@hyprnote.com <john@hyprnote.com>
- Add right-click context menu for files and folders
- Add individual item actions: download, copy path, copy as PNG
- Add rename functionality with modal dialog
- Add move functionality from context menu
- Add delete functionality from context menu
- Context menu auto-closes on click outside

Co-Authored-By: john@hyprnote.com <john@hyprnote.com>
… library

- Add collapsible left sidebar with search input
- Add file type filter (All, Images, Videos, Documents)
- Add folder tree navigation with expandable nodes
- Add clear filters button when filters are active
- Filter items by search query and file type
- Show helpful message when no files match filters
- Sidebar toggle button in header

Co-Authored-By: john@hyprnote.com <john@hyprnote.com>
@devin-ai-integration
Copy link
Contributor Author

🤖 Devin AI Engineer

I'll be helping with this pull request! Here's what you should know:

✅ I will automatically:

  • Address comments on this PR that start with 'DevinAI' or '@devin'.
  • Look at CI failures and help fix them

Note: I can only respond to comments from users who have write access to this repository.

⚙️ Control Options:

  • Disable automatic comment and CI monitoring

…handler

Co-Authored-By: john@hyprnote.com <john@hyprnote.com>
ComputelessComputer and others added 8 commits January 12, 2026 00:49
Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>
Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>
…revocation

Co-Authored-By: john@hyprnote.com <john@hyprnote.com>
Co-Authored-By: john@hyprnote.com <john@hyprnote.com>
Base automatically changed from devin/1768032944-media-context-menu to main January 11, 2026 16:19
@ComputelessComputer ComputelessComputer merged commit 9fa6365 into main Jan 11, 2026
7 of 9 checks passed
@ComputelessComputer ComputelessComputer deleted the devin/1768033096-media-sidebar-search branch January 11, 2026 16:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

Comments