feat: forum rich-text editor, emoji picker, mentions, discover nav, feed, uploads, profile

Forum:
- TipTap WYSIWYG editor with full toolbar
- @emoji-mart/react emoji picker (consistent with tweets)
- @mention autocomplete with user search API
- Fix PHP 8.4 parse errors in Blade templates
- Fix thread data display (paginator items)
- Align forum page widths to max-w-5xl

Discover:
- Extract shared _nav.blade.php partial
- Add missing nav links to for-you page
- Add Following link for authenticated users

Feed/Posts:
- Post model, controllers, policies, migrations
- Feed page components (PostComposer, FeedCard, etc)
- Post reactions, comments, saves, reports, sharing
- Scheduled publishing support
- Link preview controller

Profile:
- Profile page components (ProfileHero, ProfileTabs)
- Profile API controller

Uploads:
- Upload wizard enhancements
- Scheduled publish picker
- Studio status bar and readiness checklist
This commit is contained in:
2026-03-03 09:48:31 +01:00
parent 1266f81d35
commit dc51d65440
178 changed files with 14308 additions and 665 deletions

View File

@@ -0,0 +1,30 @@
import React from 'react'
export default function PostCardSkeleton() {
return (
<div className="rounded-2xl border border-white/[0.06] bg-white/[0.03] p-5 animate-pulse space-y-4">
{/* Header */}
<div className="flex items-center gap-3">
<div className="w-9 h-9 rounded-full bg-white/10 shrink-0" />
<div className="space-y-1.5 flex-1">
<div className="h-3 bg-white/10 rounded w-28" />
<div className="h-2 bg-white/6 rounded w-20" />
</div>
</div>
{/* Body */}
<div className="space-y-2">
<div className="h-3 bg-white/10 rounded w-full" />
<div className="h-3 bg-white/8 rounded w-4/5" />
<div className="h-3 bg-white/6 rounded w-2/3" />
</div>
{/* Artwork embed placeholder */}
<div className="rounded-xl bg-white/5 aspect-[16/9]" />
{/* Actions */}
<div className="flex gap-4 pt-1">
<div className="h-3 bg-white/8 rounded w-12" />
<div className="h-3 bg-white/6 rounded w-16" />
<div className="h-3 bg-white/6 rounded w-10" />
</div>
</div>
)
}