feat(recommend): 新增推荐频道页并恢复首页沉浸式信息流

- tab1 推荐页改为接口分类频道:频道导航可横滑,选中频道自动滚动到可视区,内容区左右滑动切换分类
- 精选频道:顶部固定高度 banner 轮播图 + 接口 tag 筛选的上新短剧横滑 + 其余短剧双列网格;其他分类三列网格
- 分类内容支持懒加载、下拉刷新与上拉分页加载
- 卡片角标文案与背景色取自接口 tag/tagColor,短剧标题统一白色
- 恢复 tab0 为沉浸式全屏视频首页及其三 inner-tab 顶导(搜索/礼物入口)
- l10n 新增原创出品、立即观看、上新、编辑精选、全N集等多语言文案
This commit is contained in:
Vicky authored and trae-solo-agent committed 2026-10-27 19:57:42 +08:00
1 parent a3f3481f4f
commit c027acc91f
22 files changed
+2018 -318

No files matched your search

+43 -1
View File
@@ -397,9 +397,21 @@ abstract class AppLocalizations {
/// No description provided for @watchFullSeries.
///
/// In en, this message translates to:
/// **'Watch full series · {episodes} eps'**
/// **'Watch full series {episodes} eps'**
String watchFullSeries(String episodes);
/// No description provided for @feedEpisodePrefix.
///
/// In en, this message translates to:
/// **'EP{episode} | '**
String feedEpisodePrefix(int episode);
/// No description provided for @feedWatchingCount.
///
/// In en, this message translates to:
/// **'{count} watching'**
String feedWatchingCount(String count);
/// No description provided for @feedTabAnime.
///
/// In en, this message translates to:
@@ -1198,6 +1210,36 @@ abstract class AppLocalizations {
/// **'Original'**
String get originalTag;
/// No description provided for @originalProduction.
///
/// In en, this message translates to:
/// **'Original'**
String get originalProduction;
/// No description provided for @watchNowAction.
///
/// In en, this message translates to:
/// **'Watch Now'**
String get watchNowAction;
/// No description provided for @newArrivalBadge.
///
/// In en, this message translates to:
/// **'NEW'**
String get newArrivalBadge;
/// No description provided for @editorPick.
///
/// In en, this message translates to:
/// **'Editor\'s Pick'**
String get editorPick;
/// No description provided for @totalEpisodesShort.
///
/// In en, this message translates to:
/// **'{count} eps'**
String totalEpisodesShort(int count);
/// No description provided for @dramaTag.
///
/// In en, this message translates to: