Plethora of things and low time so…
This is the commit message and yes it was written using AI:
Completed Library UI Polish, Global Card Workflow, and Layout Refinements
[Feature] Centralized AddCard Modal into Library.tsx
Refactored AddCard from an autonomous component into a controlled modal matching AddShelf and AddDeck
Linked all three modals to Library.tsx which now manages visibility, edit state, and API calls
Wired the FloatingReviewPalette’s “New → Card” button to emit open_add_card via DeviceEventEmitter
[Feature] Uncategorized Card Support
Cards can now be created without assigning a deck (deck_ids sent as empty array)
Added Uncategorized Cards section to Library with horizontal scroll
Removed Image card type from AddCard modal (Basic and Reversed only)
[Feature] Library Sticky Header & Scroll Architecture
Converted MainContentContainer from ScrollView to static View wrapper
Moved scrolling into inner ScrollView within Library for sticky header behavior
Added bottom padding to clear FloatingReviewPalette on all devices
[UI] Library Section Containers
Each section (Shelves, Uncategorized Decks, Uncategorized Cards) wrapped in its own container
Desktop uses activePalette.bg background, Mobile uses activePalette.bg2
Mobile grid boxes reduced in size (140px vs 220px desktop)
[UI] FloatingReviewPalette Glassmorphism
Added frosted glass blur layer (activePalette.lightest 50% opacity) to Review and New pills
Added matching blur and stroke to the New menu dropdown
Mobile header row forced to single-line layout with reduced vertical padding
[UI] Dark Mode Icon Contrast
ShelfCard icon backgrounds use 40% opacity in dark mode vs 20% in light mode
DeckCard customBg prop added for context-specific background overrides (e.g. inside ShelfDetail)
[Fix] Resolved phantom gray rectangle behind Library
Re-applied TransparentTheme to NavigationContainer in AdaptiveRouter.tsx
Loading spinner centered with paddingBottom offset to account for FloatingReviewPalette
[Fix] Library data reactivity
DeviceEventEmitter ‘library_updated’ event pattern for cross-component data refresh
DeckDetail listens for library_updated to refresh cards when changes occur elsewhere