feat: convert all slide panels to tabbed modals with shared TabbedModal component
Deploy / deploy (push) Successful in 11s

Extract reusable TabbedModal component (portal, backdrop, tab bar with icons/badges/underline, scrollable body, footer) and convert all 9 detail panels from SlidePanel+CollapsibleSection to tabbed modal layout:
- PostDetailPanel (5 tabs), TaskDetailPanel (3), ProjectEditPanel (2)
- TrackDetailPanel (2), CampaignDetailPanel (3), TeamMemberPanel (3)
- TeamPanel (2), IssueDetailPanel (4), ArtefactDetailPanel (4)
Also adds post versioning system (server routes + frontend).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
fahed
2026-03-09 17:12:32 +03:00
parent 539c204bde
commit 44e706f777
14 changed files with 2839 additions and 1921 deletions
+18 -1
View File
@@ -915,5 +915,22 @@
"review.confirmApprovePostDesc": "Are you sure you want to approve this post?",
"review.confirmRejectPostDesc": "Are you sure you want to reject this post? Please provide feedback explaining why.",
"review.feedbackRequired": "Feedback (required)",
"review.feedbackRequiredError": "Please provide feedback when rejecting"
"review.feedbackRequiredError": "Please provide feedback when rejecting",
"posts.versions": "Versions",
"posts.newVersion": "New Version",
"posts.createNewVersion": "Create New Version",
"posts.createVersion": "Create Version",
"posts.creatingVersion": "Creating...",
"posts.whatChanged": "What changed in this version?",
"posts.copyLanguages": "Copy languages from previous version",
"posts.languages": "Languages",
"posts.addLanguage": "Add Language",
"posts.selectLanguage": "Select a language...",
"posts.enterContent": "Enter the content in this language...",
"posts.noLanguages": "No languages added yet",
"posts.noVersions": "No versions yet. Create one to start managing multilingual content and media.",
"posts.deleteLanguage": "Delete this language?",
"posts.deleteLanguageConfirm": "This will remove the language content from this version.",
"posts.media": "Media",
"posts.noMedia": "No media files uploaded"
}