jedmund-svelte/src/lib/components
Justin Edmund 48e53aea3a feat(admin): complete Task 5 dropdown primitives (Option A)
Task 5 was ~85% complete when reviewed. This commit finalizes the
implementation with minimal cleanup and comprehensive documentation.

Changes:
- Refactored GenericMetadataPopover to use clickOutside action
  - Removed manual document.addEventListener for click outside
  - Now uses standardized action with trigger exclusion logic
  - Cleaner code, consistent with other components

Documentation:
- Created task-5-dropdown-primitives-completion.md
- Documented existing infrastructure (clickOutside, BaseDropdown)
- Justified 15 remaining manual event listeners
- API documentation for clickOutside action and BaseDropdown

What Already Existed:
- clickOutside action (full TypeScript, proper cleanup)
- BaseDropdown component (Svelte 5 snippets)
- Dropdown primitives (DropdownMenuContainer, DropdownItem, DropdownMenu)
- ~10 components already using clickOutside
- Specialized dropdowns (StatusDropdown, PostDropdown, etc.)

Justified Exceptions (manual listeners kept):
- DropdownMenu.svelte: Complex submenu logic with Floating UI
- ProjectListItem/PostListItem: Global dropdown coordination pattern
- BaseModal + forms: Keyboard shortcuts (Escape, Cmd+S)
- Various: Scroll/resize positioning (layout concerns)

Decision: Did NOT use Runed library
- Custom clickOutside implementation is production-ready
- No advantage from external dependency
- Current solution is type-safe and well-tested

Phase 3 (List Utilities & Primitives) now complete!
- Task 4: List filtering utilities 
- Task 5: Dropdown primitives 

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-08 19:47:09 -07:00
..
admin feat(admin): complete Task 5 dropdown primitives (Option A) 2025-10-08 19:47:09 -07:00
edra refactor(admin): use session fetch in media components 2025-10-07 05:54:18 -07:00
icons fix: drag handle actions now affect the correct block 2025-06-26 10:33:27 -04:00
ui fix(svelte5): update event handler syntax from on:clickoutside to onclickoutside 2025-10-07 22:16:13 -07:00
Album.stories.js Ran linter 2025-06-16 17:05:43 +01:00
Album.svelte feat: link albums to Apple Music when available 2025-07-11 20:12:13 -07:00
AlbumSimple.stories.js Ran linter 2025-06-16 17:05:43 +01:00
AlbumSimple.stories.svelte Ran linter 2025-06-16 17:05:43 +01:00
AppleMusicSearchModal.svelte feat: add comprehensive debug panel for development 2025-07-10 21:32:59 -07:00
Avatar.stories.js Ran linter 2025-06-16 17:05:43 +01:00
Avatar.svelte refactor: consolidate now playing detection into single music stream store 2025-07-10 21:32:14 -07:00
AvatarHeadphones.svelte fix: update remaining $grey- variables in SCSS files 2025-06-25 22:03:19 -04:00
AvatarSimple.svelte Prettier + build errors 2025-06-02 08:41:03 -07:00
AvatarSVG.svelte fix: resolve build errors from variable refactoring 2025-06-25 22:04:36 -04:00
BackButton.svelte Simplify posts 2025-06-11 00:53:54 -07:00
DebugPanel.svelte feat: add comprehensive debug panel for development 2025-07-10 21:32:59 -07:00
DynamicPostContent.svelte refactor: replace deprecated $grey- variables with $gray- 2025-06-25 21:41:50 -04:00
Footer.svelte refactor: replace deprecated $grey- variables with $gray- 2025-06-25 21:41:50 -04:00
Game.svelte fix: update remaining $grey- variables in SCSS files 2025-06-25 22:03:19 -04:00
GeoCard.svelte refactor: replace deprecated $grey- variables with $gray- 2025-06-25 21:41:50 -04:00
Header.svelte refactor: consolidate now playing detection into single music stream store 2025-07-10 21:32:14 -07:00
HorizontalPhotoScroll.svelte fix: drag handle actions now affect the correct block 2025-06-26 10:33:27 -04:00
ImagePost.svelte We ran the linter 2025-06-11 00:54:05 -07:00
LabCard.svelte refactor: replace deprecated $grey- variables with $gray- 2025-06-25 21:41:50 -04:00
Lightbox.svelte feat: create reusable CloseButton icon component 2025-06-26 08:40:32 -04:00
LinkCard.svelte fix: update remaining $grey- variables in SCSS files 2025-06-25 22:03:19 -04:00
MasonryPhotoGrid.svelte fix: drag handle actions now affect the correct block 2025-06-26 10:33:27 -04:00
Mention.svelte refactor: replace deprecated $grey- variables with $gray- 2025-06-25 21:41:50 -04:00
MentionList.svelte Fix Design Details podcast link 2024-11-18 16:15:27 -08:00
NavDropdown.svelte Fix the mobile nav dropdown 2025-07-10 09:14:21 -07:00
NowPlaying.svelte fix: update remaining $grey- variables in SCSS files 2025-06-25 22:03:19 -04:00
NowPlayingBar.svelte fix: improve now playing detection reliability 2025-07-10 01:25:31 -07:00
Page.svelte Spacing and mobile design fixes 2025-06-10 12:06:02 -07:00
PhotoGrid.svelte Fix hover effect in two column grid 2025-07-11 20:11:18 -07:00
PhotoItem.svelte refactor: implement comprehensive color scale system 2025-06-25 21:28:37 -04:00
PhotoMetadata.svelte Fix some bad photos changes 2025-07-10 09:33:43 -07:00
PhotoView.svelte Unify fullscreen editors 2025-06-13 14:17:26 -04:00
PhotoViewEnhanced.svelte Tentative fix for mobile zoom 2025-07-24 03:45:00 -07:00
PostContent.svelte refactor: replace deprecated $grey- variables with $gray- 2025-06-25 21:41:50 -04:00
PostItem.svelte refactor: replace deprecated $grey- variables with $gray- 2025-06-25 21:41:50 -04:00
PostList.svelte First commit for universe 2025-05-26 06:44:27 -07:00
ProjectContent.svelte Make text colors consistent 2025-06-10 23:33:41 -07:00
ProjectHeaderContent.svelte refactor: replace deprecated $grey- variables with $gray- 2025-06-25 21:41:50 -04:00
ProjectItem.svelte refactor: replace deprecated $grey- variables with $gray- 2025-06-25 21:41:50 -04:00
ProjectList.svelte refactor: replace deprecated $grey- variables with $gray- 2025-06-25 21:41:50 -04:00
ProjectPasswordProtection.svelte refactor: replace deprecated $grey- variables with $gray- 2025-06-25 21:41:50 -04:00
RecentAlbums.stories.js Ran linter 2025-06-16 17:05:43 +01:00
RecentAlbums.svelte refactor: consolidate now playing detection into single music stream store 2025-07-10 21:32:14 -07:00
SegmentedController.svelte fix: update remaining $grey- variables in SCSS files 2025-06-25 22:03:19 -04:00
SingleColumnPhotoGrid.svelte fix: drag handle actions now affect the correct block 2025-06-26 10:33:27 -04:00
Slideshow.svelte refactor: replace deprecated $grey- variables with $gray- 2025-06-25 21:41:50 -04:00
SmartImage.svelte Simplify photos architecture 2025-06-13 06:55:21 -04:00
StreamStatus.svelte refactor: consolidate now playing detection into single music stream store 2025-07-10 21:32:14 -07:00
ThreeColumnPhotoGrid.svelte fix: drag handle actions now affect the correct block 2025-06-26 10:33:27 -04:00
TiltCard.svelte Add link and tilt to bio on homepage 2025-06-10 01:52:34 -07:00
TwoColumnPhotoGrid.svelte fix: drag handle actions now affect the correct block 2025-06-26 10:33:27 -04:00
UniverseAlbumCard.svelte refactor: replace deprecated $grey- variables with $gray- 2025-06-25 21:41:50 -04:00
UniverseCard.svelte fix: update remaining $grey- variables in SCSS files 2025-06-25 22:03:19 -04:00
UniverseFeed.svelte refactor: replace deprecated $grey- variables with $gray- 2025-06-25 21:41:50 -04:00
UniversePostCard.svelte Fix styling of embeds 2025-07-10 02:53:38 -07:00
ViewModeSelector.svelte refactor: replace deprecated $grey- variables with $gray- 2025-06-25 21:41:50 -04:00