import 'package:flutter/material.dart'; import '../models/post.dart'; import '../theme/app_theme.dart'; import 'chain_quote_widget.dart'; import 'post/post_actions.dart'; import 'post/post_body.dart'; import 'post/post_header.dart'; import 'post/post_media.dart'; enum PostCardVariant { feed, detail, profile, } /// @deprecated /// Use [UnifiedPostTile] from post_item.dart instead. /// PostCard is deprecated in favor of the "Strict Flat" design system. @Deprecated('Use UnifiedPostTile from post_item.dart instead. PostCard is deprecated.') class PostCard extends StatelessWidget { final Post post; final PostCardVariant variant; final VoidCallback? onTap; final VoidCallback? onChain; final VoidCallback? onChainParentTap; final bool isAlternate; final bool showChainContext; const PostCard({ super.key, required this.post, this.variant = PostCardVariant.feed, this.onTap, this.onChain, this.onChainParentTap, this.isAlternate = false, this.showChainContext = true, }); @override Widget build(BuildContext context) { final padding = switch (variant) { PostCardVariant.detail => const EdgeInsets.symmetric(vertical: AppTheme.spacingMd), _ => EdgeInsets.zero, }; const contentPadding = EdgeInsets.symmetric( horizontal: AppTheme.spacingLg, vertical: AppTheme.spacingSm, ); Widget content = Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ // Chain Context (The Quote Box) if (showChainContext && post.chainParent != null) ...[ ChainQuoteWidget( parent: post.chainParent!, onTap: onChainParentTap, ), const SizedBox(height: AppTheme.spacingSm), ], // Main Post Content PostHeader(post: post), const SizedBox(height: AppTheme.spacingMd), PostBody(text: post.body, bodyFormat: post.bodyFormat), PostMedia(post: post), const SizedBox(height: AppTheme.spacingMd), PostActions( post: post, onChain: onChain, ), ], ); if (isAlternate) { content = Container( padding: contentPadding, decoration: BoxDecoration( color: AppTheme.white, // Replaced AppTheme.surface borderRadius: BorderRadius.circular(8.0), // Replaced AppTheme.radiusMd ), child: content, ); } else { content = Padding( padding: contentPadding, child: content, ); } return Material( color: Colors.transparent, child: InkWell( onTap: onTap, highlightColor: Colors.transparent, splashColor: Colors.transparent, child: Padding( padding: padding, child: content, ), ), ); } }