diff --git a/NEWS_DETAIL_IMPLEMENTATION.md b/NEWS_DETAIL_IMPLEMENTATION.md new file mode 100644 index 0000000..b187202 --- /dev/null +++ b/NEWS_DETAIL_IMPLEMENTATION.md @@ -0,0 +1,485 @@ +# News Detail Page Implementation Summary + +## Overview +Complete implementation of the news detail page following the HTML reference at `html/news-detail.html`. The page displays full article content with HTML rendering, social engagement features, and related articles. + +--- + +## Files Created + +### 1. **Highlight Box Widget** (`lib/features/news/presentation/widgets/highlight_box.dart`) +**Purpose**: Display tips and warnings in article content + +**Features**: +- Two types: `tip` (lightbulb icon) and `warning` (exclamation icon) +- Yellow/orange gradient background +- Brown text color for contrast +- Rounded corners with border +- Title and content sections + +**Usage**: +```dart +HighlightBox( + type: HighlightType.tip, + title: 'Mẹo từ chuyên gia', + content: 'Chọn gạch men vân đá với kích thước lớn...', +) +``` + +--- + +### 2. **Related Article Card Widget** (`lib/features/news/presentation/widgets/related_article_card.dart`) +**Purpose**: Display related articles in compact horizontal layout + +**Features**: +- 60x60 thumbnail image with CachedNetworkImage +- Title (max 2 lines, 14px bold) +- Metadata: date and view count +- OnTap navigation handler +- Border and rounded corners + +**Usage**: +```dart +RelatedArticleCard( + article: relatedArticle, + onTap: () => context.push('/news/${relatedArticle.id}'), +) +``` + +--- + +### 3. **News Detail Page** (`lib/features/news/presentation/pages/news_detail_page.dart`) +**Purpose**: Main article detail page with full content + +**Features**: +- **AppBar**: + - Back button (black) + - Share button (copies link to clipboard) + - Bookmark button (toggles state with color change) + +- **Hero Image**: 250px height, full width, CachedNetworkImage + +- **Article Metadata**: + - Category badge (primary blue) + - Date, reading time, views + - Horizontal wrap layout + +- **Content Sections**: + - Title (24px, bold) + - Excerpt (italic, blue left border) + - Full article body with HTML rendering + - Tags section (chip-style layout) + - Social engagement stats and action buttons + - Related articles (3 items) + +- **HTML Content Rendering**: + - H2 headings (20px, bold, blue underline) + - H3 headings (18px, bold) + - Paragraphs (16px, line height 1.7) + - Bullet lists + - Numbered lists + - Blockquotes (blue background, left border) + - Highlight boxes (custom tag parsing) + +- **Social Features**: + - Like button (heart icon, toggles red) + - Bookmark button (bookmark icon, toggles yellow) + - Share button (copy link to clipboard) + - Engagement stats display + +- **State Management**: + - ConsumerStatefulWidget for local state + - Provider: `newsArticleByIdProvider` (family provider) + - Bookmark and like states managed locally + +**HTML Parsing Logic**: +- Custom parser for simplified HTML tags +- Supports: `

`, `

`, `

`, `