@funhub/platform 0.2.3 → 0.2.4-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (226) hide show
  1. package/dist/assets/icons/detail/collect_nor.mjs +2 -0
  2. package/dist/assets/icons/detail/collect_sel.mjs +2 -0
  3. package/dist/assets/icons/detail/share.mjs +2 -0
  4. package/dist/assets/icons/eye-off-icon.mjs +1 -1
  5. package/dist/assets/icons/marquee-enter.mjs +2 -0
  6. package/dist/assets/icons/right_arrow.mjs +2 -0
  7. package/dist/assets/icons/search/avatar.mjs +2 -0
  8. package/dist/assets/images/marquee.mjs +2 -0
  9. package/dist/biz.d.mts +4 -11
  10. package/dist/biz.mjs +1 -1
  11. package/dist/common.d.mts +2 -5
  12. package/dist/common.mjs +1 -1
  13. package/dist/components/biz/basics/fullscreen-feed/runtime/user-action.mjs +1 -1
  14. package/dist/components/biz/basics/logo/variants/basic-logo/runtime/client.mjs +1 -1
  15. package/dist/components/biz/business/advertisement/ad-match.mjs +1 -1
  16. package/dist/components/biz/business/advertisement/banner-ad/client.mjs +1 -1
  17. package/dist/components/biz/business/advertisement/banner-ad/material.d.mts +2 -2
  18. package/dist/components/biz/business/advertisement/banner-ad/material.mjs +1 -1
  19. package/dist/components/biz/business/advertisement/banner-ad/schema.d.mts +4 -9
  20. package/dist/components/biz/business/advertisement/banner-ad/schema.mjs +1 -1
  21. package/dist/components/biz/business/advertisement/feed-ad/index.d.mts +31 -1
  22. package/dist/components/biz/business/advertisement/feed-ad/index.mjs +1 -1
  23. package/dist/components/biz/business/advertisement/floating-ad/client.mjs +1 -1
  24. package/dist/components/biz/business/advertisement/floating-ad/material.mjs +1 -1
  25. package/dist/components/biz/business/advertisement/icon-ad/client.mjs +1 -1
  26. package/dist/components/biz/business/advertisement/icon-ad/material.d.mts +1 -1
  27. package/dist/components/biz/business/advertisement/icon-ad/material.mjs +1 -1
  28. package/dist/components/biz/business/advertisement/icon-ad/schema.d.mts +1 -7
  29. package/dist/components/biz/business/advertisement/icon-ad/schema.mjs +1 -1
  30. package/dist/components/biz/business/advertisement/index.d.mts +2 -2
  31. package/dist/components/biz/business/advertisement/popup-ad/client.mjs +2 -2
  32. package/dist/components/biz/business/advertisement/popup-ad/index.d.mts +1 -1
  33. package/dist/components/biz/business/advertisement/popup-ad/material.d.mts +2 -2
  34. package/dist/components/biz/business/advertisement/popup-ad/schema.d.mts +15 -14
  35. package/dist/components/biz/business/advertisement/popup-ad/schema.mjs +1 -1
  36. package/dist/components/biz/business/advertisement/text-ad/client.mjs +1 -1
  37. package/dist/components/biz/business/advertisement/text-ad/material.d.mts +1 -1
  38. package/dist/components/biz/business/advertisement/text-ad/material.mjs +1 -1
  39. package/dist/components/biz/business/advertisement/text-ad/schema.d.mts +1 -5
  40. package/dist/components/biz/business/advertisement/text-ad/schema.mjs +1 -1
  41. package/dist/components/biz/business/banner/variants/basic-banner/runtime/client.mjs +1 -1
  42. package/dist/components/biz/business/banner-carousel/client.d.mts +1 -2
  43. package/dist/components/biz/business/banner-carousel/client.mjs +1 -1
  44. package/dist/components/biz/business/banner-carousel/default-props.mjs +1 -1
  45. package/dist/components/biz/business/channel-list/client.mjs +1 -1
  46. package/dist/components/biz/business/channel-list/default-props.mjs +1 -1
  47. package/dist/components/biz/business/detail/shared/detail-introduction.mjs +2 -0
  48. package/dist/components/biz/business/detail/shared/detail-operate.mjs +1 -1
  49. package/dist/components/biz/business/detail/shared/editor-preview.mjs +1 -1
  50. package/dist/components/biz/business/detail/shared/registry.d.mts +1 -36
  51. package/dist/components/biz/business/detail/shared/registry.mjs +1 -1
  52. package/dist/components/biz/business/detail/video-detail-actions/client.mjs +1 -1
  53. package/dist/components/biz/business/detail/video-detail-info/client.mjs +1 -1
  54. package/dist/components/biz/business/detail/video-detail-recommend/client.d.mts +13 -1
  55. package/dist/components/biz/business/detail/video-detail-recommend/client.mjs +1 -1
  56. package/dist/components/biz/business/detail/video-detail-recommend/material.mjs +1 -1
  57. package/dist/components/biz/business/header-search/header-avatar-icon/client.mjs +1 -1
  58. package/dist/components/biz/business/header-search/header-avatar-logo-search/client.d.mts +1 -1
  59. package/dist/components/biz/business/header-search/header-avatar-logo-search/client.mjs +1 -1
  60. package/dist/components/biz/business/header-search/header-avatar-logo-search/schema.d.mts +3 -4
  61. package/dist/components/biz/business/header-search/header-avatar-logo-search/schema.mjs +1 -1
  62. package/dist/components/biz/business/header-search/header-avatar-logo-search-icon/client.mjs +1 -1
  63. package/dist/components/biz/business/header-search/header-logo-search/client.mjs +1 -1
  64. package/dist/components/biz/business/header-search/header-search/client.mjs +1 -1
  65. package/dist/components/biz/business/header-search/shared/avatar.mjs +1 -1
  66. package/dist/components/biz/business/header-search/shared/logo.mjs +1 -1
  67. package/dist/components/biz/business/header-search/shared/search.mjs +1 -1
  68. package/dist/components/biz/business/home-recommend/home-recommend-grid/inspector-schema.d.mts +8 -0
  69. package/dist/components/biz/business/home-recommend/home-recommend-grid/inspector-schema.mjs +1 -1
  70. package/dist/components/biz/business/home-recommend/home-recommend-grid/material.d.mts +8 -0
  71. package/dist/components/biz/business/home-recommend/home-recommend-waterfall/inspector-schema.d.mts +8 -0
  72. package/dist/components/biz/business/home-recommend/home-recommend-waterfall/inspector-schema.mjs +1 -1
  73. package/dist/components/biz/business/home-recommend/home-recommend-waterfall/material.d.mts +8 -0
  74. package/dist/components/biz/business/home-recommend/shared/home-recommend-base.mjs +1 -1
  75. package/dist/components/biz/business/home-recommend/shared/home-recommend-preview.mjs +1 -1
  76. package/dist/components/biz/business/index.d.mts +3 -12
  77. package/dist/components/biz/business/large-feature-grid/card-item.mjs +1 -1
  78. package/dist/components/biz/business/large-feature-grid/client.mjs +1 -1
  79. package/dist/components/biz/business/large-feature-grid/schema.mjs +1 -1
  80. package/dist/components/biz/business/marquee/client.mjs +1 -1
  81. package/dist/components/biz/business/marquee/marquee.module.mjs +6 -2
  82. package/dist/components/biz/business/nav-bar/variants/basic-nav-bar/runtime/client.mjs +1 -1
  83. package/dist/components/biz/business/profile/index.d.mts +1 -1
  84. package/dist/components/biz/business/profile/profile-header/client.d.mts +1 -2
  85. package/dist/components/biz/business/profile/profile-header/client.mjs +1 -1
  86. package/dist/components/biz/business/profile/profile-header/index.d.mts +1 -1
  87. package/dist/components/biz/business/profile/profile-header/user-profile-avatar.mjs +1 -1
  88. package/dist/components/biz/business/profile/profile-header/user-profile-cover-background.mjs +1 -1
  89. package/dist/components/biz/business/profile/profile-main/client.mjs +1 -1
  90. package/dist/components/biz/business/profile/profile-main/shell.mjs +1 -1
  91. package/dist/components/biz/business/profile/profile-main/tabs/collect-tab/client.mjs +1 -1
  92. package/dist/components/biz/business/profile/profile-main/tabs/history-tab/client.mjs +1 -1
  93. package/dist/components/biz/business/profile/profile-main/tabs/like-tab/client.d.mts +1 -5
  94. package/dist/components/biz/business/profile/profile-main/tabs/like-tab/client.mjs +1 -1
  95. package/dist/components/biz/business/profile/profile-main/utils.mjs +1 -1
  96. package/dist/components/biz/business/search-history/client.mjs +1 -1
  97. package/dist/components/biz/business/search-history/schema.mjs +1 -1
  98. package/dist/components/biz/business/search-input/client.mjs +1 -1
  99. package/dist/components/biz/business/shortcut-grid/client.mjs +1 -1
  100. package/dist/components/biz/business/tab-bar/client.mjs +1 -1
  101. package/dist/components/common/collection-popup/collection-create-modal.mjs +2 -0
  102. package/dist/components/common/collection-popup/index.d.mts +0 -1
  103. package/dist/components/common/collection-popup/index.mjs +1 -1
  104. package/dist/components/common/icons/setting.mjs +1 -1
  105. package/dist/components/common/list/collection-list/collection-list-item.d.mts +0 -8
  106. package/dist/components/common/list/collection-list/collection-list-item.mjs +1 -1
  107. package/dist/components/common/list/collection-list/collection-list.d.mts +0 -6
  108. package/dist/components/common/list/collection-list/collection-list.mjs +1 -1
  109. package/dist/components/common/series-episodes/index.d.mts +1 -3
  110. package/dist/components/common/series-episodes/index.mjs +1 -1
  111. package/dist/components/common/skeleton/search-video-card-skeleton.mjs +2 -0
  112. package/dist/components/common/tab-bar/index.mjs +1 -1
  113. package/dist/components/pages/collection-detail/detail.mjs +1 -1
  114. package/dist/components/pages/edit/page.mjs +1 -1
  115. package/dist/components/pages/home/client.mjs +1 -1
  116. package/dist/components/pages/login/login-client.mjs +1 -1
  117. package/dist/components/pages/login/register.mjs +1 -1
  118. package/dist/components/pages/login/verify.mjs +4 -1
  119. package/dist/components/pages/publish/components/collection.mjs +1 -1
  120. package/dist/components/pages/search/page-client.mjs +1 -1
  121. package/dist/components/pages/search/search-result/index.mjs +1 -1
  122. package/dist/components/pages/search/search-result/search-all.mjs +1 -1
  123. package/dist/components/pages/search/search-result/search-user.mjs +1 -1
  124. package/dist/components/pages/search/search-result/search-video-info.mjs +1 -1
  125. package/dist/components/pages/search/search-utils.mjs +2 -0
  126. package/dist/components/pages/search/top-header.mjs +1 -1
  127. package/dist/components/pages/search-result/page-client.mjs +1 -1
  128. package/dist/components/pages/search-result/search-all.mjs +1 -1
  129. package/dist/components/pages/search-result/search-result-skeleton.mjs +2 -0
  130. package/dist/components/pages/search-result/search-tab.mjs +1 -1
  131. package/dist/components/pages/search-result/search-user.mjs +1 -1
  132. package/dist/components/pages/search-result/search-video.mjs +2 -0
  133. package/dist/components/pages/settings/_components/reset-password-drawer.mjs +2 -2
  134. package/dist/components/pages/settings/_components/settings.mjs +1 -1
  135. package/dist/components/pages/user-follow/_components/follow-no-login.mjs +1 -1
  136. package/dist/components/pages/video-list/video-list-client.mjs +1 -1
  137. package/dist/components/pages/video-list/video-list-item.mjs +2 -0
  138. package/dist/components/pages/video-list/video-list-skeleton.d.mts +3 -2
  139. package/dist/components/pages/video-list/video-list-skeleton.mjs +1 -1
  140. package/dist/components/ui/badge.d.mts +1 -1
  141. package/dist/components/ui/box.d.mts +1 -1
  142. package/dist/components/ui/button.d.mts +2 -2
  143. package/dist/components/ui/empty.d.mts +1 -1
  144. package/dist/components/ui/image.d.mts +4 -4
  145. package/dist/components/ui/item.d.mts +1 -1
  146. package/dist/i18n/locales/en.mjs +2 -2
  147. package/dist/i18n/locales/zh-CN.mjs +2 -2
  148. package/dist/materials.d.mts +1 -6
  149. package/dist/materials.mjs +1 -1
  150. package/dist/service/generated/client.d.mts +2 -38
  151. package/dist/service/generated/client.mjs +1 -1
  152. package/dist/service/generated/tanstack.d.mts +2 -47
  153. package/dist/service/generated/tanstack.mjs +1 -1
  154. package/dist/service.d.mts +3 -3
  155. package/dist/service.mjs +1 -1
  156. package/dist/types.d.mts +9 -662
  157. package/dist/utils/helper.d.mts +1 -1
  158. package/dist/utils/helper.mjs +1 -1
  159. package/dist/utils/schema/inspector.d.mts +2 -2
  160. package/package.json +2 -7
  161. package/theme.css +59 -170
  162. package/dist/assets/icons/channel-list/channel-active-indicator.mjs +0 -2
  163. package/dist/assets/icons/common/header-menu.mjs +0 -2
  164. package/dist/assets/icons/common/header-search-icon.mjs +0 -2
  165. package/dist/assets/icons/common/right_arrow_thin.mjs +0 -2
  166. package/dist/assets/icons/marquee-close.mjs +0 -2
  167. package/dist/assets/icons/marquee-speaker.mjs +0 -2
  168. package/dist/assets/images/shortcut-grid/shortcut-grid-card-bg-primary.mjs +0 -2
  169. package/dist/components/biz/business/detail/video-detail-recommend/shared.mjs +0 -2
  170. package/dist/components/biz/business/detail/video-detail-waterfall-recommend/client.d.mts +0 -8
  171. package/dist/components/biz/business/detail/video-detail-waterfall-recommend/client.mjs +0 -2
  172. package/dist/components/biz/business/detail/video-detail-waterfall-recommend/index.d.mts +0 -5
  173. package/dist/components/biz/business/detail/video-detail-waterfall-recommend/material.d.mts +0 -45
  174. package/dist/components/biz/business/detail/video-detail-waterfall-recommend/material.mjs +0 -2
  175. package/dist/components/biz/business/detail/video-detail-waterfall-recommend/schema.d.mts +0 -9
  176. package/dist/components/biz/business/detail/video-detail-waterfall-recommend/schema.mjs +0 -2
  177. package/dist/components/biz/business/detail/video-detail-waterfall-recommend/server.d.mts +0 -11
  178. package/dist/components/biz/business/detail/video-detail-waterfall-recommend/server.mjs +0 -2
  179. package/dist/components/biz/business/header-search/shared/header-action.mjs +0 -2
  180. package/dist/components/biz/business/header-search/shared/header-search-icon.mjs +0 -2
  181. package/dist/components/biz/business/header-search/shared/header-shell.mjs +0 -2
  182. package/dist/components/biz/business/hot-recommend/client.d.mts +0 -17
  183. package/dist/components/biz/business/hot-recommend/client.mjs +0 -2
  184. package/dist/components/biz/business/hot-recommend/index.d.mts +0 -5
  185. package/dist/components/biz/business/hot-recommend/material.d.mts +0 -24
  186. package/dist/components/biz/business/hot-recommend/material.mjs +0 -2
  187. package/dist/components/biz/business/hot-recommend/schema.d.mts +0 -23
  188. package/dist/components/biz/business/hot-recommend/schema.mjs +0 -2
  189. package/dist/components/biz/business/hot-recommend/server.d.mts +0 -11
  190. package/dist/components/biz/business/hot-recommend/server.mjs +0 -2
  191. package/dist/components/biz/business/profile/profile-main/empty-state.mjs +0 -2
  192. package/dist/components/biz/business/profile/profile-main/tabs/collect-tab/video-waterfall.mjs +0 -2
  193. package/dist/components/biz/business/ranking-recommend/client.d.mts +0 -17
  194. package/dist/components/biz/business/ranking-recommend/client.mjs +0 -70
  195. package/dist/components/biz/business/ranking-recommend/material.d.mts +0 -35
  196. package/dist/components/biz/business/ranking-recommend/material.mjs +0 -2
  197. package/dist/components/biz/business/ranking-recommend/schema.d.mts +0 -35
  198. package/dist/components/biz/business/ranking-recommend/schema.mjs +0 -2
  199. package/dist/components/biz/business/ranking-recommend/server.d.mts +0 -11
  200. package/dist/components/biz/business/ranking-recommend/server.mjs +0 -2
  201. package/dist/components/biz/business/ranking-recommend/shared/query.mjs +0 -2
  202. package/dist/components/biz/business/ranking-recommend/shared.d.mts +0 -15
  203. package/dist/components/biz/business/ranking-recommend/shared.mjs +0 -2
  204. package/dist/components/biz/business/search-waterfall-recommend/client.d.mts +0 -9
  205. package/dist/components/biz/business/search-waterfall-recommend/client.mjs +0 -2
  206. package/dist/components/biz/business/search-waterfall-recommend/index.d.mts +0 -4
  207. package/dist/components/biz/business/search-waterfall-recommend/material.d.mts +0 -40
  208. package/dist/components/biz/business/search-waterfall-recommend/material.mjs +0 -2
  209. package/dist/components/biz/business/search-waterfall-recommend/server.d.mts +0 -8
  210. package/dist/components/biz/business/search-waterfall-recommend/server.mjs +0 -2
  211. package/dist/components/common/collection-popup/create-collection-sheet.d.mts +0 -41
  212. package/dist/components/common/collection-popup/create-collection-sheet.mjs +0 -2
  213. package/dist/components/common/list/collection-list/collection-select-icon.mjs +0 -2
  214. package/dist/components/common/list/waterfall-recommend/index.d.mts +0 -2
  215. package/dist/components/common/list/waterfall-recommend/waterfall-recommend.d.mts +0 -99
  216. package/dist/components/common/list/waterfall-recommend/waterfall-recommend.mjs +0 -2
  217. package/dist/components/pages/collection-detail/_components/collection-detail-video-card.mjs +0 -2
  218. package/dist/components/pages/login/auth-page-styles.mjs +0 -6
  219. package/dist/components/pages/search/search-result/shared.mjs +0 -2
  220. package/dist/components/pages/search-result/search-empty.mjs +0 -2
  221. package/dist/components/pages/search-result/search-video-info.mjs +0 -2
  222. package/dist/components/pages/search-result/shared.mjs +0 -2
  223. package/dist/components/pages/search-result/top-header.mjs +0 -2
  224. package/dist/components/pages/video-list/video-list-recommend-item.mjs +0 -2
  225. package/dist/theme-tokens.d.mts +0 -9
  226. package/dist/theme-tokens.mjs +0 -2
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{useRouter as e}from"../../../utils/use-compatible-router.mjs";import{Input as t}from"../../ui/input.mjs";import{toast as n}from"../../../ui.mjs";import{useKeepAliveEffect as r,useKeepAliveState as i}from"../../common/keep-scroll-position/index.mjs";import{isPCEnv as a}from"../../../utils/tools.mjs";import{LeftArrowIcon as o}from"../../common/icons/left-arrow.mjs";import s from"../../../assets/icons/search.mjs";import c from"../../../assets/icons/clear.mjs";import{memo as l,useCallback as u}from"react";import{jsx as d,jsxs as f}from"react/jsx-runtime";import{useSearchParams as p}from"next/navigation";import{useTranslations as m}from"next-intl";function h(){}const g=l(({setSearchInputVal:l,initInputVal:g,initInputVersion:_,addSearchHistory:v,clearCallback:y=h})=>{let b=m(`components.pages.search`),x=e(),[S,C]=i(`search-input-val`,``),w=p().get(`q`),T=e=>{C(e.target.value)},E=u(e=>{l(e),v(e)},[v,l]);r(()=>{g&&(C(g),E(g))},[E,g,_,C],`search-init-input-effect`),r(()=>{w&&(C(w),E(w))},[E,C,w],`search-url-params-effect`);function D(){if(n.dismiss(),window.location.search.split(`from_code=`)[1]){x.push(`/`);return}x.back()}return d(`div`,{className:`app-top-nav relative h-[66px] w-full`,children:d(`header`,{className:`fixed left-0 right-0 top-0 z-50`,style:{willChange:`transform`,transform:`translateZ(0)`},children:f(`div`,{className:`mx-auto flex h-[66px] items-end gap-[8px] px-[16px] pb-[16px] pt-[16px]`,children:[d(`button`,{type:`button`,"aria-label":`返回`,className:`flex size-[24px] shrink-0 items-center justify-center text-white`,onClick:D,children:d(o,{className:`h-[16px] w-[16px]`})}),f(`div`,{className:`flex h-[34px] min-w-0 flex-1 items-center overflow-hidden rounded-[100px] border border-[#E62AFF]/90 bg-black/40 backdrop-blur-[2px]`,children:[f(`div`,{className:`relative flex h-full min-w-0 flex-1 items-center pl-[12px] pr-[10px]`,children:[d(`span`,{className:`pointer-events-none absolute inset-y-0 left-[12px] flex items-center justify-center`,children:d(s,{className:`h-[14px] w-[14px] text-white/60`})}),d(t,{placeholder:b(`topHeader.placeholder`),maxLength:20,value:S,className:`!h-[20px] !w-full !rounded-none !border-0 !bg-transparent !px-0 !pl-[22px] !pr-[18px] !py-0 !text-[14px] !leading-[20px] !text-white placeholder:!text-white/90`,onChange:T,onKeyDown:e=>{if(e.key===`Enter`){if(e.preventDefault(),!S.trim())return;E(S.trim())}}}),S&&d(`span`,{className:`absolute inset-y-0 right-0 flex items-center justify-center`,children:d(c,{className:`h-[15px] w-[15px] text-white/50`,onClick:()=>{a()||(C(``),l(``),y())}})})]}),d(`button`,{type:`button`,className:`mx-[2px] flex h-[30px] w-[56px] shrink-0 items-center justify-center rounded-[100px] bg-[linear-gradient(90deg,#9756E3_0%,#6C43EE_100%)] text-[14px] leading-[20px] text-white`,onClick:()=>{S.trim()&&E(S.trim())},children:b(`topHeader.search`)})]})]})})})});g.displayName=`SearchTopHeader`;export{g as default};
2
+ "use client";import{useRouter as e}from"../../../utils/use-compatible-router.mjs";import{Input as t}from"../../ui/input.mjs";import{toast as n}from"../../../ui.mjs";import{useKeepAliveEffect as r,useKeepAliveState as i}from"../../common/keep-scroll-position/index.mjs";import{isPCEnv as a}from"../../../utils/tools.mjs";import{LeftArrowIcon as o}from"../../common/icons/left-arrow.mjs";import s from"../../../assets/icons/search.mjs";import c from"../../../assets/icons/clear.mjs";import{memo as l,useCallback as u}from"react";import{jsx as d,jsxs as f}from"react/jsx-runtime";import{useSearchParams as p}from"next/navigation";import{useTranslations as m}from"next-intl";function h(){}const g=l(({setSearchInputVal:l,initInputVal:g,initInputVersion:_,addSearchHistory:v,clearCallback:y=h})=>{let b=m(`components.pages.search`),x=e(),[S,C]=i(`search-input-val`,``),w=p().get(`q`),T=e=>{let t=e.target.value;C(t)},E=u(e=>{l(e),v(e)},[v,l]);r(()=>{g&&(C(g),E(g))},[g,_],`search-init-input-effect`),r(()=>{w&&(C(w),E(w))},[w],`search-url-params-effect`);function D(){if(n.dismiss(),window.location.search.split(`from_code=`)[1]){x.push(`/`);return}x.back()}return d(`div`,{className:`app-top-nav relative w-full h-[55px]`,children:d(`header`,{className:`fixed top-0 left-0 right-0 z-50 bg-bg1`,style:{willChange:`transform`,transform:`translateZ(0)`},children:f(`div`,{className:`mx-auto flex h-[55px] items-center gap-[12px] px-[12px] py-[8px]`,children:[d(`button`,{type:`button`,"aria-label":`返回`,className:`flex shrink-0 items-center justify-center text-text1`,onClick:D,children:d(o,{className:`h-[16px] w-[16px]`})}),d(`div`,{className:`h-[40px] flex-1 rounded-[20px] bg-[linear-gradient(175deg,rgba(253,76,94,0.4)_0%,rgba(255,119,131,0.4)_100%)] p-px`,children:f(`div`,{className:`relative h-full w-full overflow-hidden rounded-[19px] bg-bg1`,children:[d(`div`,{className:`absolute inset-0 bg-bg2 opacity-50`}),d(s,{className:`absolute left-[12px] top-1/2 z-[1] h-[14px] w-[14px] -translate-y-1/2 text-text3`}),d(t,{placeholder:b(`topHeader.placeholder`),maxLength:20,value:S,className:`!relative !z-[1] !h-full !w-full !rounded-none !border-0 !bg-transparent !px-0 !pl-[34px] !pr-[34px] !py-0 !text-[14px] !leading-[22px] !text-text1 placeholder:!text-text3`,onChange:T,onKeyDown:e=>{if(e.key===`Enter`){if(e.preventDefault(),!S)return;E(S)}}}),S&&d(c,{className:`absolute right-[12px] top-1/2 z-10 h-[15px] w-[15px] -translate-y-1/2 text-text3`,onClick:()=>{a()||(C(``),l(``),y())}})]})}),d(`button`,{type:`button`,className:`flex shrink-0 items-center justify-center text-[16px] leading-[24px] text-text1`,onClick:()=>{S&&E(S)},children:b(`topHeader.search`)})]})})})});export{g as default};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{updateUrlParams as e}from"../../../utils/common.mjs";import t from"../../../utils/event-bus.mjs";import{useUserStore as n}from"../../../store/modules/user-store.mjs";import{Box as r}from"../../ui/box.mjs";import{eventKey as i}from"../../../constants/event-key.mjs";import{useSearchHistory as a}from"../../../hooks/use-search-history.mjs";import{SEARCH_RESULT_SORT_OPTIONS as o}from"./shared.mjs";import s from"./search-user.mjs";import c from"./search-video-info.mjs";import l from"./search-all.mjs";import{SearchTab as u}from"./search-tab.mjs";import d from"./top-header.mjs";import{useEffect as f,useMemo as p,useState as m}from"react";import{jsx as h,jsxs as g}from"react/jsx-runtime";import{useSearchParams as _}from"next/navigation";import{useTranslations as v}from"next-intl";const y=[{labelKey:`tabs.all`,value:`all`},{labelKey:`tabs.video`,value:`video`},{labelKey:`tabs.user`,value:`user`}];function b(){let b=v(`components.pages.search.pageClient`),{userInfo:x}=n(),S=x?.user_id||`guest`,C=_().get(`q`)?.toString()||``,[w,T]=m(C),[E,D]=m(0);f(()=>{T(C),D(e=>e+1)},[C]);let[O,k]=m(y[0].value),[A,j]=m(o[0].value),[M,N]=m(0),{addHistory:P}=a({storageKey:S}),F=p(()=>y.map(e=>({value:e.value,label:b(e.labelKey)})),[b]),I=p(()=>w.trim()!==``,[w]);return f(()=>(t.on(i.EXCHANGE_SEARCH_TYPE,k),()=>{t.off(i.EXCHANGE_SEARCH_TYPE,k)}),[]),g(r,{className:`flex h-dvh w-full flex-col`,children:[h(r,{className:`shrink-0`,children:h(d,{setSearchInputVal:t=>{t!==w&&(T(t),e({q:t}))},initInputVal:C,initInputVersion:E,addSearchHistory:P})}),h(r,{className:`mt-[16px] min-h-0 flex-1 overflow-hidden rounded-t-[16px]`,children:I&&g(r,{className:`flex h-full flex-col bg-[linear-gradient(180deg,rgba(6,3,21,0.9)_0%,rgba(6,3,21,0)_100%)] backdrop-blur-[2px]`,children:[h(u,{searchType:O,tabList:F,onChange:e=>{k(e)},sort:A,onSortChange:e=>{j(e),N(e=>e+1)}}),g(`div`,{className:`min-h-0 flex-1 overflow-y-auto pb-[24px]`,children:[O===`user`&&h(s,{inputVal:w,sort:A,refreshVersion:M}),O===`all`&&h(l,{searchInputVal:w,sort:A,refreshVersion:M}),O===`video`&&h(c,{inputVal:w,sort:A,refreshVersion:M})]})]})})]})}export{b as default};
2
+ "use client";import{updateUrlParams as e}from"../../../utils/common.mjs";import t from"../../../utils/event-bus.mjs";import{useUserStore as n}from"../../../store/modules/user-store.mjs";import{useRouter as r}from"../../../utils/use-compatible-router.mjs";import{Box as i}from"../../ui/box.mjs";import{eventKey as a}from"../../../constants/event-key.mjs";import{useSearchHistory as o}from"../../../hooks/use-search-history.mjs";import s from"../search/top-header.mjs";import c from"./search-user.mjs";import l from"./search-video.mjs";import u from"./search-all.mjs";import{SORT_OPTIONS as d,SearchTab as f}from"./search-tab.mjs";import{useEffect as p,useMemo as m,useState as h}from"react";import{Fragment as g,jsx as _,jsxs as v}from"react/jsx-runtime";import{useSearchParams as y}from"next/navigation";const b=[{label:`综合`,value:`all`},{label:`视频`,value:`video`},{label:`用户`,value:`user`}];function x(){let x=r(),{userInfo:S}=n(),C=S?.user_id||`guest`,w=y().get(`q`)?.toString()||``,[T,E]=h(w),[D,O]=h(0);p(()=>{E(w),O(e=>e+1)},[w]);let[k,A]=h(b[0].value),[j,M]=h(d[0].value),[N,P]=h(0),[,F]=h([]),{addHistory:I}=o({storageKey:C}),L=m(()=>T.trim()!==``,[T]);p(()=>(t.on(a.EXCHANGE_SEARCH_TYPE,A),()=>{t.off(a.EXCHANGE_SEARCH_TYPE,A)}),[A]);function R(){x.back()}return v(i,{className:`w-full min-h-screen bg-bg1 pb-[12px] overscroll-y-none`,children:[_(s,{setSearchInputVal:t=>{t!==T&&(F([]),E(t),e({q:t}))},initInputVal:w,initInputVersion:D,addSearchHistory:I,clearCallback:R}),_(f,{searchType:k,tabList:b,onChange:e=>{A(e),F([])},sort:j,onSortChange:e=>{M(e),P(e=>e+1)}}),L&&v(g,{children:[k===`user`&&_(c,{mode:`user`,inputVal:T,sort:j,refreshVersion:N}),k===`all`&&_(u,{searchInputVal:T,sort:j,refreshVersion:N}),k===`video`&&_(l,{mode:`video`,inputVal:T,sort:j,refreshVersion:N})]}),!L&&_(i,{className:`w-full pt-[12px]`})]})}export{x as default};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import e from"../../../utils/event-bus.mjs";import{gContentGetRecommendVideoList as t}from"../../../service/generated/client.mjs";import{gContentGetRecommendVideoListKey as n}from"../../../service/generated/tanstack.mjs";import{Box as r}from"../../ui/box.mjs";import{Text as i}from"../../ui/text.mjs";import{Skeleton as a}from"../../ui/skeleton.mjs";import{useRequest as o}from"../../../hooks/query/use-query.mjs";import{eventKey as s}from"../../../constants/event-key.mjs";import{SearchResultEmpty as c}from"./search-empty.mjs";import{SearchUserRowCard as l}from"./search-user.mjs";import{SearchVideoWaterfall as u}from"./search-video-info.mjs";import{useEffect as d,useMemo as f,useState as p}from"react";import{jsx as m,jsxs as h}from"react/jsx-runtime";import{useTranslations as g}from"next-intl";function _({className:e}){return m(`svg`,{viewBox:`0 0 12.728 7.778`,fill:`currentColor`,"aria-hidden":!0,className:e,children:m(`path`,{d:`M6.36391 4.94972L11.3137 0L12.7279 1.41421L6.36391 7.77822L0 1.41421L1.41421 0L6.36391 4.94972Z`})})}function v(e,t){return JSON.stringify({type:1,keywords:e,sort:t})}function y(){return h(r,{className:`w-full`,children:[m(r,{className:`px-[16px]`,children:h(r,{className:`overflow-hidden rounded-[8px] bg-white/8`,children:[m(r,{className:`flex flex-col gap-[16px] px-[15px] pt-[16px]`,children:Array.from({length:3}).map((e,t)=>h(r,{className:`flex h-[66px] items-center gap-[8px]`,children:[m(a,{className:`size-[56px] rounded-full bg-white/10`}),h(r,{className:`min-w-0 flex-1`,children:[m(a,{className:`h-[20px] w-[96px] rounded-[4px] bg-white/10`}),m(a,{className:`mt-[2px] h-[20px] w-full rounded-[4px] bg-white/10`}),m(a,{className:`mt-[2px] h-[20px] w-[120px] rounded-[4px] bg-white/10`})]}),m(a,{className:`h-[24px] w-[64px] rounded-full bg-white/10`})]},`search-all-user-skeleton-${t}`))}),m(r,{className:`flex h-[48px] items-center justify-center`,children:m(a,{className:`h-[20px] w-[88px] rounded-[4px] bg-white/10`})})]})}),h(r,{className:`mt-[24px] flex w-full justify-between gap-[16px] px-[16px]`,children:[h(r,{className:`flex w-[171px] shrink-0 flex-col gap-[16px]`,children:[m(a,{className:`h-[218px] w-[171px] rounded-[8px] bg-white/8`}),m(a,{className:`h-[120px] w-[171px] rounded-[8px] bg-white/8`})]}),h(r,{className:`flex w-[171px] shrink-0 flex-col gap-[16px]`,children:[m(a,{className:`h-[120px] w-[171px] rounded-[8px] bg-white/8`}),m(a,{className:`h-[218px] w-[171px] rounded-[8px] bg-white/8`})]})]})]})}function b({searchInputVal:a,sort:b,refreshVersion:x}){let S=g(`components.pages.search.searchResult`),[C,w]=p(!1),[T,E]=p({});d(()=>{w(!1),E({})},[x,a,b]);let D=f(()=>v(a,b),[a,b]),{data:O,isFetching:k,isLoading:A}=o(f(()=>[...n({data_type:2,extra_params:D,page:1,page_size:10}),x],[x,D]),async()=>(await t({data_type:2,extra_params:D,page:1,page_size:10})).data??{}),j=f(()=>O?.users?.list??[],[O]),M=f(()=>j.map(e=>{let t=String(e.user_id||``).trim();return!t||T[t]===void 0?e:{...e,is_following:T[t]}}),[T,j]),N=f(()=>O?.videos?.list??[],[O]),P=f(()=>C?M:M.slice(0,3),[C,M]),F=!C&&M.length>3,I=!!((A||k)&&M.length===0&&N.length===0),L=!k&&M.length===0&&N.length===0;return I?m(y,{}):L?m(c,{text:S(`searchAll.emptyResult`)}):h(r,{className:`w-full pb-[24px]`,children:[P.length>0&&m(r,{className:`px-[16px]`,children:h(r,{className:`overflow-hidden rounded-[8px] bg-white/10`,children:[m(r,{className:`flex flex-col gap-[16px] px-[15px] pt-[16px] ${F?``:`pb-[16px]`}`.trim(),children:P.map((e,t)=>m(l,{item:e,onFollowChange:t=>{let n=String(e.user_id||``).trim();n&&E(e=>({...e,[n]:t?1:0}))}},String(e.user_id??t)))}),F&&h(`button`,{type:`button`,className:`flex h-[48px] w-full items-center justify-center gap-[4px] rounded-bl-[8px] rounded-br-[8px] text-[rgba(255,255,255,0.7)]`,onClick:()=>w(!0),children:[m(i,{className:`text-[14px] leading-[20px] font-normal`,children:`展开全部`}),m(r,{className:`flex size-[24px] items-center justify-center`,children:m(_,{className:`h-[7.778px] w-[12.728px] text-[rgba(255,255,255,0.7)]`})})]})]})}),N.length>0&&m(u,{list:N,title:`相似推荐`,onMoreClick:()=>{e.emit(s.EXCHANGE_SEARCH_TYPE,`video`)},sectionClassName:P.length>0?`mt-[24px] w-full`:`w-full`})]})}export{b as default};
2
+ "use client";import{gContentGetRecommendVideoList as e}from"../../../service/generated/client.mjs";import{gContentGetRecommendVideoListKey as t}from"../../../service/generated/tanstack.mjs";import{Box as n}from"../../ui/box.mjs";import{List as r}from"../../ui/list.mjs";import{useRequest as i}from"../../../hooks/query/use-query.mjs";import{SearchResultSkeleton as a}from"./search-result-skeleton.mjs";import o from"./search-user.mjs";import s from"./search-video.mjs";import{useMemo as c}from"react";import{jsx as l,jsxs as u}from"react/jsx-runtime";import{useTranslations as d}from"next-intl";function f(e,t=1){return JSON.stringify({type:1,keywords:e,sort:t})}function p({searchInputVal:p,sort:m,refreshVersion:h}){let g=d(`components.pages.search.searchResult`),_=c(()=>f(p,m),[p,m]),{data:v,isFetching:y,isLoading:b}=i(c(()=>[...t({data_type:2,extra_params:_,page:1,page_size:10}),h],[h,_]),async()=>(await e({data_type:2,extra_params:_,page:1,page_size:10})).data??{}),x=c(()=>v?.videos?.list??[],[v]),S=c(()=>!!v?.videos?.has_more,[v]),C=c(()=>v?.users?.list??[],[v]),w=x.length===0&&C.length===0&&!y;return x.length===0&&C.length===0&&(b||y)?l(a,{}):w?l(n,{className:`w-full pt-[12px]`,children:l(r,{loading:y,empty:`nodata`,emptyText:g(`searchAll.emptyResult`)})}):u(n,{className:`w-full`,children:[C.length>0&&l(o,{mode:`all`,list:C}),l(s,{mode:`all`,list:x,hasMore:S})]})}export{p as default};
@@ -0,0 +1,2 @@
1
+
2
+ "use client";import{SearchVideoCardSkeleton as e}from"../../common/skeleton/search-video-card-skeleton.mjs";import{jsx as t}from"react/jsx-runtime";function n({count:n=6}){return t(e,{count:n,uniqueKeyPrefix:`search-result-skeleton`})}export{n as SearchResultSkeleton};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{Box as e}from"../../ui/box.mjs";import{Popover as t,PopoverContent as n,PopoverTrigger as r}from"../../ui/popover.mjs";import{SEARCH_RESULT_SORT_OPTIONS as i}from"./shared.mjs";import{memo as a,useState as o}from"react";import{jsx as s,jsxs as c}from"react/jsx-runtime";function l({className:e}){return c(`svg`,{viewBox:`0 0 22 15`,fill:`currentColor`,"aria-hidden":!0,className:e,children:[s(`rect`,{x:`0`,y:`0`,width:`13.5`,height:`2`,rx:`1`}),s(`rect`,{x:`0`,y:`6.5`,width:`13.5`,height:`2`,rx:`1`}),s(`rect`,{x:`0`,y:`13`,width:`13.5`,height:`2`,rx:`1`}),s(`path`,{d:`M15 1C15 0.447715 15.4477 0 16 0C16.5523 0 17 0.447715 17 1V11.2969L18.2412 9.84961C18.6006 9.43028 19.2311 9.38179 19.6504 9.74121C20.0697 10.1006 20.1182 10.7311 19.7588 11.1504L16.7588 14.6504C16.4865 14.9681 16.0458 15.0826 15.6533 14.9375C15.2608 14.7923 15 14.4185 15 14V1Z`})]})}const u=a(({searchType:a,onChange:u,tabList:d,sort:f,onSortChange:p})=>{let[m,h]=o(!1);return s(e,{as:`nav`,className:`sticky top-0 z-40 px-[16px] pb-[16px] pt-[12px]`,children:c(e,{className:`flex h-[24px] items-center justify-between`,children:[s(e,{className:`flex items-center gap-[10px]`,children:d.map(e=>s(`button`,{type:`button`,className:`text-[16px] leading-[24px] transition-colors ${a===e.value?`font-medium text-white`:`font-normal text-white/80`}`,onClick:()=>{a!==e.value&&u(e.value)},children:e.label},e.value))}),c(t,{open:m,onOpenChange:h,children:[s(r,{"aria-label":`排序筛选`,className:`flex size-[24px] items-center justify-center`,children:s(l,{className:`h-[15px] w-[20px] text-white/40`})}),s(n,{side:`bottom`,align:`end`,sideOffset:8,className:`w-[132px] border border-white/10 bg-[#10071E]/95 p-[8px] backdrop-blur-[18px]`,children:s(e,{className:`flex flex-col gap-[4px]`,children:i.map(e=>s(`button`,{type:`button`,className:`rounded-[8px] px-[12px] py-[8px] text-left text-[14px] leading-[20px] ${e.value===f?`bg-white/10 text-white`:`text-white/70`}`,onClick:()=>{p(e.value),h(!1)},children:e.label},e.value))})})]})]})})});u.displayName=`SearchTab`;export{u as SearchTab};
2
+ "use client";import{Button as e}from"../../ui/button.mjs";import{Box as t}from"../../ui/box.mjs";import{Text as n}from"../../ui/text.mjs";import{Popover as r,PopoverContent as i,PopoverTrigger as a}from"../../ui/popover.mjs";import o from"../../../assets/icons/search/filter.mjs";import{memo as s,useState as c}from"react";import{ChevronUpIcon as l}from"lucide-react";import{Fragment as u,jsx as d,jsxs as f}from"react/jsx-runtime";const p=[{label:`综合`,value:1},{label:`最新`,value:2},{label:`最热`,value:3}],m=s(({searchType:s,onChange:m,tabList:h,sort:g,onSortChange:_})=>{let[v,y]=c(!1);return f(u,{children:[f(t,{as:`nav`,className:`w-full h-[42px] bg-bg1 flex items-center justify-between px-[3px] fixed top-[54px] left-0 right-0 z-40`,children:[d(t,{className:`flex items-center`,children:h.map(e=>d(n,{className:`h-[30px] rounded-[15px] leading-[30px] px-[9px] text-[16px] bg-transparent transition-all duration-150 ${s===e.value?`text-theme5 !text-[20px] font-bold`:`text-text2`}`,onClick:()=>{s!==e.value&&m(e.value)},children:e.label},e.value))}),f(r,{open:v,onOpenChange:y,children:[d(a,{"aria-label":`排序筛选`,className:`shrink-0 w-7 h-7 rounded-[min(var(--radius-md),12px)] inline-flex items-center justify-center`,children:d(o,{className:`w-[16px] h-[16px]`})}),f(i,{side:`bottom`,align:`end`,className:`w-[100vw] bg-muted`,children:[d(n,{as:`p`,className:`text-[14px] font-medium text-text1 mb-[12px]`,children:`排序方式`}),f(t,{className:`flex flex-col gap-[8px]`,children:[d(t,{className:`flex justify-between gap-[8px]`,children:p.map(t=>d(e,{variant:g===t.value?`default`:`outline`,size:`sm`,className:`w-[100px]`,onClick:()=>{_(t.value),y(!1)},children:t.label},t.value))}),f(e,{variant:`ghost`,size:`sm`,className:`w-full justify-center gap-[4px] text-text2`,onClick:()=>y(!1),children:[d(l,{className:`w-[14px] h-[14px]`}),`收起`]})]})]})]})]}),d(t,{className:`w-full h-[42px]`})]})});m.displayName=`SearchTab`;export{p as SORT_OPTIONS,m as SearchTab};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{useUserStore as e}from"../../../store/modules/user-store.mjs";import{gContentGetRecommendVideoList as t,pInteractionFollow as n,pInteractionUnfollow as r}from"../../../service/generated/client.mjs";import{Image as i}from"../../ui/image.mjs";import{Box as a}from"../../ui/box.mjs";import{InfiniteScroll as o}from"../../ui/infinite-scroll.mjs";import{Text as s}from"../../ui/text.mjs";import{Skeleton as c}from"../../ui/skeleton.mjs";import{usePaginated as l}from"../../../hooks/query/use-query.mjs";import{useRequireLogin as u}from"../../../hooks/use-auth.mjs";import d from"../../../assets/images/user/default_avatar.mjs";import{SearchResultEmpty as f}from"./search-empty.mjs";import{formatSearchFollowerCount as p,resolveSearchUserDescription as m,resolveSearchUserName as h}from"./shared.mjs";import{memo as g,useCallback as _,useEffect as v,useMemo as y,useState as b}from"react";import{Check as x,Plus as S}from"lucide-react";import{jsx as C,jsxs as w}from"react/jsx-runtime";import{toast as T}from"sonner";import{useTranslations as E}from"next-intl";import D from"next/link";const O=typeof d==`string`?d:d.src;function k(e,t){return String(t||e?.user_id||e?.userId||``).trim()}function A({src:e,alt:t,variant:n}){let r=n===`row`?`size-[56px] p-[4.375px]`:`size-[40px] p-[3px]`,o=n===`row`?`border-[3px]`:`border-[2px]`;return C(a,{className:`rounded-full bg-white/20 ${r}`,children:C(a,{className:`relative size-full overflow-hidden rounded-full border-solid border-white/40 ${o}`,children:C(i,{src:e||O,fill:!0,objectFit:`cover`,alt:t})})})}function j({item:t,variant:i,onFollowChange:a}){let o=u(),{userInfo:c,userId:l}=e(),[d,f]=b(!1),p=k(c,l),m=p!==``&&p===String(t.user_id||``).trim(),h=!!t.is_following,g=_(()=>{!t.user_id||d||o(()=>{let i=k(e.getState().userInfo,e.getState().userId);if(!i){T.error(`请先登录`);return}(async()=>{f(!0);try{let e=h?await r({follower_id:i,followee_id:t.user_id}):await n({follower_id:i,followee_id:t.user_id});if(e.code!==0){T.error(e.message||(h?`取消关注失败`:`关注失败`));return}a?.(!h)}catch(e){console.error(`切换关注状态失败`,e),T.error(h?`取消关注失败`:`关注失败`)}finally{f(!1)}})()})},[h,t.user_id,a,d,o]);return m?null:i===`grid`?C(`button`,{type:`button`,"aria-label":h?`取消关注`:`关注`,className:`flex size-[24px] shrink-0 items-center justify-center rounded-full transition-opacity ${h?`bg-white/15 text-white`:`bg-black/30 text-white/75`} ${d?`opacity-50`:``}`,onClick:g,children:C(h?x:S,{className:`size-[14px]`})}):w(`button`,{type:`button`,className:`flex h-[24px] shrink-0 items-center justify-center rounded-full transition-opacity ${h?`border border-white/25 bg-white/10 px-[8px] text-white/85`:`w-[64px] border border-white/60 bg-black/20 text-white/60`} ${d?`opacity-50`:``}`,onClick:g,children:[!h&&C(S,{className:`mr-[2px] size-[16px]`}),C(s,{className:h?`text-[12px] leading-[18px]`:`text-[14px] leading-[20px]`,children:h?`已关注`:`关注`})]})}const M=g(({item:e,onFollowChange:t})=>{let n=h(e),r=m(e),i=p(e.follower_count);return w(a,{className:`flex w-full items-center gap-[8px]`,children:[w(D,{href:`/profile/${e.user_id||``}`,className:`flex min-w-0 flex-1 items-center gap-[8px]`,children:[C(A,{src:e.avatar,alt:n||`用户头像`,variant:`row`}),w(a,{className:`min-w-0 max-w-[194px] flex-1`,children:[C(s,{className:`block truncate text-[14px] leading-[20px] font-normal text-white`,children:n}),C(s,{className:`mt-[2px] block truncate text-[14px] leading-[20px] text-white/60`,children:r}),w(s,{className:`mt-[2px] block truncate text-[14px] leading-[20px] text-white/60`,children:[`粉丝:`,i]})]})]}),C(j,{item:e,variant:`row`,onFollowChange:t})]})});M.displayName=`SearchUserRowCard`;const N=g(({item:e,onFollowChange:t})=>{let n=h(e),r=m(e);return w(a,{className:`h-[170px] rounded-[8px] bg-white/10 px-[16px] py-[16px]`,children:[w(a,{className:`flex items-start justify-between`,children:[C(D,{href:`/profile/${e.user_id||``}`,className:`flex items-center`,children:C(A,{src:e.avatar,alt:n||`用户头像`,variant:`grid`})}),C(j,{item:e,variant:`grid`,onFollowChange:t})]}),w(D,{href:`/profile/${e.user_id||``}`,className:`mt-[16px] block`,children:[C(s,{className:`block truncate text-[14px] leading-[20px] font-medium text-white`,children:n}),C(s,{className:`mt-[8px] block text-[14px] leading-[20px] text-white/60 line-clamp-4`,children:r})]})]})});N.displayName=`SearchUserGridCard`;const P={background:`linear-gradient(180deg, rgba(255,30,255,0.8) 0%, rgba(108,67,238,0) 100%), linear-gradient(145deg, rgba(255,30,172,0.6) 2.9%, rgba(108,67,238,0) 100%), linear-gradient(180deg, rgba(151,86,227,1) 0%, rgba(108,67,238,1) 100%)`,WebkitMask:`linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0)`,WebkitMaskComposite:`xor`,maskComposite:`exclude`,padding:`0.5px`},F=g(({item:e,isFirst:t,onFollowChange:n})=>w(a,{className:`relative flex h-[88px] items-center rounded-[8px] bg-white/10 px-[12px] py-[8px]`,children:[t&&C(a,{className:`pointer-events-none absolute inset-0 rounded-[8px]`,style:P}),C(M,{item:e,onFollowChange:n})]}));F.displayName=`SearchUserCard`;function I(){return C(a,{className:`flex flex-col gap-[12px] px-[16px]`,children:Array.from({length:6}).map((e,t)=>w(a,{className:`flex h-[88px] items-center gap-[8px] rounded-[8px] bg-white/8 px-[12px] py-[8px]`,children:[C(c,{className:`size-[56px] shrink-0 rounded-full bg-white/10`}),w(a,{className:`min-w-0 flex-1`,children:[C(c,{className:`h-[20px] w-[100px] rounded-[4px] bg-white/10`}),C(c,{className:`mt-[4px] h-[20px] w-[160px] rounded-[4px] bg-white/10`}),C(c,{className:`mt-[4px] h-[20px] w-[80px] rounded-[4px] bg-white/10`})]}),C(c,{className:`h-[24px] w-[64px] shrink-0 rounded-full bg-white/10`})]},`search-user-row-skeleton-${t}`))})}const L=g(({inputVal:e,sort:n,refreshVersion:r})=>{let i=E(`components.pages.search.searchResult`),[s,c]=b({});v(()=>{c({})},[e,r,n]);let u=_(async r=>await t({data_type:2,extra_params:JSON.stringify({type:4,keywords:e,sort:n}),page:r||1,page_size:20}),[e,n]),d=l({key:y(()=>[`search-result`,`user`,e,n,r],[e,r,n]),initialPageParam:1,async queryFn(e){return(await u(e))?.data?.users??{has_more:!1,total:0,list:[]}},getNextPageParam(e,t){if(e.has_more)return t.length+1}}),p=y(()=>(d.data?.pages??[]).flatMap(e=>e.list??[]).map(e=>{let t=String(e.user_id||``).trim();return!t||s[t]===void 0?e:{...e,is_following:s[t]}}),[s,d.data?.pages]),m=!!((d.isPending||d.isFetching)&&p.length===0),h=_((e,t)=>{e&&c(n=>({...n,[e]:t?1:0}))},[]),g=_(async()=>{try{await d.fetchNextPage()}catch(e){console.error(`获取用户搜索结果失败`,e)}},[d]);return m?C(I,{}):p.length===0?C(f,{text:i(`searchUser.emptyResult`)}):w(a,{className:`w-full pb-[24px]`,children:[C(a,{className:`flex flex-col gap-[12px] px-[16px]`,children:p.map((e,t)=>C(F,{item:e,isFirst:t===0,onFollowChange:t=>{h(String(e.user_id||``),t)}},String(e.user_id??t)))}),d.hasNextPage&&C(o,{loadMore:async e=>g(),hasMore:d.hasNextPage,className:`w-full`})]})});L.displayName=`SearchUser`;export{M as SearchUserRowCard,L as default};
2
+ "use client";import{Button as e}from"../../ui/button.mjs";import t from"../../../utils/event-bus.mjs";import{useUserStore as n}from"../../../store/modules/user-store.mjs";import{gContentGetRecommendVideoList as r}from"../../../service/generated/client.mjs";import{Image as i}from"../../ui/image.mjs";import{Box as a}from"../../ui/box.mjs";import{Item as o}from"../../ui/item.mjs";import{List as s}from"../../ui/list.mjs";import{Text as c}from"../../ui/text.mjs";import{Skeleton as l}from"../../ui/skeleton.mjs";import{usePaginated as u,useUpdateRequest as d}from"../../../hooks/query/use-query.mjs";import{useRequireLogin as f}from"../../../hooks/use-auth.mjs";import{eventKey as p}from"../../../constants/event-key.mjs";import m from"../../../assets/icons/right_arrow.mjs";import h from"../../../assets/images/user/default_avatar.mjs";import{memo as g,useCallback as _,useEffect as v,useMemo as y,useState as b}from"react";import{jsx as x,jsxs as S}from"react/jsx-runtime";import{useTranslations as C}from"next-intl";import w from"next/link";const T=typeof h==`string`?h:h.src;function E(){return x(a,{className:`w-full`,children:Array.from({length:6}).map((e,t)=>S(a,{className:`w-full h-[56px] flex items-center justify-between mb-[12px]`,children:[S(a,{className:`flex items-center`,children:[x(l,{className:`w-[56px] h-[56px] rounded-[28px]`}),S(a,{className:`ml-[8px]`,children:[x(l,{className:`w-[120px] h-[18px] mb-[8px]`}),x(l,{className:`w-[72px] h-[14px]`})]})]}),x(l,{className:`w-[76px] h-[34px] rounded-[18px]`})]},`search-user-skeleton-${t}`))})}const D=g(({item:e,onUpdate:t})=>{let r=C(`components.pages.search.searchResult`),{userInfo:o}=n();return _(n=>{t({...e,is_following:n?1:0})},[e,t]),x(a,{className:`w-full h-[56px] bg-bg1 flex flex-row items-center justify-between mb-[12px] px-[12px]`,children:S(w,{className:`cursor-pointer flex flex-row items-center justify-center`,href:`/profile/${e.user_id}`,children:[x(a,{className:`w-[56px] h-[56px] rounded-[28px] overflow-hidden bg-bg2 relative`,children:x(i,{src:e.avatar||T,fill:!0,objectFit:`cover`,alt:e.nick_name})}),S(a,{className:`flex flex-col ml-[8px]`,children:[x(c,{as:`span`,className:`text-text1 text-[16px] leading-[24px] h-[24px] font-bold w-[200px] inline-block truncate`,children:e.nick_name}),S(c,{as:`span`,className:`text-text2 leading-[22px] text-[14px]`,children:[e.follower_count??0,r(`searchUser.followersSuffix`)]})]})]})})});D.displayName=`UserItem`;const O=g(({list:n})=>{let r=f(),[i,o]=b({});v(()=>{o({})},[n]);let s=_(e=>{e.user_id&&o(t=>({...t,[e.user_id]:e.is_following?1:0}))},[]),l=y(()=>n.slice(0,3).map(e=>{let t=e.user_id||``;return!t||i[t]===void 0?e:{...e,is_following:i[t]}}),[i,n,3]),u=n.length>3,d=_(()=>{t.emit(p.EXCHANGE_SEARCH_TYPE,`user`)},[]);return l.length===0?null:S(a,{className:`w-full pt-[12px]`,children:[l.map((e,t)=>x(D,{item:e,onUpdate:e=>{r(()=>s(e))}},String(e.user_id??t))),u&&x(a,{className:`w-full flex items-center justify-center`,children:S(e,{variant:`ghost`,className:`w-fit h-[46px] leading-[46px] mx-auto mt-[-12px] text-[14px] text-text2`,onClick:d,children:[x(c,{as:`span`,children:`查看更多`}),x(m,{className:`w-[12px] h-[12px]`})]})})]})});O.displayName=`SearchUserWithLimit`;const k=g(({inputVal:e,sort:t,refreshVersion:n})=>{let i=C(`components.pages.search.searchResult`),c=f(),l=_(async n=>await r({data_type:2,extra_params:JSON.stringify({type:4,keywords:e,sort:t}),page:n||1,page_size:20}),[e,t]),p=y(()=>[`searchByKeyForUser`,e,4,t,n],[e,t,n]),m=u({key:p,initialPageParam:1,async queryFn(e){return(await l(e))?.data?.users??{has_more:!1,total:0,list:[]}},getNextPageParam(e,t){if(e.has_more)return t.length+1}}),h=d(),g=_((e,t)=>{e&&h(p,n=>n&&{...n,pages:n.pages.map(n=>({...n,list:(n.list??[]).map(n=>n.user_id===e?{...n,is_following:t?1:0}:n)}))})},[h,p]),v=async e=>{try{await m.fetchNextPage()}catch(e){console.error(`获取用户列表失败`,e)}},b=(m?.data?.pages??[]).flatMap(e=>e.list??[]),S=!!(m?.isPending||m?.isFetching);return S&&b.length===0?x(E,{}):x(a,{className:`w-full`,children:x(s,{loading:S,hasMore:m?.hasNextPage??!1,loadMore:v,empty:`nodata`,emptyText:i(`searchUser.emptyResult`),children:b.map((e,t)=>x(o,{children:x(D,{item:e,onUpdate:e=>{c(()=>{g(e.user_id||``,!!e.is_following)})}})},String(e.user_id??t)))})})});k.displayName=`SearchUserWithPagination`;const A=g(e=>e.mode===`all`?x(O,{list:e.list??[]}):x(k,{inputVal:e.inputVal??``,sort:e.sort??1,refreshVersion:e.refreshVersion??0}));A.displayName=`SearchUser`;export{A as default};
@@ -0,0 +1,2 @@
1
+
2
+ "use client";import{Button as e}from"../../ui/button.mjs";import t from"../../../utils/event-bus.mjs";import{gContentGetRecommendVideoList as n}from"../../../service/generated/client.mjs";import{Image as r}from"../../ui/image.mjs";import{Box as i}from"../../ui/box.mjs";import{Item as a}from"../../ui/item.mjs";import{List as o}from"../../ui/list.mjs";import{Text as s}from"../../ui/text.mjs";import{usePaginated as c}from"../../../hooks/query/use-query.mjs";import{eventKey as l}from"../../../constants/event-key.mjs";import{formatVideoDuration as u,getPostDetailPagePath as d}from"../../../utils/tools.mjs";import{apiCollectCustom as f}from"../../../utils/api-collect.mjs";import p from"../../../assets/icons/view.mjs";import{SearchVideoCardSkeleton as m}from"../../common/skeleton/search-video-card-skeleton.mjs";import h from"../../../assets/icons/right_arrow.mjs";import{memo as g,useCallback as _,useMemo as v}from"react";import{jsx as y,jsxs as b}from"react/jsx-runtime";import{useTranslations as x}from"next-intl";import S from"next/link";const C=g(()=>y(m,{count:3}));C.displayName=`SearchVideoListSkeleton`;function w(e){let t=Number(e||0);return Number.isNaN(t)||t<=0?`0`:t>=1e4?`${(t/1e4).toFixed(1)}w`:t>=1e3?`${(t/1e3).toFixed(1)}k`:String(t)}function T(e){let t=Number(e.episode_count||0),n=Number.isFinite(t)&&t>0,r=String(e.update_status??``).trim();return!n||t<=1?u(Number(e.duration||0)):r===`1`?`${t}集全`:`更新至${t}集`}const E=g(({item:e})=>{let t=e.name||``,n=e.img_x||e.img_y||``,a=T(e);return b(S,{className:`mb-[12px] block w-full border-b border-line1 px-[12px] pb-[12px]`,href:d({id:e.video_id,contentType:0}),onClick:()=>{e.video_id},children:[b(i,{className:`relative w-full overflow-hidden rounded-[12px] bg-neutral-800`,style:{aspectRatio:`16/9`},children:[n&&y(r,{src:n,alt:t||`封面`,fill:!0,objectFit:`cover`}),y(i,{className:`absolute inset-x-0 bottom-0 h-[40px] bg-gradient-to-t from-black/80 to-transparent z-0 pointer-events-none`}),b(i,{className:`absolute bottom-0 left-[8px] mb-[6px] z-10 flex items-center gap-[4px]`,children:[y(p,{className:`h-[14px] w-[14px] text-white`}),y(s,{as:`span`,className:`text-[12px] font-medium text-white drop-shadow-md`,children:w(e.play_count)})]}),a&&y(i,{className:`absolute bottom-0 right-[8px] mb-[6px] z-10 flex items-center`,children:y(s,{as:`span`,className:`text-[12px] font-medium text-white drop-shadow-md`,children:a})})]}),b(i,{className:`flex items-center justify-between gap-[12px] pt-[10px]`,children:[b(i,{className:`flex-1 min-w-0`,children:[y(s,{as:`h3`,className:`text-[16px] font-semibold leading-[24px] text-text1 line-clamp-1`,children:t}),e.description&&y(s,{as:`p`,className:`mt-[4px] text-[13px] leading-[20px] text-text2 line-clamp-1`,children:e.description})]}),y(s,{className:`shrink-0 rounded-[20px] border border-[#FD4C5E] px-[24px] py-[8px] text-[14px] font-normal text-[#FD4C5E]`,children:`观看`})]})]})});E.displayName=`VideoItem`;const D=g(({list:e})=>y(i,{className:`w-full pt-[12px]`,children:e.map((e,t)=>y(E,{item:e},String(e.video_id??t)))}));D.displayName=`VideoListContent`;const O=g(({list:n,hasMore:r})=>{let a=_(()=>{t.emit(l.EXCHANGE_SEARCH_TYPE,`video`)},[]);return b(i,{className:`w-full`,children:[y(D,{list:n}),r&&y(i,{className:`w-full flex items-center justify-center`,children:b(e,{variant:`ghost`,className:`w-fit h-[46px] leading-[46px] mx-auto mt-[-12px] text-[14px] text-text2`,onClick:a,children:[y(s,{as:`span`,children:`查看更多`}),y(h,{className:`w-[12px] h-[12px]`})]})})]})});O.displayName=`SearchVideoWithAll`;const k=g(({inputVal:e,sort:t,refreshVersion:r})=>{let s=x(`components.pages.search.searchResult`),l=_(async r=>await n({data_type:2,extra_params:JSON.stringify({type:3,keywords:e,sort:t}),page:r||1,page_size:20}),[e,t]),u=c({key:v(()=>[`searchByKeyForVideoInfo`,e,3,t,r],[e,t,r]),initialPageParam:1,async queryFn(e){return(await l(e))?.data?.videos??{has_more:!1,total:0,list:[]}},getNextPageParam(e,t){if(e.has_more)return t.length+1}}),d=v(()=>{let e=u.data?.pages??[],t=[];for(let n of e){let e=n.list??[];t.push(...e)}return t},[u.data?.pages]),f=u.isPending||u.isFetching;return f&&d.length===0?y(C,{}):y(i,{className:`w-full`,children:y(o,{loading:f,hasMore:u.hasNextPage??!1,loadMore:async e=>{try{await u.fetchNextPage()}catch(e){console.error(`获取内容列表失败`,e)}},empty:`nodata`,emptyText:s(`searchVideoInfo.noRelevantContent`),children:d.map((e,t)=>y(a,{className:`p-0`,children:y(E,{item:e})},String(e.video_id??t)))})})});k.displayName=`SearchVideoWithPagination`;const A=g(e=>e.mode===`all`?y(O,{list:e.list,hasMore:e.hasMore}):y(k,{inputVal:e.inputVal,sort:e.sort,refreshVersion:e.refreshVersion}));A.displayName=`SearchVideo`;export{A as default};
@@ -1,5 +1,5 @@
1
1
 
2
- "use client";import{Button as e}from"../../../ui/button.mjs";import{hashPassword as t}from"../../../../utils/common.mjs";import{useUserStore as n}from"../../../../store/modules/user-store.mjs";import{pUserResetPassword as r,pUserSendResetPasswordEmailCode as i,pUserVerifyResetPasswordEmailCode as ee}from"../../../../service/generated/client.mjs";import{getPasswordValidationErrorText as a,validatePasswordPair as te}from"../../../../utils/password-validator.mjs";import{Box as o}from"../../../ui/box.mjs";import{Drawer as s,DrawerContent as ne,DrawerDescription as re,DrawerHeader as ie,DrawerTitle as c}from"../../../ui/drawer.mjs";import{Text as l}from"../../../ui/text.mjs";import u from"../../../ui/legacy/button.mjs";import{HeaderNav as ae}from"../../../common/header-nav/client.mjs";import{EyeIcon as d}from"../../../../assets/icons/eye-icon.mjs";import{EyeOffIcon as f}from"../../../../assets/icons/eye-off-icon.mjs";import p from"../../../ui/legacy/input.mjs";import{useEffect as m,useMemo as h,useRef as g,useState as _}from"react";import{jsx as v,jsxs as y}from"react/jsx-runtime";import{toast as b}from"sonner";import{useTranslations as x}from"next-intl";function S(e){let[t,n]=e.split(`@`);return!t||!n?e:`${t.slice(0,3)}***${t.length>3?t.slice(-1):``}@${n}`}function C(C){let w=x(`components.pages.settings.components`),{open:oe,onOpenChange:T}=C,E=n(e=>e.userInfo),[D,O]=_([,,,,,,].fill(``)),[k,A]=_(0),j=g(null),M=D.includes(``),[N,P]=_(``),F=g(null),[se,I]=_(60),[L,R]=_(!1),z=h(()=>S(E?.email||``),[E?.email]);async function B(){if(L)return;let e=b.loading(w(`resetPasswordDrawer.sending`));try{let t=await i({user_id:E?.user_id});t.code===0?(b.success(w(`resetPasswordDrawer.codeSentSuccess`),{id:e}),R(!0),I(60),P(``)):b.error(t.message||w(`resetPasswordDrawer.sendFailed`),{id:e})}catch(t){console.error(t),b.error(w(`resetPasswordDrawer.sendFailed`),{id:e})}}function V(){W(e=>e===1?e:e+1)}async function H(){let e=b.loading(w(`resetPasswordDrawer.verifying`));try{P(``);let t=await ee({user_id:E?.user_id,email_code:D.join(``)});t.code===0?(b.success(w(`resetPasswordDrawer.verifySuccess`),{id:e}),V()):(P(t.message||w(`resetPasswordDrawer.verifyFailed`)),b.error(t.message||w(`resetPasswordDrawer.verifyFailed`),{id:e}))}catch(t){console.error(t),P(w(`resetPasswordDrawer.verifyFailed`)),b.error(w(`resetPasswordDrawer.verifyFailed`),{id:e})}}m(()=>{if(L)return F.current=setInterval(()=>{I(e=>e<=1?(F.current&&clearInterval(F.current),R(!1),60):e-1)},1e3),()=>{F.current&&clearInterval(F.current)}},[L]);let[U,W]=_(0);m(()=>{U===0&&j.current?.focus()},[U]);let[G,K]=_({password:``,confirmPassword:``}),[q,J]=_(!1),[Y,ce]=_(!1),[X,le]=_(!1),Z=h(()=>te(G.password,G.confirmPassword),[G.password,G.confirmPassword]),Q=h(()=>a(Z),[Z]),$=h(()=>q||G.password.length===0||G.confirmPassword.length===0||Z.type!==`none`,[q,G.password.length,G.confirmPassword.length,Z.type]);async function ue(){if($)return;let e=b.loading(w(`resetPasswordDrawer.submitting`));try{J(!0);let n=await r({user_id:E?.user_id,password:t(G.password)});n.code===0?(b.success(w(`resetPasswordDrawer.passwordResetSuccess`),{id:e}),K({password:``,confirmPassword:``}),O([,,,,,,].fill(``)),A(0),T(!1)):b.error(n.message||w(`resetPasswordDrawer.resetFailed`),{id:e})}catch(t){console.error(t),b.error(w(`resetPasswordDrawer.resetFailed`),{id:e})}finally{J(!1)}}function de(e){let t=e.target.value.replace(/\D/g,``);if(t.length===0)return;let n=[...D],r=t.split(``),i=k;for(let e of r){if(i>=6)break;n[i]=e,i+=1}O(n),A(Math.min(i,5)),N&&P(``)}function fe(e){if(e.key===`Backspace`){e.preventDefault();let t=[...D];t[k]?t[k]=``:k>0&&(t[k-1]=``,A(k-1)),O(t),N&&P(``);return}e.key===`ArrowLeft`&&k>0&&A(k-1),e.key===`ArrowRight`&&k<5&&A(k+1)}function pe(e){A(e),j.current?.focus()}let me=y(o,{className:`p-6 min-h-[calc(100vh-48px)] bg-[var(--color-surface-panel-dark)]`,children:[y(o,{className:`space-y-[12px]`,children:[v(l,{className:`text-[24px] leading-[32px] font-bold text-text1`,children:w(`resetPasswordDrawer.verifyTitle`)}),v(o,{className:`flex items-center justify-between gap-[8px]`,children:y(l,{className:`min-w-0 flex-1 truncate text-[12px] leading-[16px] text-text2`,children:[w(`resetPasswordDrawer.boundEmailNotice`),v(l,{className:`dark:text-white text-white`,children:z}),w(`resetPasswordDrawer.verifyHint`)]})})]}),y(o,{className:`mt-[28px]`,children:[y(o,{className:`relative`,children:[v(`input`,{ref:j,type:`text`,inputMode:`numeric`,pattern:`[0-9]*`,value:``,onChange:de,onKeyDown:fe,className:`absolute inset-0 h-full w-full opacity-0 pointer-events-none caret-transparent`,autoComplete:`one-time-code`}),v(o,{className:`flex justify-between gap-[10px]`,children:D.map((e,t)=>v(o,{onClick:()=>pe(t),className:`
2
+ "use client";import{Button as e}from"../../../ui/button.mjs";import{hashPassword as t}from"../../../../utils/common.mjs";import{useUserStore as n}from"../../../../store/modules/user-store.mjs";import{pUserResetPassword as r,pUserSendResetPasswordEmailCode as i,pUserVerifyResetPasswordEmailCode as a}from"../../../../service/generated/client.mjs";import{getPasswordValidationErrorText as o,validatePasswordPair as ee}from"../../../../utils/password-validator.mjs";import{Box as s}from"../../../ui/box.mjs";import{Drawer as c,DrawerContent as l,DrawerDescription as te,DrawerHeader as ne,DrawerTitle as u}from"../../../ui/drawer.mjs";import{Text as d}from"../../../ui/text.mjs";import f from"../../../ui/legacy/button.mjs";import{HeaderNav as re}from"../../../common/header-nav/client.mjs";import{EyeIcon as p}from"../../../../assets/icons/eye-icon.mjs";import{EyeOffIcon as m}from"../../../../assets/icons/eye-off-icon.mjs";import h from"../../../ui/legacy/input.mjs";import{useEffect as g,useMemo as _,useRef as v,useState as y}from"react";import{jsx as b,jsxs as x}from"react/jsx-runtime";import{toast as S}from"sonner";import{useTranslations as ie}from"next-intl";function ae(e){let[t,n]=e.split(`@`);return!t||!n?e:`${t.slice(0,3)}***${t.length>3?t.slice(-1):``}@${n}`}function C(C){let w=ie(`components.pages.settings.components`),{open:oe,onOpenChange:T}=C,E=n(e=>e.userInfo),[D,O]=y([,,,,,,].fill(``)),[k,A]=y(0),j=v(null),M=D.includes(``),[N,P]=y(``),F=v(null),[se,I]=y(60),[L,R]=y(!1),z=_(()=>ae(E?.email||``),[E?.email]);async function B(){if(L)return;let e=S.loading(w(`resetPasswordDrawer.sending`));try{let t=await i({user_id:E?.user_id});t.code===0?(S.success(w(`resetPasswordDrawer.codeSentSuccess`),{id:e}),R(!0),I(60),P(``)):S.error(t.message||w(`resetPasswordDrawer.sendFailed`),{id:e})}catch(t){console.error(t),S.error(w(`resetPasswordDrawer.sendFailed`),{id:e})}}function V(){W(e=>e===1?e:e+1)}async function H(){let e=S.loading(w(`resetPasswordDrawer.verifying`));try{P(``);let t=await a({user_id:E?.user_id,email_code:D.join(``)});t.code===0?(S.success(w(`resetPasswordDrawer.verifySuccess`),{id:e}),V()):(P(t.message||w(`resetPasswordDrawer.verifyFailed`)),S.error(t.message||w(`resetPasswordDrawer.verifyFailed`),{id:e}))}catch(t){console.error(t),P(w(`resetPasswordDrawer.verifyFailed`)),S.error(w(`resetPasswordDrawer.verifyFailed`),{id:e})}}g(()=>{if(L)return F.current=setInterval(()=>{I(e=>e<=1?(F.current&&clearInterval(F.current),R(!1),60):e-1)},1e3),()=>{F.current&&clearInterval(F.current)}},[L]);let[U,W]=y(0);g(()=>{U===0&&j.current?.focus()},[U]);let[G,K]=y({password:``,confirmPassword:``}),[q,J]=y(!1),[Y,ce]=y(!1),[X,le]=y(!1),Z=_(()=>ee(G.password,G.confirmPassword),[G.password,G.confirmPassword]),Q=_(()=>o(Z),[Z]),$=_(()=>q||G.password.length===0||G.confirmPassword.length===0||Z.type!==`none`,[q,G.password.length,G.confirmPassword.length,Z.type]);async function ue(){if($)return;let e=S.loading(w(`resetPasswordDrawer.submitting`));try{J(!0);let n=await r({user_id:E?.user_id,password:t(G.password)});n.code===0?(S.success(w(`resetPasswordDrawer.passwordResetSuccess`),{id:e}),K({password:``,confirmPassword:``}),O([,,,,,,].fill(``)),A(0),T(!1)):S.error(n.message||w(`resetPasswordDrawer.resetFailed`),{id:e})}catch(t){console.error(t),S.error(w(`resetPasswordDrawer.resetFailed`),{id:e})}finally{J(!1)}}function de(e){let t=e.target.value.replace(/\D/g,``);if(t.length===0)return;let n=[...D],r=t.split(``),i=k;for(let e of r){if(i>=6)break;n[i]=e,i+=1}O(n),A(Math.min(i,5)),N&&P(``)}function fe(e){if(e.key===`Backspace`){e.preventDefault();let t=[...D];t[k]?t[k]=``:k>0&&(t[k-1]=``,A(k-1)),O(t),N&&P(``);return}e.key===`ArrowLeft`&&k>0&&A(k-1),e.key===`ArrowRight`&&k<5&&A(k+1)}function pe(e){A(e),j.current?.focus()}let me=x(s,{className:`p-6`,children:[x(s,{className:`space-y-[12px]`,children:[b(d,{className:`text-[24px] leading-[32px] font-bold text-text1`,children:`请输入验证码`}),x(s,{className:`flex items-center justify-between gap-[8px]`,children:[x(d,{className:`min-w-0 flex-1 truncate text-[12px] leading-[16px] text-text2`,children:[w(`resetPasswordDrawer.boundEmailNotice`),b(d,{className:`dark:text-white text-white`,children:z}),w(`resetPasswordDrawer.verifyHint`)]}),b(e,{variant:`link`,disabled:L,onClick:B,className:`h-auto shrink-0 rounded-[10px] bg-line1 px-[10px] py-[4px] text-[10px] leading-[12px] text-text1 no-underline hover:no-underline disabled:opacity-60`,children:L?`${w(`resetPasswordDrawer.sendCode`)} (${se}s)`:w(`resetPasswordDrawer.sendCode`)})]})]}),x(s,{className:`mt-[28px]`,children:[x(s,{className:`relative`,children:[b(`input`,{ref:j,type:`text`,inputMode:`numeric`,pattern:`[0-9]*`,value:``,onChange:de,onKeyDown:fe,className:`absolute inset-0 h-full w-full opacity-0 pointer-events-none caret-transparent`,autoComplete:`one-time-code`}),b(s,{className:`flex justify-between gap-[10px]`,children:D.map((e,t)=>b(s,{onClick:()=>pe(t),className:`
3
3
  h-[48px] flex-1 rounded-[6px] border-2 flex items-center justify-center cursor-pointer transition-all duration-200
4
4
  ${N?`border-theme5 bg-line1`:t===k?`border-theme3 bg-theme3/10`:`border-transparent bg-line1`}
5
- `,children:v(l,{className:`text-[24px] leading-none font-semibold text-text1 select-none`,children:e})},`${t}-${e||`empty`}`))})]}),v(o,{className:`min-h-[22px] pt-[8px]`,children:v(l,{className:`text-[12px] leading-[18px] text-theme5`,children:N})}),v(u,{type:`button`,onClick:H,disabled:M,className:`mt-[44px] h-[48px] w-full !rounded-[8px] !border-0 !px-0 !py-0 text-[16px] font-normal leading-[24px] text-white disabled:opacity-100 active:opacity-90 ${M?`!text-white/60`:``}`,style:{background:M?`linear-gradient(90deg, rgba(151, 86, 227, 0.45) 0%, rgba(108, 67, 238, 0.45) 100%)`:`var(--gradient-action-button)`},children:`提交`}),L?v(o,{className:`mt-[16px] w-full text-center text-[15px] leading-[24px] text-[#9DA3AC]`,children:w(`resetPasswordDrawer.resendCountdown`,{seconds:se})}):v(e,{variant:`link`,onClick:B,className:`mt-[16px] h-auto w-full justify-center !rounded-none bg-transparent !px-0 !py-0 text-[14px] leading-[24px] font-medium no-underline hover:no-underline`,style:{backgroundImage:`var(--gradient-action-button)`,backgroundClip:`text`,WebkitBackgroundClip:`text`,color:`transparent`},children:w(`resetPasswordDrawer.sendCode`)})]})]}),he=y(o,{className:`flex min-h-[calc(100vh-48px)] flex-col bg-[var(--color-surface-panel-dark)]`,children:[y(o,{className:`px-[32px] pt-[15px]`,children:[v(l,{className:`text-[16px] leading-[20px] text-text1`,children:w(`resetPasswordDrawer.setNewPasswordHint`)}),y(o,{className:`mt-[16px]`,children:[y(o,{className:`relative flex h-[48px] items-center rounded-[8px] border bg-white/10 px-[16px] ${Q?`border-theme5`:`border-transparent`}`,children:[v(p,{value:G.password,onChange:e=>K(t=>({...t,password:e})),placeholder:w(`resetPasswordDrawer.passwordPlaceholder`),type:Y?`text`:`password`,autoComplete:`new-password`,autoCorrect:`off`,autoCapitalize:`none`,spellCheck:!1,"data-lpignore":`true`,"data-1p-ignore":`true`,"data-form-type":`other`,className:`rounded-none bg-transparent !px-0 !py-0 text-[14px] leading-[20px] text-text1 placeholder:text-white/60`}),v(`button`,{type:`button`,onClick:()=>ce(!Y),className:`absolute right-[16px] top-1/2 -translate-y-1/2 text-white/50 transition-colors hover:text-white/80`,children:v(Y?d:f,{className:`h-[24px] w-[24px]`})})]}),y(o,{className:`mt-[16px] relative flex h-[48px] items-center rounded-[8px] border bg-white/10 px-[16px] ${Z.type===`not-match`?`border-theme5`:`border-transparent`}`,children:[v(p,{value:G.confirmPassword,onChange:e=>K(t=>({...t,confirmPassword:e})),placeholder:w(`resetPasswordDrawer.confirmPasswordPlaceholder`),type:X?`text`:`password`,autoComplete:`new-password`,autoCorrect:`off`,autoCapitalize:`none`,spellCheck:!1,"data-lpignore":`true`,"data-1p-ignore":`true`,"data-form-type":`other`,className:`rounded-none bg-transparent !px-0 !py-0 text-[14px] leading-[20px] text-text1 placeholder:text-white/60`}),v(`button`,{type:`button`,onClick:()=>le(!X),className:`absolute right-[16px] top-1/2 -translate-y-1/2 text-white/50 transition-colors hover:text-white/80`,children:v(X?d:f,{className:`h-[24px] w-[24px]`})})]}),Q?v(o,{className:`mt-[12px]`,children:v(l,{className:`text-[12px] leading-[16px] text-theme5`,children:Q})}):null]})]}),v(o,{className:`mt-auto bg-[rgba(5,1,15,0.9)] px-[16px] pt-[8px] pb-[calc(env(safe-area-inset-bottom)+8px)] backdrop-blur-[4px]`,children:v(u,{onClick:ue,disabled:$,className:`h-[48px] w-full rounded-[8px] bg-[linear-gradient(90deg,#A656E3_10%,#6C43EE_100%)] px-0 py-0 text-[16px] leading-[24px] font-normal text-white disabled:bg-[linear-gradient(90deg,rgba(166,86,227,0.45)_10%,rgba(108,67,238,0.45)_100%)] disabled:text-white/60 active:opacity-90`,children:w(q?`resetPasswordDrawer.submitting`:`resetPasswordDrawer.resetPassword`)})})]});return y(s,{open:oe,onOpenChange:T,direction:`right`,handleOnly:!0,children:[y(ie,{className:`hidden`,children:[v(c,{children:w(`resetPasswordDrawer.title`)}),v(re,{children:w(`resetPasswordDrawer.title`)})]}),y(ne,{className:`!w-full`,children:[v(ae,{className:`!bg-[var(--color-surface-panel-dark)] !border-transparent`,onBack:()=>T(!1)}),U===0&&me,U===1&&he]})]})}export{C as ResetPasswordDrawer};
5
+ `,children:b(d,{className:`text-[24px] leading-none font-semibold text-text1 select-none`,children:e})},`${t}-${e||`empty`}`))})]}),b(s,{className:`min-h-[22px] pt-[8px]`,children:b(d,{className:`text-[12px] leading-[18px] text-theme5`,children:N})}),b(f,{onClick:H,disabled:M,className:`mt-[180px] w-full h-15 !rounded-[30px] !text-[18px] font-bold leading-6.5 bg-theme6 disabled:bg-theme6/40 disabled:text-text3 active:opacity-90 !px-0 !py-0`,children:`提交`})]})]}),he=x(s,{className:`p-6`,children:[b(s,{children:b(d,{className:`text-text2`,children:w(`resetPasswordDrawer.setNewPasswordHint`)})}),x(s,{className:`mt-6 space-y-6`,children:[x(s,{className:`flex relative items-center px-2 rounded-[50px] h-16.5 bg-line1 border ${Q?`border-theme5`:`border-line1`}`,children:[b(h,{value:G.password,onChange:e=>K(t=>({...t,password:e})),placeholder:w(`resetPasswordDrawer.passwordPlaceholder`),type:Y?`text`:`password`,autoComplete:`new-password`,autoCorrect:`off`,autoCapitalize:`none`,spellCheck:!1,"data-lpignore":`true`,"data-1p-ignore":`true`,"data-form-type":`other`,className:`pr-10`}),b(`button`,{type:`button`,onClick:()=>ce(!Y),className:`absolute right-4 top-1/2 -translate-y-1/2 text-text2 hover:text-text1 transition-colors`,children:b(Y?m:p,{className:`w-5 h-5`})})]}),x(s,{className:`flex relative items-center px-2 rounded-[50px] h-16.5 bg-line1 border ${Z.type===`not-match`?`border-theme5`:`border-line1`}`,children:[b(h,{value:G.confirmPassword,onChange:e=>K(t=>({...t,confirmPassword:e})),placeholder:w(`resetPasswordDrawer.confirmPasswordPlaceholder`),type:X?`text`:`password`,autoComplete:`new-password`,autoCorrect:`off`,autoCapitalize:`none`,spellCheck:!1,"data-lpignore":`true`,"data-1p-ignore":`true`,"data-form-type":`other`,className:`pr-10`}),b(`button`,{type:`button`,onClick:()=>le(!X),className:`absolute right-4 top-1/2 -translate-y-1/2 text-text2 hover:text-text1 transition-colors`,children:b(X?m:p,{className:`w-5 h-5`})})]}),Q?b(s,{children:b(d,{className:`min-h-[22px] text-[14px] text-theme5 px-[12px]`,children:Q})}):null,b(f,{onClick:ue,disabled:$,className:`w-full h-15 !rounded-[30px] !text-[18px] font-bold leading-6.5 bg-theme6 disabled:bg-theme6/40 disabled:text-text3 active:opacity-90 !px-0 !py-0`,children:w(q?`resetPasswordDrawer.submitting`:`resetPasswordDrawer.resetPassword`)})]})]});return x(c,{open:oe,onOpenChange:T,direction:`right`,handleOnly:!0,children:[x(ne,{className:`hidden`,children:[b(u,{children:w(`resetPasswordDrawer.title`)}),b(te,{children:w(`resetPasswordDrawer.title`)})]}),x(l,{className:`!w-full`,children:[b(re,{onBack:()=>T(!1),title:w(`resetPasswordDrawer.title`)}),U===0&&me,U===1&&he]})]})}export{C as ResetPasswordDrawer};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{cn as e}from"../../../../utils/cn.mjs";import{useUserStore as t}from"../../../../store/modules/user-store.mjs";import{gUserGetUserPrivacySettings as n}from"../../../../service/generated/client.mjs";import{Box as r}from"../../../ui/box.mjs";import{useLoginModalStore as i}from"../../../../store/modules/login-modal-store.mjs";import{useDeleteRequest as a,useRequest as o}from"../../../../hooks/query/use-query.mjs";import{locales as s}from"../../../../i18n.mjs";import{DeleteConfirmDialog as c}from"../../../common/delete-confirm-dialog/delete-confirm-dialog.mjs";import{HeaderNav as l}from"../../../common/header-nav/client.mjs";import{ResetPasswordDrawer as u}from"./reset-password-drawer.mjs";import{useEffect as d,useRef as f,useState as p}from"react";import{ChevronRight as m}from"lucide-react";import{jsx as h,jsxs as g}from"react/jsx-runtime";import{useRouter as _}from"next/navigation";import{useLocale as v,useTranslations as y}from"next-intl";import b from"next/link";function x(e){return{collection:Number(e?.collections_open??0)>0,follower:Number(e?.follower_open??0)>0,following:Number(e?.following_open??0)>0,like:Number(e?.like_open??0)>0}}function S({className:m}={}){let S=y(`components.pages.settings.components`),w=v(),{open:T}=i(),E=t(e=>e.isLogin),D=t(e=>e.token),O=t(e=>e.logout),k=t(e=>e.userId),A=(E||!!D)&&!!k,j=x(),[M,N]=p(j),P=f(j),[F,I]=p(!1),[L,R]=p(!1);a();let z=[`user-privacy-settings`,k],B=w===`zh-CN`?`en`:`zh-CN`;s.find(e=>e.code===B)?.name;let{data:V}=o(z,()=>n({user_id:k}),{enabled:!!k}),H=V?.data;d(()=>{if(!H)return;let e=x(H);N(e),P.current=e},[H]),d(()=>{P.current=M},[M]);let U=a(),W=_();function G(){U([`user-profile`,`mine`]),O(),W.push(`/user/mine`)}function K(e){R(e)}function q(){R(!0)}function J(){R(!1)}function Y(){G()}function X(e){I(e)}function Z(){if(!A){T();return}I(!0)}function Q(e){A||(e.preventDefault(),e.stopPropagation(),T())}return g(r,{className:e(`min-h-dvh bg-[var(--color-surface-panel-dark)]`,m),children:[h(l,{className:`!bg-[var(--color-surface-panel-dark)] !border-transparent`,title:S(`settings.title`)}),h(u,{open:F,onOpenChange:X}),g(r,{className:`mx-4 mt-4 flex flex-col`,children:[h(`button`,{type:`button`,className:`block w-full text-left`,onClick:Z,children:h(C,{title:S(`settings.resetPasswordTitle`)})}),h(b,{href:`/feedback`,onClick:Q,className:`block`,children:h(C,{title:S(`settings.feedbackTitle`)})})]}),F||!A?null:h(r,{className:`fixed inset-x-0 bottom-0 z-40 flex flex-col pb-[env(safe-area-inset-bottom)]`,children:h(`div`,{className:`flex flex-col items-center px-4 py-2`,style:{background:`var(--color-overlay-panel-fade-start90)`,backdropFilter:`blur(var(--effect-backdrop-blur-detail-hero))`},children:h(`button`,{type:`button`,className:`flex h-12 w-full items-center justify-center rounded-[8px] text-base text-[var(--color-text-primary)] transition-opacity active:opacity-80`,style:{background:`var(--color-surface-white10)`},onClick:q,children:S(`settings.button`)})})}),h(c,{open:L,onOpenChange:K,onCancel:J,onConfirm:Y,title:``,description:S(`settings.logoutConfirmMessage`),confirmText:S(`settings.confirm`),cancelText:S(`settings.cancel`)})]})}function C({title:e}){return g(`div`,{className:`flex h-14 items-center justify-between px-4`,children:[h(`span`,{className:`text-base text-[var(--color-text-primary)]`,children:e}),h(m,{className:`size-6 shrink-0 opacity-50 text-[var(--color-text-primary)]`})]})}export{S as Settings};
2
+ "use client";import{cn as e}from"../../../../utils/cn.mjs";import{Button as t}from"../../../ui/button.mjs";import{useUserStore as n}from"../../../../store/modules/user-store.mjs";import{gUserGetUserPrivacySettings as r}from"../../../../service/generated/client.mjs";import{Box as i}from"../../../ui/box.mjs";import{List as a}from"../../../ui/list.mjs";import{useLoginModalStore as o}from"../../../../store/modules/login-modal-store.mjs";import{useDeleteRequest as s,useRequest as c}from"../../../../hooks/query/use-query.mjs";import{locales as l}from"../../../../i18n.mjs";import{DeleteConfirmDialog as u}from"../../../common/delete-confirm-dialog/delete-confirm-dialog.mjs";import{HeaderNav as d}from"../../../common/header-nav/client.mjs";import{ResetPasswordDrawer as f}from"./reset-password-drawer.mjs";import{useEffect as p,useRef as m,useState as h}from"react";import{jsx as g,jsxs as _}from"react/jsx-runtime";import{useRouter as v}from"next/navigation";import{useLocale as y,useTranslations as b}from"next-intl";import x from"next/link";function S(e){return{collection:Number(e?.collections_open??0)>0,follower:Number(e?.follower_open??0)>0,following:Number(e?.following_open??0)>0,like:Number(e?.like_open??0)>0}}function C({className:C}={}){let w=b(`components.pages.settings.components`),T=y(),{open:E}=o(),D=n(e=>e.isLogin),O=n(e=>e.token),k=n(e=>e.logout),A=n(e=>e.userId),j=(D||!!O)&&!!A,M=S(),[N,P]=h(M),F=m(M),[I,L]=h(!1),[R,z]=h(!1);s();let B=[`user-privacy-settings`,A],V=T===`zh-CN`?`en`:`zh-CN`;l.find(e=>e.code===V)?.name;let{data:H}=c(B,()=>r({user_id:A}),{enabled:!!A}),U=H?.data;p(()=>{if(!U)return;let e=S(U);P(e),F.current=e},[U]),p(()=>{F.current=N},[N]);let W=s(),G=v();function K(){W([`user-profile`,`mine`]),k(),G.push(`/user/mine`)}function q(e){z(e)}function J(){z(!0)}function Y(){z(!1)}function X(){K()}function Z(e){L(e)}function Q(){if(!j){E();return}L(!0)}function $(e){j||(e.preventDefault(),e.stopPropagation(),E())}return _(i,{className:e(C),children:[g(d,{className:`!bg-bg2`,title:w(`settings.title`)}),g(f,{open:I,onOpenChange:Z}),_(i,{className:`flex flex-col gap-2 `,children:[g(a,{className:`bg-bg2 py-2`,children:g(x,{href:`/feedback`,onClick:$,children:g(a.Item,{title:w(`settings.feedbackTitle`),arrow:!0})})}),g(a,{className:`bg-bg2 py-2`,children:g(a.Item,{title:w(`settings.resetPasswordTitle`),arrow:!0,onClick:Q})})]}),I||!j?null:g(i,{className:`fixed bottom-0 w-full left-0`,children:g(t,{className:`h-auto text-base py-4 w-full`,variant:`secondary`,onClick:J,children:w(`settings.button`)})}),g(u,{open:R,onOpenChange:q,onCancel:Y,onConfirm:X,title:``,description:w(`settings.logoutConfirmMessage`),confirmText:w(`settings.confirm`),cancelText:w(`settings.cancel`)})]})}export{C as Settings};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{cn as e}from"../../../../utils/cn.mjs";import{Box as t}from"../../../ui/box.mjs";import{Text as n}from"../../../ui/text.mjs";import{useOpenLoginAsync as r}from"../../../../hooks/use-auth.mjs";import i from"../../../ui/legacy/button.mjs";import{memo as a}from"react";import{jsx as o,jsxs as s}from"react/jsx-runtime";import{useTranslations as c}from"next-intl";const l=a(({className:a}={})=>{let l=c(`components.pages.userFollow.components`),u=r();return s(t,{className:e(`w-full bg-bg1 py-[20px] flex flex-col items-center justify-center relative z-[1]`,a),children:[s(n,{className:`text-[16px] leading-[22px] text-text1`,children:[l(`followNoLogin.notLoggedIn`),`~`]}),o(i,{className:`mt-[13px] w-[130px] h-[36px] leading-[36px] rounded-[8px] bg-theme5 text-[16px] text-white`,onClick:async()=>{await u()&&console.warn(`login success`)},children:l(`followNoLogin.login`)})]})});l.displayName=`FollowNoLogin`;export{l as FollowNoLogin};
2
+ "use client";import{cn as e}from"../../../../utils/cn.mjs";import{Box as t}from"../../../ui/box.mjs";import{Text as n}from"../../../ui/text.mjs";import r from"../../../ui/legacy/button.mjs";import{useOpenLoginAsync as i}from"../../../../hooks/use-auth.mjs";import{memo as a}from"react";import{jsx as o,jsxs as s}from"react/jsx-runtime";import{useTranslations as c}from"next-intl";const l=a(({className:a}={})=>{let l=c(`components.pages.userFollow.components`),u=i();return s(t,{className:e(`w-full bg-bg1 py-[20px] flex flex-col items-center justify-center relative z-[1]`,a),children:[s(n,{className:`text-[16px] leading-[22px] text-text1`,children:[l(`followNoLogin.notLoggedIn`),`~`]}),o(r,{className:`mt-[13px] w-[130px] h-[36px] leading-[36px] rounded-[8px] bg-theme5 text-[16px] text-white`,onClick:async()=>{await u()&&console.warn(`login success`)},children:l(`followNoLogin.login`)})]})});l.displayName=`FollowNoLogin`;export{l as FollowNoLogin};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{cn as e}from"../../../utils/cn.mjs";import{Button as t}from"../../ui/button.mjs";import{pContentGetNewstVideoList as n,pContentGetTopRatedVideoList as r}from"../../../service/generated/client.mjs";import{pContentGetNewstVideoListKey as i,pContentGetTopRatedVideoListKey as a}from"../../../service/generated/tanstack.mjs";import{useRouter as o}from"../../../utils/use-compatible-router.mjs";import{Box as s}from"../../ui/box.mjs";import{InfiniteScroll as c}from"../../ui/infinite-scroll.mjs";import{Text as l}from"../../ui/text.mjs";import{usePaginated as u}from"../../../hooks/query/use-query.mjs";import d from"../../../assets/icons/left_arrow.mjs";import{getNextVideoListPageParam as f,resolveNextCursor as p}from"./types.mjs";import{VideoListRecommendItem as m}from"./video-list-recommend-item.mjs";import{VideoListSkeleton as h}from"./video-list-skeleton.mjs";import{useEffect as g,useMemo as _,useState as v}from"react";import{jsx as y,jsxs as b}from"react/jsx-runtime";const x=[];function S({title:S=`列表页`,tags:C=x}){let w=o(),[T,E]=v(`hot`),D=_(()=>({page_size:10,tags:C.length?C:void 0}),[C]),{data:O,fetchNextPage:k,hasNextPage:A,isPending:j,isFetching:M}=u({key:_(()=>T===`hot`?a(D):i(D),[D,T]),queryFn:async e=>{let t={page_size:10,cursor:e||void 0,tags:C.length?C:void 0},i=(T===`hot`?await r(t):await n(t)).data,a=Array.isArray(i?.videos)?i.videos:[];return{list:a,nextCursor:a.length<10?``:p(i)}},getNextPageParam:f,initialPageParam:``,options:{staleTime:0,refetchOnMount:`always`,refetchOnWindowFocus:!1,refetchOnReconnect:!1}}),N=_(()=>O?.pages?.flatMap(e=>e.list)??[],[O?.pages]),P=(O?.pages?.length??0)>0,F=_(()=>P?A??!1:!0,[P,A]),I=N.length===0&&(!P||j||M);g(()=>{typeof window>`u`||window.scrollTo({top:0,behavior:`auto`})},[T]);function L(){w.back()}let R=_(()=>N.map(e=>{let t=e.id??e.mid??``;return y(m,{item:e,href:`/video/${t}/${e.name??``}`},t)}),[N]);return I?y(h,{}):b(s,{as:`main`,className:`min-h-[100dvh] bg-[linear-gradient(180deg,#160320_0%,#2a0a56_100%)] text-white`,children:[b(s,{className:`sticky top-0 z-20 bg-[linear-gradient(180deg,rgba(22,3,32,0.98)_0%,rgba(22,3,32,0.92)_100%)] px-[16px] pb-[12px] pt-[10px] backdrop-blur-[16px]`,children:[b(s,{as:`header`,className:`flex items-center justify-between`,children:[y(t,{type:`button`,variant:`ghost`,size:`icon-sm`,onClick:L,className:`h-[24px] w-[24px] rounded-none p-0 text-white hover:bg-transparent`,children:y(d,{className:`h-[16px] w-[16px]`})}),y(l,{as:`h1`,className:`min-w-0 flex-1 truncate px-[16px] text-center text-[18px] font-medium leading-[22px] text-white`,children:S}),y(s,{className:`h-[24px] w-[24px] shrink-0 opacity-0`,"aria-hidden":!0})]}),b(s,{as:`nav`,className:`mt-[12px] flex gap-[14px]`,children:[y(t,{type:`button`,variant:`ghost`,onClick:()=>E(`hot`),className:e(`h-[28px] min-w-[64px] rounded-[100px] px-[16px] text-[14px] font-normal leading-[20px] text-white`,T===`hot`?`bg-[linear-gradient(90deg,#9756e3_0%,#6c43ee_100%)] shadow-[0_8px_20px_rgba(122,76,255,0.35)] hover:bg-transparent`:`bg-white/20 hover:bg-white/25`),children:`最热`}),y(t,{type:`button`,variant:`ghost`,onClick:()=>E(`latest`),className:e(`h-[28px] min-w-[64px] rounded-[100px] px-[16px] text-[14px] font-normal leading-[20px] text-white`,T===`latest`?`bg-[linear-gradient(90deg,#9756e3_0%,#6c43ee_100%)] shadow-[0_8px_20px_rgba(122,76,255,0.35)] hover:bg-transparent`:`bg-white/20 hover:bg-white/25`),children:`最新`})]})]}),y(c,{loadMore:()=>k().then(()=>void 0),hasMore:F,noMoreText:`没有更多了`,threshold:300,className:`px-[16px] pb-[24px]`,children:y(s,{as:`section`,className:`flex flex-col gap-[16px]`,children:R})},T)]})}export{S as default};
2
+ "use client";import{Button as e}from"../../ui/button.mjs";import{pContentGetNewstVideoList as t,pContentGetTopRatedVideoList as n}from"../../../service/generated/client.mjs";import{pContentGetNewstVideoListKey as r,pContentGetTopRatedVideoListKey as i}from"../../../service/generated/tanstack.mjs";import{useRouter as a}from"../../../utils/use-compatible-router.mjs";import{Box as o}from"../../ui/box.mjs";import{InfiniteScroll as s}from"../../ui/infinite-scroll.mjs";import{Text as c}from"../../ui/text.mjs";import{usePaginated as l}from"../../../hooks/query/use-query.mjs";import u from"../../../assets/icons/left_arrow.mjs";import{getNextVideoListPageParam as d,resolveNextCursor as f}from"./types.mjs";import{VideoListItemComponent as p}from"./video-list-item.mjs";import{VideoListSkeleton as m}from"./video-list-skeleton.mjs";import{useEffect as h,useMemo as g,useState as _}from"react";import{jsx as v,jsxs as y}from"react/jsx-runtime";import b from"next/link";const x=[];function S({title:S=`列表页`,tags:C=x}){let w=a(),[T,E]=_(`hot`),D=g(()=>({page_size:10,tags:C.length?C:void 0}),[C]),{data:O,fetchNextPage:k,hasNextPage:A,isPending:j,isFetching:M}=l({key:g(()=>T===`hot`?i(D):r(D),[D,T]),queryFn:async e=>{let r={page_size:10,cursor:e||void 0,tags:C.length?C:void 0},i=(T===`hot`?await n(r):await t(r)).data,a=Array.isArray(i?.videos)?i.videos:[];return{list:a,nextCursor:a.length<10?``:f(i)}},getNextPageParam:d,initialPageParam:``,options:{staleTime:0,refetchOnMount:`always`,refetchOnWindowFocus:!1,refetchOnReconnect:!1}}),N=g(()=>O?.pages?.flatMap(e=>e.list)??[],[O?.pages]),P=(O?.pages?.length??0)>0,F=g(()=>P?A??!1:!0,[P,A]),I=N.length===0&&(!P||j||M);h(()=>{typeof window>`u`||window.scrollTo({top:0,behavior:`auto`})},[T]);function L(){w.back()}let R=g(()=>N.map(e=>{let t=e.id??e.mid??``;return v(b,{href:`/video/${t}/${e.name??``}`,children:v(p,{item:e})},t)}),[N]);return I?v(m,{}):y(o,{as:`main`,className:`min-h-[100dvh] bg-bg1`,children:[y(o,{className:`fixed top-0 left-0 right-0 z-20 bg-bg1`,children:[y(o,{as:`header`,className:`flex items-center gap-2 px-4 py-3`,children:[v(u,{className:`w-[16px] h-[16px]`,onClick:L}),v(c,{as:`h1`,className:`flex-1 min-w-0 flex justify-center overflow-hidden text-[18px] pr-[16px]`,children:v(c,{className:`block max-w-full truncate`,children:S})})]}),y(o,{as:`nav`,className:`px-4 pb-2 flex gap-2`,children:[v(e,{type:`button`,onClick:()=>E(`hot`),className:`h-[30px] px-[12px] text-[14px] rounded-[50px] ${T===`hot`?`bg-theme5 text-text1`:`bg-transparent text-text2`}`,children:`最热`}),v(e,{type:`button`,onClick:()=>E(`latest`),className:`h-[30px] px-[12px] text-[14px] rounded-[50px] ${T===`latest`?`bg-theme5 text-text1`:`bg-transparent text-text2`}`,children:`最新`})]})]}),v(s,{loadMore:()=>k().then(()=>void 0),hasMore:F,noMoreText:`没有更多了`,threshold:300,className:`pt-[88px]`,children:v(o,{className:`grid grid-cols-2 gap-3 p-4`,children:R})},T)]})}export{S as default};
@@ -0,0 +1,2 @@
1
+
2
+ "use client";import{Image as e}from"../../ui/image.mjs";import{Box as t}from"../../ui/box.mjs";import{Text as n}from"../../ui/text.mjs";import{memo as r,useMemo as i}from"react";import{jsx as a,jsxs as o}from"react/jsx-runtime";const s=r(({item:r})=>{let s=r.img_x??r.img_y??``,c=r.name??r.id??``;function l(e){if(!Number.isFinite(e)||e<=0)return``;let t=Math.floor(e),n=Math.floor(t/3600),r=Math.floor(t%3600/60),i=t%60,a=e=>String(e).padStart(2,`0`);return n>0?`${a(n)}:${a(r)}:${a(i)}`:`${a(r)}:${a(i)}`}let u=i(()=>{let e=r.static?.browse_cnt??0;if(!Number.isFinite(e)||e<=0)return 0;if(e>=1e6){let t=(e/1e6).toFixed(1);return t.endsWith(`.0`)?`${t.slice(0,-2)}M`:`${t}M`}if(e>=1e3){let t=(e/1e3).toFixed(1);return t.endsWith(`.0`)?`${t.slice(0,-2)}k`:`${t}k`}return Math.floor(e).toString()},[r]),d=i(()=>{let{type:e,duration:t,links:n}=r;if(e===1)return l(t??0);if(e===2)return`全${n?.length??0}集`},[r]);return o(t,{className:`overflow-hidden rounded-[8px] shadow-sm relative`,children:[s?a(t,{className:`relative w-full aspect-video h-[240px]`,children:a(e,{src:s,alt:c,fill:!0,className:`object-cover`})}):null,a(t,{className:`py-[8px]`,children:a(n,{as:`h3`,className:`line-clamp-1 text-[16px] text-bold text-text1`,children:c})}),o(t,{className:`absolute z-[2] bottom-10 left-1 rounded-xs bg-black/60 px-1 text-[10px] text-white flex items-center gap-1`,children:[a(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:`12`,height:`10`,viewBox:`0 0 12 10`,fill:`none`,className:`shrink-0`,"aria-hidden":!0,children:a(`path`,{d:`M7.56 5.18437L5.013 6.56737C4.893 6.63337 4.761 6.66937 4.638 6.66937C4.269 6.66937 4.002 6.38737 4.002 5.99737V3.28237C4.002 2.89237 4.269 2.61037 4.638 2.61037C4.764 2.61037 4.893 2.64637 5.013 2.70937L7.572 4.09237C7.803 4.21837 7.938 4.41637 7.938 4.63237C7.938 4.85137 7.8 5.05537 7.56 5.18437ZM9.807 9.27637L2.133 8.52937C0.954 8.52937 0 7.57537 0 6.39637V2.79937C0 1.62037 0.954 0.666368 2.133 0.666368L9.81 0.000367165C10.989 0.000367165 11.943 0.954367 11.943 2.13337V7.14337C11.9422 7.70935 11.7168 8.25188 11.3163 8.65181C10.9158 9.05174 10.373 9.27637 9.807 9.27637ZM10.875 2.13337C10.875 1.99351 10.8475 1.85502 10.7939 1.72581C10.7404 1.5966 10.662 1.47919 10.5631 1.3803C10.4642 1.2814 10.3468 1.20296 10.2176 1.14944C10.0883 1.09591 9.94986 1.06837 9.81 1.06837L2.133 1.73437C1.99314 1.73437 1.85465 1.76191 1.72544 1.81544C1.59623 1.86896 1.47883 1.9474 1.37993 2.0463C1.28104 2.14519 1.20259 2.2626 1.14907 2.39181C1.09555 2.52102 1.068 2.65951 1.068 2.79937V6.39637C1.068 6.67882 1.1802 6.94971 1.37993 7.14944C1.57966 7.34916 1.85054 7.46137 2.133 7.46137L9.807 8.20837C9.94686 8.20837 10.0853 8.18082 10.2146 8.1273C10.3438 8.07378 10.4612 7.99533 10.5601 7.89644C10.659 7.79754 10.7374 7.68014 10.7909 7.55093C10.8445 7.42171 10.872 7.28323 10.872 7.14337V2.13337H10.875Z`,fill:`white`})}),a(n,{className:`text-white text-[12px] leading-[20px]`,children:u})]}),d&&a(t,{className:`absolute z-[2] bottom-10 right-1`,children:a(n,{className:`text-white text-[12px] leading-[20px]`,children:d})})]})});export{s as VideoListItemComponent};
@@ -3,11 +3,12 @@ import * as react_jsx_runtime0 from "react/jsx-runtime";
3
3
 
4
4
  //#region components/pages/video-list/video-list-skeleton.d.ts
5
5
  interface VideoListSkeletonProps {
6
- /** 卡片占位数量,默认 3 个。 */
6
+ /** 卡片占位数量,默认 8 个。 */
7
7
  count?: number;
8
8
  }
9
9
  /**
10
- * 视频推荐列表页骨架屏。
10
+ * 视频列表页骨架屏。
11
+ * 结构与 VideoListClient 保持一致:固定顶部 + tab + 双列卡片。
11
12
  */
12
13
  declare function VideoListSkeleton({
13
14
  count
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{Box as e}from"../../ui/box.mjs";import{Skeleton as t}from"../../ui/skeleton.mjs";import{jsx as n,jsxs as r}from"react/jsx-runtime";function i({count:i=3}){return r(e,{as:`main`,className:`min-h-[100dvh] bg-[linear-gradient(180deg,#160320_0%,#2a0a56_100%)] text-white`,children:[r(e,{className:`px-[16px] pb-[12px] pt-[10px]`,children:[r(e,{as:`header`,className:`flex items-center justify-between`,children:[n(t,{className:`h-[24px] w-[24px] rounded-sm !bg-[rgba(255,255,255,0.12)]`,"aria-label":`back-icon-skeleton`}),n(e,{className:`flex flex-1 justify-center px-[16px]`,children:n(t,{className:`h-[22px] w-[96px] !bg-[rgba(255,255,255,0.12)]`,"aria-label":`video-list-title-skeleton`})}),n(e,{className:`h-[24px] w-[24px] shrink-0`})]}),r(e,{as:`nav`,className:`mt-[12px] flex gap-[14px]`,children:[n(t,{className:`h-[28px] w-[64px] rounded-[100px] !bg-[rgba(255,255,255,0.16)]`,"aria-label":`hot-tab-skeleton`}),n(t,{className:`h-[28px] w-[64px] rounded-[100px] !bg-[rgba(255,255,255,0.12)]`,"aria-label":`latest-tab-skeleton`})]})]}),n(e,{className:`flex flex-col gap-[16px] px-[16px] pb-[24px]`,children:Array.from({length:i}).map((i,a)=>r(e,{className:`rounded-[16px] border border-white/10 bg-[rgba(255,255,255,0.08)] p-[16px] backdrop-blur-[12px]`,children:[n(t,{className:`aspect-[326/207] w-full rounded-[8px] !bg-[rgba(255,255,255,0.12)]`,"aria-label":`video-cover-skeleton`}),r(e,{className:`mt-[16px] flex gap-[16px]`,children:[n(t,{className:`h-[88px] w-[64px] shrink-0 rounded-[4px] !bg-[rgba(255,255,255,0.12)]`,"aria-label":`video-poster-skeleton`}),r(e,{className:`min-w-0 flex-1`,children:[r(e,{className:`flex items-start justify-between gap-[12px]`,children:[n(t,{className:`h-[24px] flex-1 !bg-[rgba(255,255,255,0.12)]`,"aria-label":`video-title-skeleton`}),n(t,{className:`h-[20px] w-[28px] shrink-0 !bg-[rgba(255,255,255,0.12)]`,"aria-label":`video-score-skeleton`})]}),r(e,{className:`mt-[8px] flex flex-wrap gap-[6px]`,children:[n(t,{className:`h-[18px] w-[56px] rounded-[4px] !bg-[rgba(255,255,255,0.12)]`,"aria-label":`video-tag-skeleton-1`}),n(t,{className:`h-[18px] w-[36px] rounded-[4px] !bg-[rgba(255,255,255,0.12)]`,"aria-label":`video-tag-skeleton-2`}),n(t,{className:`h-[18px] w-[36px] rounded-[4px] !bg-[rgba(255,255,255,0.12)]`,"aria-label":`video-tag-skeleton-3`}),n(t,{className:`h-[18px] w-[56px] rounded-[4px] !bg-[rgba(255,255,255,0.12)]`,"aria-label":`video-tag-skeleton-4`})]})]})]}),r(e,{className:`mt-[12px] space-y-[8px]`,children:[n(t,{className:`h-[16px] w-full !bg-[rgba(255,255,255,0.12)]`,"aria-label":`video-description-skeleton-1`}),n(t,{className:`h-[16px] w-full !bg-[rgba(255,255,255,0.12)]`,"aria-label":`video-description-skeleton-2`}),n(t,{className:`h-[16px] w-[84%] !bg-[rgba(255,255,255,0.12)]`,"aria-label":`video-description-skeleton-3`})]})]},`video-list-skeleton-${a}`))})]})}export{i as VideoListSkeleton};
2
+ "use client";import{Box as e}from"../../ui/box.mjs";import{Skeleton as t}from"../../ui/skeleton.mjs";import{jsx as n,jsxs as r}from"react/jsx-runtime";function i({count:i=8}){return r(e,{as:`main`,className:`min-h-[100dvh] bg-bg1`,children:[r(e,{className:`fixed top-0 left-0 right-0 z-20 bg-bg1`,children:[r(e,{as:`header`,className:`flex items-center gap-2 px-4 py-3`,children:[n(t,{className:`w-[16px] h-[16px] rounded-sm`,"aria-label":`back-icon-skeleton`}),n(e,{className:`flex-1 min-w-0 flex justify-center pr-[16px]`,children:n(t,{className:`h-[18px] w-[140px]`,"aria-label":`video-list-title-skeleton`})})]}),r(e,{as:`nav`,className:`px-4 pb-2 flex gap-2`,children:[n(t,{className:`h-[30px] w-[62px] rounded-[50px]`,"aria-label":`hot-tab-skeleton`}),n(t,{className:`h-[30px] w-[62px] rounded-[50px]`,"aria-label":`latest-tab-skeleton`})]})]}),n(e,{className:`grid grid-cols-2 gap-3 p-4 pt-[88px]`,children:Array.from({length:i}).map((i,a)=>r(e,{className:`overflow-hidden rounded-[8px] shadow-sm`,children:[n(t,{className:`w-full aspect-video h-[240px] rounded-[8px]`,"aria-label":`video-cover-skeleton`}),n(e,{className:`py-[8px]`,children:n(t,{className:`h-[20px] w-[80%]`,"aria-label":`video-title-skeleton`})})]},`video-list-skeleton-${a}`))})]})}export{i as VideoListSkeleton};
@@ -6,7 +6,7 @@ import * as class_variance_authority_types0 from "class-variance-authority/types
6
6
  //#region components/ui/badge.d.ts
7
7
  /** badgeVariants 工具定义。 */
8
8
  declare const badgeVariants: (props?: ({
9
- variant?: "default" | "outline" | "secondary" | "ghost" | "destructive" | "link" | null | undefined;
9
+ variant?: "default" | "link" | "secondary" | "destructive" | "outline" | "ghost" | null | undefined;
10
10
  } & class_variance_authority_types0.ClassProp) | undefined) => string;
11
11
  /** Badge 组件。 */
12
12
  declare function Badge({
@@ -4,7 +4,7 @@ import * as react_jsx_runtime0 from "react/jsx-runtime";
4
4
 
5
5
  //#region components/ui/box.d.ts
6
6
  /** BoxAs 类型定义。 */
7
- type BoxAs = 'div' | 'span' | 'section' | 'article' | 'aside' | 'header' | 'footer' | 'main' | 'nav' | 'li' | 'ul';
7
+ type BoxAs = 'div' | 'section' | 'article' | 'aside' | 'header' | 'footer' | 'main' | 'nav' | 'li' | 'ul';
8
8
  /** BoxProps 属性定义。 */
9
9
  interface BoxProps extends Omit<React.HTMLAttributes<HTMLElement>, 'className'> {
10
10
  /**
@@ -7,8 +7,8 @@ import * as class_variance_authority_types0 from "class-variance-authority/types
7
7
  //#region components/ui/button.d.ts
8
8
  /** buttonVariants 工具定义。 */
9
9
  declare const buttonVariants: (props?: ({
10
- variant?: "default" | "outline" | "secondary" | "ghost" | "destructive" | "link" | null | undefined;
11
- size?: "icon" | "default" | "xs" | "sm" | "lg" | "icon-xs" | "icon-sm" | "icon-lg" | null | undefined;
10
+ variant?: "default" | "link" | "secondary" | "destructive" | "outline" | "ghost" | null | undefined;
11
+ size?: "default" | "icon" | "xs" | "sm" | "lg" | "icon-xs" | "icon-sm" | "icon-lg" | null | undefined;
12
12
  } & class_variance_authority_types0.ClassProp) | undefined) => string;
13
13
  /** Button 组件属性。 */
14
14
  type ButtonProps = Button.Props & VariantProps<typeof buttonVariants> & {
@@ -34,7 +34,7 @@ type EmptyStateProps = React.ComponentProps<'div'> & {
34
34
  };
35
35
  /** emptyMediaVariants 工具定义。 */
36
36
  declare const emptyMediaVariants: (props?: ({
37
- variant?: "icon" | "default" | null | undefined;
37
+ variant?: "default" | "icon" | null | undefined;
38
38
  } & class_variance_authority_types0.ClassProp) | undefined) => string;
39
39
  /** EmptyMedia 组件。 */
40
40
  declare function EmptyMedia({
@@ -1,11 +1,11 @@
1
1
 
2
2
  import * as React from "react";
3
3
  import * as react_jsx_runtime0 from "react/jsx-runtime";
4
- import Image from "next/image";
4
+ import NextImage from "next/image";
5
5
 
6
6
  //#region components/ui/image.d.ts
7
7
  /** BaseImageProps 属性定义。 */
8
- type BaseImageProps = Omit<React.ComponentPropsWithoutRef<typeof Image>, 'className' | 'src' | 'alt' | 'width' | 'height' | 'loading' | 'priority' | 'fill' | 'style'>;
8
+ type BaseImageProps = Omit<React.ComponentPropsWithoutRef<typeof NextImage>, 'className' | 'src' | 'alt' | 'width' | 'height' | 'loading' | 'priority' | 'fill' | 'style'>;
9
9
  type CommonImageProps = BaseImageProps & {
10
10
  /** 图片地址,支持普通 URL、默认资源路径和加密地址。 */src: string; /** 图片替代文本。 */
11
11
  alt?: string; /** 图片类名。 */
@@ -27,6 +27,6 @@ type ImagePropsWithSize = CommonImageProps & {
27
27
  /** ImageProps 属性定义。 */
28
28
  type ImageProps = ImagePropsWithFill | ImagePropsWithSize;
29
29
  /** 图片组件:支持 bnc 解密、默认资源域名拼接与错误占位。 */
30
- declare function Image$1(props: ImageProps): react_jsx_runtime0.JSX.Element;
30
+ declare function Image(props: ImageProps): react_jsx_runtime0.JSX.Element;
31
31
  //#endregion
32
- export { BaseImageProps, CommonImageProps, Image$1 as Image, ImageProps, ImagePropsWithFill, ImagePropsWithSize };
32
+ export { BaseImageProps, CommonImageProps, Image, ImageProps, ImagePropsWithFill, ImagePropsWithSize };
@@ -82,7 +82,7 @@ declare function Item({
82
82
  }: ItemProps): React.ReactElement;
83
83
  /** itemMediaVariants 工具定义。 */
84
84
  declare const itemMediaVariants: (props?: ({
85
- variant?: "icon" | "default" | "image" | null | undefined;
85
+ variant?: "default" | "icon" | "image" | null | undefined;
86
86
  } & class_variance_authority_types0.ClassProp) | undefined) => string;
87
87
  /** ItemMedia 组件。 */
88
88
  declare function ItemMedia({
@@ -1,4 +1,4 @@
1
1
 
2
- var e={components:{biz:{basics:{fullscreenFeed:{runtime:{bottomInfo:{collapse:`Collapse`,expand:`Expand`,nextItem:`Next`,seriesAction:`Episodes · {title}`,seriesActionWithEpisode:`Episodes · {title} {episodeName}`},commentModal:{comment:`Comments`},userAction:{collectAction:`Collect`,commentAction:`Comment`,followFailed:`Follow failed`,like:`Like`,likeAction:`Like`,loginRequired:`Please log in first`,shareAction:`Share`},videoSlide:{watchFullscreen:`Watch full screen`}}}},business:{comment:{commentInput:{cannotSelectVideoWhenImageSelected:`Cannot select a video after choosing images`,dragFileNotSupported:`Drag-and-drop images/files is not supported. Please use the upload button below`,image:`Pictures`,imageUploadFailed:`Image upload failed`,partialImageUploadFailed:`Some images failed to upload`,pasteFileNotSupported:`Pasting images/files is not supported. Please use the upload button below`,placeholder:`Say something...`,publishCommentFailed:`Failed to publish comment`,publishDefault:`Publish`,publishSuccess:`Published successfully`,publishing:`Publishing...`,video:`Video`,videoUploadFailed:`Video upload failed`},commentItem:{contentInReview:`Content in review`,dislike:`Dislike`,like:`Like`,reply:`Reply`,replyCount:`{count} replies`},commentList:{dislikeHint:`Already disliked`,emptyPrompt:`No comments yet. Be the first one!`,fetchCommentsFailed:`Failed to fetch comments`,invalidReplyTarget:`Invalid reply target`,loading:`Loading...`,loginRequired:`Please log in first`,noMore:`No more`,publishCommentFailed:`Failed to publish comment`,publishReplyFailed:`Failed to publish reply`,viewMore:`View more`},replyDetail:{commentDetail:`Comment details`,dislike:`Dislike`,dislikeHint:`Already disliked`,fetchRepliesFailed:`Failed to fetch replies`,follow:`Follow`,followFailed:`Failed to follow`,followed:`Following`,invalidReplyTarget:`Invalid reply target`,like:`Like`,loginRequired:`Please log in first`,publishReplyFailed:`Failed to publish reply`,reply:`Reply`,underReview:`Content in review`,unfollowFailed:`Failed to unfollow`}},contact:{contactList:{myFollowing:`Following`,noFollowingUsers:`You are not following any users yet`,noMore:`No more`,noSearchResult:`No results found`},contactSearch:{cancel:`Cancel`,close:`Close`,placeholder:`Search users you want to @`}},detail:{detailFollowAction:{follow:`Follow`,following:`Following`},detailGuessLike:{title:`Guess you like it`},detailIntroduction:{collapse:`Collapse`,expand:`Expand`,score:`Score`},detailOperate:{collectAdded:`Added`,collectFailed:`Failed to collect`,collection:`Collection`,defaultCollection:`Default Collection`,like:`Like`,modifyCollection:`Change`,modifyCollectionSuccess:`Collection updated`,operateFailed:`Operation failed, please try again`,share:`Bagikan`,uncollectSuccess:`Removed from collection`},detailPopularComments:{emptyPrompt:`Looking forward to your first comment`,like:`Like`,mediaPlaceholder:`[Image/Video]`,popularComments:`Pop comments`},detailTabs:{discussion:`DISCUSSION`,video:`Video`},postRecommendList:{title:`Related Posts`},videoHero:{coverAlt:`Video player cover`,noVideos:`No videos available`}},fullscreenFeed:{variants:{fullscreenVideoFeed:{runtime:{client:{contentLoading:`Loading content...`}}}}},imageTextRecommend:{allEpisodes:`All {count} episodes`,defaultTitle:`Recommended Videos`,noCover:`No cover`,updatedTo:`Updated to {count} episodes`},marquee:{noticeAlt:`Notice`},navBar:{variants:{basicNavBar:{runtime:{channelFilterDialog:{add:`Add`,allAddedTo:`All have been added to`,allChannels:`All channels`,delete:`Delete`,moreChannels:`More channels`,myChannels:`My channels`,resetDefault:`Reset to default`},moreChannelEntry:`Other`}}}},searchHistory:{clear:`Clear`,clearAllHistory:`Delete all history`,confirmClearDescription:`Are you sure you want to delete all search history?`,defaultTitle:`Search History`,mockHistory1:`Sample history 1`,mockHistory2:`Sample history 2`,mockHistory3:`Sample history 3`},textRecommend:{defaultTitle:`Recommended search`,refreshBatch:`Refresh`}}},common:{blockedDialog:{contactSupport:`Contact Support`,description:`Due to: {remark}, your account has been restricted from logging in.
2
+ var e={components:{biz:{basics:{fullscreenFeed:{runtime:{bottomInfo:{collapse:`Collapse`,expand:`Expand`,nextItem:`Next`,seriesAction:`Episodes · {title}`,seriesActionWithEpisode:`Episodes · {title} {episodeName}`},commentModal:{comment:`Comments`},userAction:{collectAction:`Collect`,commentAction:`Comment`,followFailed:`Follow failed`,like:`Like`,likeAction:`Like`,loginRequired:`Please log in first`,shareAction:`Share`},videoSlide:{watchFullscreen:`Watch full screen`}}}},business:{comment:{commentInput:{cannotSelectVideoWhenImageSelected:`Cannot select a video after choosing images`,dragFileNotSupported:`Drag-and-drop images/files is not supported. Please use the upload button below`,image:`Pictures`,imageUploadFailed:`Image upload failed`,partialImageUploadFailed:`Some images failed to upload`,pasteFileNotSupported:`Pasting images/files is not supported. Please use the upload button below`,placeholder:`Say something...`,publishCommentFailed:`Failed to publish comment`,publishDefault:`Publish`,publishSuccess:`Published successfully`,publishing:`Publishing...`,video:`Video`,videoUploadFailed:`Video upload failed`},commentItem:{contentInReview:`Content in review`,dislike:`Dislike`,like:`Like`,reply:`Reply`,replyCount:`{count} replies`},commentList:{dislikeHint:`Already disliked`,emptyPrompt:`No comments yet. Be the first one!`,fetchCommentsFailed:`Failed to fetch comments`,invalidReplyTarget:`Invalid reply target`,loading:`Loading...`,loginRequired:`Please log in first`,noMore:`No more`,publishCommentFailed:`Failed to publish comment`,publishReplyFailed:`Failed to publish reply`,viewMore:`View more`},replyDetail:{commentDetail:`Comment details`,dislike:`Dislike`,dislikeHint:`Already disliked`,fetchRepliesFailed:`Failed to fetch replies`,follow:`Follow`,followFailed:`Failed to follow`,followed:`Following`,invalidReplyTarget:`Invalid reply target`,like:`Like`,loginRequired:`Please log in first`,publishReplyFailed:`Failed to publish reply`,reply:`Reply`,underReview:`Content in review`,unfollowFailed:`Failed to unfollow`}},contact:{contactList:{myFollowing:`Following`,noFollowingUsers:`You are not following any users yet`,noMore:`No more`,noSearchResult:`No results found`},contactSearch:{cancel:`Cancel`,close:`Close`,placeholder:`Search users you want to @`}},detail:{detailFollowAction:{follow:`Follow`,following:`Following`},detailGuessLike:{title:`Guess you like it`},detailIntroduction:{collapse:`Collapse`,expand:`Expand`,score:`Score`},detailOperate:{collectAdded:`Added`,collectFailed:`Failed to collect`,collection:`Collection`,defaultCollection:`Default Collection`,like:`Like`,modifyCollection:`Change`,modifyCollectionSuccess:`Collection updated`,operateFailed:`Operation failed, please try again`,share:`Bagikan`,uncollectSuccess:`Removed from collection`},detailPopularComments:{emptyPrompt:`Looking forward to your first comment`,like:`Like`,mediaPlaceholder:`[Image/Video]`,popularComments:`Pop comments`},detailTabs:{discussion:`DISCUSSION`,video:`Video`},postRecommendList:{title:`Related Posts`},videoHero:{coverAlt:`Video player cover`,noVideos:`No videos available`}},fullscreenFeed:{variants:{fullscreenVideoFeed:{runtime:{client:{contentLoading:`Loading content...`}}}}},imageTextRecommend:{allEpisodes:`All {count} episodes`,defaultTitle:`Recommended Videos`,noCover:`No cover`,updatedTo:`Updated to {count} episodes`},marquee:{noticeAlt:`Notice`},navBar:{variants:{basicNavBar:{runtime:{channelFilterDialog:{add:`Add`,allAddedTo:`All have been added to`,allChannels:`All channels`,delete:`Delete`,moreChannels:`More channels`,myChannels:`My channels`,resetDefault:`Reset to default`}}}}},searchHistory:{clear:`Clear`,clearAllHistory:`Delete all history`,confirmClearDescription:`Are you sure you want to delete all search history?`,defaultTitle:`Search History`,mockHistory1:`Sample history 1`,mockHistory2:`Sample history 2`,mockHistory3:`Sample history 3`},textRecommend:{defaultTitle:`Recommended search`,refreshBatch:`Refresh`}}},common:{blockedDialog:{contactSupport:`Contact Support`,description:`Due to: {remark}, your account has been restricted from logging in.
3
3
  Unblock time: {unblockTime}
4
- If this was not you, please contact support or file an appeal.`,gotIt:`Got it`,remarkDefault:`Abnormal behavior detected`,title:`Account Restricted`,unblockTimePermanent:`Permanent`},collectionPopup:{collectSuccess:`Added to collection`,coverAlt:`Cover image`,createCollection:`Create Collection`,createCollectionHint:`to create your collection.`,createModalAction:`Confirm`,createModalTitle:`New Collection`,favoriteToCollectionTitle:`Favorite to Collection`,newCollection:`New`,noCollections:`No collections yet`,postsCountSuffix:`Posts`,selectTitle:`Select Collection`,updateSuccess:`Collection updated`},debugLocaleSwitcher:{current:`Current`,languageDebugging:`Language Debugging`},deleteConfirmDialog:{cancel:`Cancel`,confirm:`Delete`,description:`This action cannot be undone.`},followButton:{follow:`Follow`,followFailed:`Failed to follow`,following:`Following`,loginFailed:`Login failed`,loginRequired:`Please log in first`,unfollowConfirmDialog:{cancel:`cancel`,confirm:`OK`,confirmUnfollow:`Are you sure you want to unfollow`},unfollowFailed:`Failed to unfollow`},imageCropModal:{cancel:`Cancel`,confirm:`Confirm`,processing:`Processing...`},infoCard:{cardBottom:{comment:`Comment`,dislike:`Dislike`,like:`Like`,share:`Share`}},list:{collectionList:{collectionListItem:{contentCountSuffix:`content`,movieLabel:`Movie`}}},photoGrid:{episodeLoading:`Episode Loading`,missingEpisode:`Missing valid episode`,noEpisodes:`No episodes available`},picker:{genderPicker:{cancel:`Cancel`,confirm:`Confirm`,options:{female:`Female`,male:`Male`,secret:`Secret`},title:`Select Gender`},pickerDrawer:{cancel:`Cancel`,confirm:`Confirm`,title:`Please Select`}},seriesEpisodes:{compactTotal:`{total} episodes`,completedSeriesTotal:`Completed series: {total} episodes`,episodeLabel:`Episode {episode}`,episodeNotFound:`Episode not found`,episodeSwitchFailed:`Failed to switch episode`,episodeSwitching:`Switching...`,episodeTitle:`Episode title`,ongoingSeriesTotal:`Ongoing series: {total} episodes`,ongoingSeriesUpdatedTo:`Ongoing series: updated to {total} episodes`,selectorTitle:`Episodes`,singleContent:`Single episode`},sharePopup:{shareContent:{copyFailed:`Copy failed`,copyShareLink:`Copy link`,copySuccess:`Copied`,shareHint:`Can paste a link to share with friends`,shareLinksTitle:`Share Links`},shareDrawer:{cancel:`Cancel`,collectionLabel:`Collection`,label:`Uncollect`,moments:`Moments`,wechat:`WeChat`,wechatFriend:`WeChat Friend`}},skeleton:{loading:`Loading`},title:`Are you sure you want to delete this content?`},pages:{collectionAdd:{page:{collectionNotFound:`Collection not found`,done:`Done`,emptyPublish:`No posts available to add`,selectPostFirst:`Please select posts first`,submitFailed:`Add failed, please try again later`,submitSuccess:`Added successfully`,submitting:`Adding...`,title:`Add posts to collection`,userNotFound:`User not found`}},collectionCreate:{form:{addCover:`Add cover`,clear:`Clear`,collectionNotFound:`Collection not found`,coverAlt:`Collection cover`,coverLabel:`Cover`,coverUploadFailed:`Failed to upload cover`,create:`Create`,createFailed:`Create failed`,createSuccess:`Created successfully`,createTitle:`Create Collection`,creating:`Creating...`,descriptionLabel:`Description`,descriptionPlaceholder:`Enter collection description`,descriptionRequired:`Please enter collection description`,editTitle:`Edit Collection`,label:`Name`,save:`Save`,saveFailed:`Save failed`,saveSuccess:`Saved successfully`,saving:`Saving...`,signatureLabel:`Description`,titlePlaceholder:`Please enter collection title`,titleRequired:`Please enter collection title`,uploading:`Uploading...`}},collectionDetail:{components:{collectionDetailCard:{collectedInLabel:`Collected in:`}},detail:{add:`Add Content`,cancel:`Cancel`,collectionManageTitle:`Collection Management`,contentCountSuffix:`Section Contents`,coverAlt:`Collection cover`,defaultCollectionDeleteNotSupported:`Default collection cannot be deleted`,defaultTitle:`Collection`,delete:`Delete`,deleteCollection:`Delete collection`,deleteFailed:`Delete failed`,deleteSuccess:`Collection deleted`,deleting:`Deleting...`,done:`Done`,editCollection:`Edit Collection`,emptyContent:`No content yet`,manageCollection:`Manage Collection`,operationFailed:`Operation failed, please try again later`,ownerAvatarAlt:`Collection owner`,pleaseLogin:`Please log in first`,selectAll:`Select all`,subscribe:`Subscribe`,subscribeOperateFailed:`Subscription action failed`,subscribeProcessing:`Processing...`,subscribeSuccess:`Subscribed successfully`,subscribed:`Subscribed`,uncollectFailed:`Failed to remove from collection`,uncollectSuccess:`Removed from collection`,unsubscribeSuccess:`Unsubscribed`,updatedSuffix:`Update`}},edit:{page:{avatarUpdateSuccess:`Updated successfully`,avatarUploadFailed:`Failed to upload avatar. Please try again later.`,avatarUploading:`Uploading...`,clickToChangeAvatar:`Tap to change avatar`,displayIdLabel:`Display ID`,editBlockedWhileSaving:`Profile is being saved. Please wait before editing other fields.`,genderFemale:`Female`,genderLabel:`Gender`,genderMale:`Male`,genderSecret:`Private`,genderSelect:`Please select`,genderUpdateSuccess:`Gender updated successfully`,imageTypeInvalid:`Only JPG/JPEG/PNG formats are supported`,label:`Nickname`,loading:`Loading`,nicknameInvalidChars:`Nickname only supports _, - and .`,nicknamePlaceholder:`Enter your nickname`,nicknameRequired:`Please enter a nickname`,nicknameTooShort:`Nickname must be at least 2 characters`,nicknameUpdateSuccess:`Nickname updated successfully`,save:`Save`,saveFailed:`Save failed. Please try again later.`,saveSuccess:`Saved successfully`,savingInProgress:`Saving, please wait.`,signatureLabel:`Signature`,signaturePlaceholder:`Enter your bio`,signatureTooShort:`Bio must be at least 2 characters`,signatureUpdateSuccess:`Bio updated successfully`,submit:`Submit`,title:`Edit profile`,updateFailed:`Update failed. Please try again later.`,userNotFound:`User info not found`}},feedSeries:{feedSeriesClient:{episodeLoading:`Episode Loading`,episodeSelectorTitle:`Episodes`,missingEpisode:`Missing valid episode`,noEpisodes:`No episodes available`},page:{videoLoading:`Loading video...`}},feedback:{components:{feedbackForm:{addScreenshot:`Add screenshot`,alt:`Screenshot of feedback`,contactLabel:`Contact`,contentMinLength:`Problem description must be at least 4 characters.`,delete:`Delete`,imageTypeInvalid:`Only JPG/JPEG/PNG formats are supported`,label:`Feedback content`,loading:`Submitting...`,message:`Update failed, please try again later.`,missingContact:`Enter your contact information.`,missingFeedback:`Please enter your feedback`,missingScreenshot:`Please upload a screenshot`,optional:`Optional`,placeholder:`obtain SMS verification code`,placeholder1_6d0242:`Please enter your email or phone number so we can resolve your issue.`,screenshotHint:`You can upload up to 3 screenshots to help us identify the issue faster.`,screenshotLabel:`Upload Screenshot`,screenshotUploadFailed:`Screenshot upload failed, please try again later`,submit:`SUBMIT`,submitsuccess:`Feedback submitted successfully. We will resolve it as soon as possible.`,title:`Feedback`,uploading:`UPLOADING...`}}},follow:{components:{followButton:{follow:`Follow`,following:`Following`},interactionTabs:{fans:`Fans`,follow:`Follow`},userList:{follow:`Follow`,followBack:`Follow back`,followNow:`Follow now`,noFans:`No fans yet`,noFollowedUsers:`Not following any users`}},pages:{fans:{privateListUnavailable:`This fan list is not publicly available`},followed:{privateListUnavailable:`This following list is not publicly available`}}},fullscreenFeed:{page:{episodeSelectorTitle:`Episodes`,missingParams:`Missing testimonial bit or episode parameter`}},login:{forgot:{back:`Back`,emailPlaceholder:`Enter your email`,getCode:`Get verification code`,loginLink:`Remembered your password? Log in`,or:`or`,sendFailed:`Failed to send, please try again later`,sending:`Sending...`,title:`Forgot your password?`},index:{loginFailed:`Login failed. Please try again later.`,loginSuccess:`Logged in successfully`},loginClient:{agreeToTerms:`I have read and agree to the Terms of Service and Privacy Policy`,agreeToTermsPrefix:`I have read and agree to the `,and:` and `,close:`Close`,emailPlaceholder:`Enter your email`,forgotPassword:`Forgot Password`,hidePassword:`Hide password`,loggingIn:`Logging in...`,login:`Log in`,noAccount:`No account? `,passwordPlaceholder:`Enter your password`,privacyPolicy:`Privacy Policy`,registerLink:`Sign up`,showPassword:`Show password`,subtitle:`Sign up or log in to discover more great videos`,title:`Welcome 👋`,userAgreement:`Terms of Service`},password:{back:`Back`,confirmModify:`Confirm changes`,confirmPasswordPlaceholder:`Re-enter your password`,confirmReset:`Confirm reset`,passwordInvalidCharacters:`Use only letters, numbers, and supported special characters`,passwordNeedTwoTypes:`Include at least 2 character types (upper/lower/number/special)`,passwordPlaceholder:`Enter a password (8-32 characters)`,passwordSetSuccess:`Password updated`,passwordTooLong:`Password must be no more than 32 characters`,passwordTooShort:`Password must be at least 8 characters`,passwordsNotMatch:`Passwords do not match`,register:`Register`,setLoginPassword:`Set a login password`,setNewPassword:`Set a new password`,submitFailed:`Failed to submit. Please try again later.`,submitting:`Submitting...`},register:{back:`Back`,emailPlaceholder:`Enter your email`,getCode:`Sign up`,hasAccount:`Already have an account? `,invalidEmail:`Please enter a valid email`,loginLink:`Log in`,sendFailed:`Failed to send`,sending:`Sending...`,title:`Create your account`},resetPassword:{back:`Back`,codePlaceholder:`Enter the verification code`,passwordRuleHint:`Use 8-32 characters and include at least 2 types (upper/lower/number/special)`,resend:`Resend`,sendCode:`Send code`,sendFailed:`Failed to send`,title:`Reset password`,verifyEmail:`Verify email`,verifyFailed:`Verification failed. Please try again later.`,verifyHint:`Verify your identity`,verifyViaEmail:`Verify via email`,verifying:`Verifying...`},verify:{back:`Back`,invalidCode:`Invalid verification code`,nextStep:`Submit`,resend:`Resend`,resendCountdown:`Resend ({seconds}s)`,sentTo:`Sent to`,title:`Enter the verification code`,verifying:`Submitting...`}},postDetail:{postDetailClient:{comment:`Comments`,postDeleted:`This post has been deleted`,postOffline:`This post is no longer available`,reactions:`Reactions`}},profile:{client:{collect:`Collect`,collectionNotPublic:`This collection is private`,editProfile:`Edit profile`,exploreAdventures:`Explore amazing adventures.`,follow:`Follow`,followFailed:`Follow failed`,followSuccess:`Followed successfully`,followed:`Following`,history:`History`,imageTooLarge:`The image is too large. Please choose one smaller than 5MB.`,imageTypeInvalid:`Only JPG/JPEG/PNG formats are supported`,like:`Like`,likeNotPublic:`Likes are private`,loginNow:`Log in`,loginRequiredForUpload:`Please log in and try again.`,loginToSeeMoreVideos:`Log in to see more great videos`,loginToView:`Please log in to view`,mediaUpdateSuccess:`Updated successfully`,operationFailed:`Operation failed. Please try again later.`,processing:`Processing...`,publish:`Publish`,unfollowFailed:`Unfollow failed`,unfollowSuccess:`Unfollowed`,uploadFailed:`Upload failed. Please try again later.`,welcomeToPlanet:`Welcome`},components:{tabs:{collectTab:{cancel:`Cancel`,cancelSelectAll:`Clear Selection`,collections:`Collections`,created:`Created`,delete:`Delete`,deleteConfirmDescription:`Are you sure you want to remove the selected items from your collections?`,edit:`Edit`,emptyContent:`You haven't collected any content yet`,noCreatedCollections:`No created collections yet`,noSubscribedCollections:`No subscribed collections yet`,operationFailed:`Operation failed, please try again later`,pleaseLogin:`Please log in first`,posts:`Posts`,processing:`Processing...`,selectAll:`Select All`,subscribed:`Subscribed`,uncollectFailed:`Failed to uncollect`,uncollectedSuccess:`Uncollected successfully`,video:`Video`},historyTab:{cancel:`Cancel`,delete:`Delete`,deleteFailed:`Deletion failed.`,edit:`Edit`,emptyContent:`You have no watch history yet`,historyDeletedSuccess:`Browsing history deleted`,operationFailed:`Operation failed, please try again later`,pleaseLogin:`Please log in first`,posts:`Posts`,processing:`Processing...`,selectAll:`Select All`,video:`Video`},likeTab:{cancel:`Cancel`,delete:`Delete`,edit:`Edit`,emptyContent:`You haven't liked any content yet`,operationFailed:`Operation failed, please try again later`,pleaseLogin:`Please log in first`,posts:`Posts`,processing:`Processing...`,selectAll:`Select All`,unlikeFailed:`Failed to unlike`,unlikedSuccess:`Unliked successfully`,video:`Video`},publishTab:{deleteFailed:`Delete failed`,deleteSuccess:`Deleted`,emptyText:`No published content yet`}},userProfileHeader:{fans:`Fans`,follow:`Follow`,likesReceived:`Likes Received`}}},publish:{components:{collection:{createCollection:`Create Collection`,moreCollections:`More collections`,syncToCollection:`Sync to collection`},collectionCard:{contentCountSuffix:`Bar Contents`},collectionPopup:{noCollections:`No collections yet`,syncToCollection:`Sync to collection`},coverItem:{coverAlt:`Cover`,editCover:`Edit cover`,uploadImage:`Upload Image`},editor:{headlineHint:`With Headline`},header:{publish:`Publish`},materialItem:{deleteMaterial:`Delete media`,uploadImage:`Uploaded image`,videoCover:`Video cover`},mediaPreview:{previewAlt:`Preview`},uploadProgress:{uploading:`Uploading`}},pageClient:{cancel:`cancel`,editContentFirst:`Please edit the content first`,maxMaterialCount:`You can upload up to 9 materials`,publishFailed:`Publish failed, please try again later`,publishSuccess:`Published successfully`,resume:`Continued`,switchToPostConfirm:`Switching to post will clear the main video. Continue?`,switchToVideoConfirm:`Switching to video will clear existing materials. Continue?`,title:`Confirm toggle`,uploadFailedCount:`{count} files failed to upload`}},search:{hotRecommend:{hotPostsTitle:`Popular Posts`,hotVideosTitle:`Popular Videos`},hotSearch:{recommendedSearches:`Recommended searches`},pageClient:{searchHistory:`Search History`,tabs:{all:`All`,post:`Posts`,user:`Users`,video:`Videos`}},searchResult:{searchAll:{emptyResult:`No related content found`,more:`MORE`,relatedSuffix:`Related`},searchUser:{emptyResult:`No related content found`,followersSuffix:`Followers`},searchVideoInfo:{noRelevantContent:`No relevant content found`}},topHeader:{placeholder:`Please enter keywords`,search:`Cari`}},settings:{components:{resetPasswordDrawer:{boundEmailNotice:`The email address is currently bound`,codeSentSuccess:`Verification code sent`,confirmPasswordPlaceholder:`Please confirm your password again`,passwordPlaceholder:`Enter your password`,passwordResetSuccess:`Password changed successfully`,resendAfter:`resend after`,resendCountdown:`Resend ({seconds}s)`,resetFailed:`Modification failed, please try again later`,resetPassword:`Submit`,sendCode:`Get verification code`,sendFailed:`Failed to send, please try again later`,sending:`Sending...`,setNewPasswordHint:`Set Password`,submitting:`Submitting...`,title:`Reset Password`,verifyEmailButton:`Validate Email`,verifyFailed:`Verification failed, please check the code`,verifyHint:`Perform verification`,verifySuccess:`Verification successful`,verifyTitle:`Enter the verification code`,verifying:`Verifying...`},settings:{button:`Log Out`,cancel:`Cancel`,collectionsTitle:`Collections`,confirm:`Confirm`,feedbackTitle:`Feedback`,follow:`Following`,followersTitle:`Followers`,languageTitle:`Language`,like:`Likes`,listPrivateHint:`This list will be private`,logoutConfirmMessage:`Are you sure you want to log out?`,privacySettingsTitle:`Privacy Settings`,resetPasswordTitle:`Reset Password`,switchTo:`Switch to`,title:`Settings Center`,whenOff:`When turned off`}}},userFollow:{components:{comprehensiveTab:{empty:`No content yet, try somewhere else.`,postsFeed:`Posts Feed`},contentItem:{filmAndTv:`Film and television related`},followNoLogin:{login:`Log in`,notLoggedIn:`You are not logged in`},followNoUser:{empty:`You haven't followed anyone yet`},followedList:{newUpdate:`New update`,seeAll:`See All`},postTab:{empty:`Not following any posts`}},page:{tabs:{posts:`Posts`}}},videoDetail:{videoDetailClient:{videoDeleted:`This video has been deleted`,videoUnavailable:`This video is unavailable`}}},ui:{infiniteScroll:{failed:`Load failed, click to retry`,loading:`Loading`,noMore:`No more`},list:{empty:`No content yet`,loading:`Loading...`,postList:{earlier:`Earlier`,empty:`No browsing history`,postListItem:{coverAlt:`Post cover`},today:`Today`,yesterday:`Yesterday`},userActivityList:{earlier:`Earlier`,empty:`No browsing history`,today:`Today`,userActivityListActions:{comment:`Comment`,dislike:`Dislike`,like:`Like`,likeFailed:`Like failed`,share:`Share`},userActivityListItem:{collapse:`Collapse`,collectFailed:`Collection failed`,expand:`Expand`,mediaAlt:`Feed image`},yesterday:`Yesterday`},videoList:{earlier:`Earlier`,empty:`No viewing history`,today:`Today`,videoListItem:{coverAlt:`Video cover`,movie:`Movie`,series:`Series`,watchUntil:`Watched `},yesterday:`Yesterday`}},loading:{label:`Loading...`}}},tabBar:{follow:`Follow`,home:`Home`,message:`Message`,mine:`Mine`}};export{e as default};
4
+ If this was not you, please contact support or file an appeal.`,gotIt:`Got it`,remarkDefault:`Abnormal behavior detected`,title:`Account Restricted`,unblockTimePermanent:`Permanent`},collectionPopup:{collectSuccess:`Added to collection`,coverAlt:`Cover image`,createCollection:`Create Collection`,createCollectionHint:`to create your collection.`,createModalAction:`Done`,createModalTitle:`New Collection`,favoriteToCollectionTitle:`Favorite to Collection`,newCollection:`New`,noCollections:`No collections yet`,postsCountSuffix:`Posts`,selectTitle:`Select Collection`,updateSuccess:`Collection updated`},debugLocaleSwitcher:{current:`Current`,languageDebugging:`Language Debugging`},deleteConfirmDialog:{cancel:`Cancel`,confirm:`Delete`,description:`This action cannot be undone.`},followButton:{follow:`Follow`,followFailed:`Failed to follow`,following:`Following`,loginFailed:`Login failed`,loginRequired:`Please log in first`,unfollowConfirmDialog:{cancel:`cancel`,confirm:`OK`,confirmUnfollow:`Are you sure you want to unfollow`},unfollowFailed:`Failed to unfollow`},imageCropModal:{cancel:`Cancel`,confirm:`Confirm`,processing:`Processing...`},infoCard:{cardBottom:{comment:`Comment`,dislike:`Dislike`,like:`Like`,share:`Share`}},list:{collectionList:{collectionListItem:{contentCountSuffix:`content`,movieLabel:`Movie`}}},photoGrid:{episodeLoading:`Episode Loading`,missingEpisode:`Missing valid episode`,noEpisodes:`No episodes available`},picker:{genderPicker:{cancel:`Cancel`,confirm:`Confirm`,options:{female:`Female`,male:`Male`,secret:`Secret`},title:`Select Gender`},pickerDrawer:{cancel:`Cancel`,confirm:`Confirm`,title:`Please Select`}},seriesEpisodes:{completedSeriesTotal:`Completed series: {total} episodes`,episodeLabel:`Episode {episode}`,episodeNotFound:`Episode not found`,episodeSwitchFailed:`Failed to switch episode`,episodeSwitching:`Switching...`,episodeTitle:`Episode title`,ongoingSeriesTotal:`Ongoing series: {total} episodes`,ongoingSeriesUpdatedTo:`Ongoing series: updated to {total} episodes`,selectorTitle:`Episodes`,singleContent:`Single episode`},sharePopup:{shareContent:{copyFailed:`Copy failed`,copyShareLink:`Copy link`,copySuccess:`Copied`,shareHint:`Can paste a link to share with friends`,shareLinksTitle:`Share Links`},shareDrawer:{cancel:`Cancel`,collectionLabel:`Collection`,label:`Uncollect`,moments:`Moments`,wechat:`WeChat`,wechatFriend:`WeChat Friend`}},skeleton:{loading:`Loading`},title:`Are you sure you want to delete this content?`},pages:{collectionAdd:{page:{collectionNotFound:`Collection not found`,done:`Done`,emptyPublish:`No posts available to add`,selectPostFirst:`Please select posts first`,submitFailed:`Add failed, please try again later`,submitSuccess:`Added successfully`,submitting:`Adding...`,title:`Add posts to collection`,userNotFound:`User not found`}},collectionCreate:{form:{addCover:`Add cover`,collectionNotFound:`Collection not found`,coverAlt:`Collection cover`,coverLabel:`Cover`,coverUploadFailed:`Failed to upload cover`,create:`Create`,createFailed:`Create failed`,createSuccess:`Created successfully`,createTitle:`Create Collection`,creating:`Creating...`,descriptionLabel:`Description`,descriptionPlaceholder:`Add a description for this collection`,editTitle:`Edit Collection`,label:`Title`,save:`Save`,saveFailed:`Save failed`,saveSuccess:`Saved successfully`,saving:`Saving...`,signatureLabel:`Description`,titlePlaceholder:`Please enter collection title`,titleRequired:`Please enter collection title`,uploading:`Uploading...`}},collectionDetail:{components:{collectionDetailCard:{collectedInLabel:`Collected in:`}},detail:{add:`Add Content`,cancel:`Cancel`,collectionManageTitle:`Collection Management`,contentCountSuffix:`Section Contents`,coverAlt:`Collection cover`,defaultCollectionDeleteNotSupported:`Default collection cannot be deleted`,defaultTitle:`Collection`,delete:`Delete`,deleteCollection:`Delete collection`,deleteFailed:`Delete failed`,deleteSuccess:`Collection deleted`,deleting:`Deleting...`,done:`Done`,editCollection:`Edit Collection`,emptyContent:`No content yet`,manageCollection:`Manage Collection`,operationFailed:`Operation failed, please try again later`,ownerAvatarAlt:`Collection owner`,pleaseLogin:`Please log in first`,selectAll:`Select all`,subscribe:`Subscribe`,subscribeOperateFailed:`Subscription action failed`,subscribeProcessing:`Processing...`,subscribeSuccess:`Subscribed successfully`,subscribed:`Subscribed`,uncollectFailed:`Failed to remove from collection`,uncollectSuccess:`Removed from collection`,unsubscribeSuccess:`Unsubscribed`,updatedSuffix:`Update`}},edit:{page:{avatarUpdateSuccess:`Updated successfully`,avatarUploadFailed:`Failed to upload avatar. Please try again later.`,avatarUploading:`Uploading...`,clickToChangeAvatar:`Tap to change avatar`,displayIdLabel:`Display ID`,editBlockedWhileSaving:`Profile is being saved. Please wait before editing other fields.`,genderFemale:`Female`,genderLabel:`Gender`,genderMale:`Male`,genderSecret:`Private`,genderSelect:`Please select`,genderUpdateSuccess:`Gender updated successfully`,imageTypeInvalid:`Only JPG/JPEG/PNG formats are supported`,label:`Nickname`,loading:`Loading`,nicknameInvalidChars:`Nickname only supports _, - and .`,nicknamePlaceholder:`Enter your nickname`,nicknameRequired:`Please enter a nickname`,nicknameTooShort:`Nickname must be at least 2 characters`,nicknameUpdateSuccess:`Nickname updated successfully`,save:`Save`,saveFailed:`Save failed. Please try again later.`,saveSuccess:`Saved successfully`,savingInProgress:`Saving, please wait.`,signatureLabel:`Signature`,signaturePlaceholder:`Enter your bio`,signatureTooShort:`Bio must be at least 2 characters`,signatureUpdateSuccess:`Bio updated successfully`,submit:`Submit`,title:`Edit profile`,updateFailed:`Update failed. Please try again later.`,userNotFound:`User info not found`}},feedSeries:{feedSeriesClient:{episodeLoading:`Episode Loading`,episodeSelectorTitle:`Episodes`,missingEpisode:`Missing valid episode`,noEpisodes:`No episodes available`},page:{videoLoading:`Loading video...`}},feedback:{components:{feedbackForm:{addScreenshot:`Add screenshot`,alt:`Screenshot of feedback`,contactLabel:`Contact`,contentMinLength:`Problem description must be at least 4 characters.`,delete:`Delete`,imageTypeInvalid:`Only JPG/JPEG/PNG formats are supported`,label:`Feedback content`,loading:`Submitting...`,message:`Update failed, please try again later.`,missingContact:`Enter your contact information.`,missingFeedback:`Please enter your feedback`,missingScreenshot:`Please upload a screenshot`,optional:`Optional`,placeholder:`obtain SMS verification code`,placeholder1_6d0242:`Please enter your email or phone number so we can resolve your issue.`,screenshotHint:`You can upload up to 3 screenshots to help us identify the issue faster.`,screenshotLabel:`Upload Screenshot`,screenshotUploadFailed:`Screenshot upload failed, please try again later`,submit:`SUBMIT`,submitsuccess:`Feedback submitted successfully. We will resolve it as soon as possible.`,title:`Feedback`,uploading:`UPLOADING...`}}},follow:{components:{followButton:{follow:`Follow`,following:`Following`},interactionTabs:{fans:`Fans`,follow:`Follow`},userList:{follow:`Follow`,followBack:`Follow back`,followNow:`Follow now`,noFans:`No fans yet`,noFollowedUsers:`Not following any users`}},pages:{fans:{privateListUnavailable:`This fan list is not publicly available`},followed:{privateListUnavailable:`This following list is not publicly available`}}},fullscreenFeed:{page:{episodeSelectorTitle:`Episodes`,missingParams:`Missing testimonial bit or episode parameter`}},login:{forgot:{back:`Back`,emailPlaceholder:`Enter your email`,getCode:`Get verification code`,loginLink:`Remembered your password? Log in`,or:`or`,sendFailed:`Failed to send, please try again later`,sending:`Sending...`,title:`Forgot your password?`},index:{loginFailed:`Login failed. Please try again later.`,loginSuccess:`Logged in successfully`},loginClient:{agreeToTerms:`I have read and agree to the Terms of Service and Privacy Policy`,agreeToTermsPrefix:`I have read and agree to the `,and:` and `,close:`Close`,emailPlaceholder:`Enter your email`,forgotPassword:`Forgot Password`,hidePassword:`Hide password`,loggingIn:`Logging in...`,login:`Log in`,noAccount:`Don't have an account?`,passwordPlaceholder:`Enter your password`,privacyPolicy:`Privacy Policy`,registerLink:`Create a new account`,showPassword:`Show password`,title:`Log in to your account`,userAgreement:`Terms of Service`},password:{back:`Back`,confirmModify:`Confirm changes`,confirmPasswordPlaceholder:`Re-enter your password`,confirmReset:`Confirm reset`,passwordInvalidCharacters:`Use only letters, numbers, and supported special characters`,passwordNeedTwoTypes:`Include at least 2 character types (upper/lower/number/special)`,passwordPlaceholder:`Enter a password (8-32 characters)`,passwordSetSuccess:`Password updated`,passwordTooLong:`Password must be no more than 32 characters`,passwordTooShort:`Password must be at least 8 characters`,passwordsNotMatch:`Passwords do not match`,register:`Register`,setLoginPassword:`Set a login password`,setNewPassword:`Set a new password`,submitFailed:`Failed to submit. Please try again later.`,submitting:`Submitting...`},register:{back:`Back`,emailPlaceholder:`Enter your email`,getCode:`Get verification code`,hasAccount:`Already have an account?`,invalidEmail:`Please enter a valid email`,loginLink:`Log in`,sendFailed:`Failed to send`,sending:`Sending...`,title:`Create your account`},resetPassword:{back:`Back`,codePlaceholder:`Enter the verification code`,passwordRuleHint:`Use 8-32 characters and include at least 2 types (upper/lower/number/special)`,resend:`Resend`,sendCode:`Send code`,sendFailed:`Failed to send`,title:`Reset password`,verifyEmail:`Verify email`,verifyFailed:`Verification failed. Please try again later.`,verifyHint:`Verify your identity`,verifyViaEmail:`Verify via email`,verifying:`Verifying...`},verify:{back:`Back`,invalidCode:`Invalid verification code`,nextStep:`Next`,resend:`Resend`,sentTo:`Sent to`,title:`Enter the verification code`,verifying:`Verifying...`}},postDetail:{postDetailClient:{comment:`Comments`,postDeleted:`This post has been deleted`,postOffline:`This post is no longer available`,reactions:`Reactions`}},profile:{client:{collect:`Collect`,collectionNotPublic:`This collection is private`,editProfile:`Edit profile`,exploreAdventures:`Explore amazing adventures.`,follow:`Follow`,followFailed:`Follow failed`,followSuccess:`Followed successfully`,followed:`Following`,history:`History`,imageTooLarge:`The image is too large. Please choose one smaller than 5MB.`,imageTypeInvalid:`Only JPG/JPEG/PNG formats are supported`,like:`Like`,likeNotPublic:`Likes are private`,loginNow:`Log in`,loginRequiredForUpload:`Please log in and try again.`,loginToView:`Please log in to view`,mediaUpdateSuccess:`Updated successfully`,operationFailed:`Operation failed. Please try again later.`,processing:`Processing...`,publish:`Publish`,unfollowFailed:`Unfollow failed`,unfollowSuccess:`Unfollowed`,uploadFailed:`Upload failed. Please try again later.`,welcomeToPlanet:`Welcome`},components:{tabs:{collectTab:{cancel:`Cancel`,collections:`Collections`,created:`Created`,delete:`Delete`,deleteConfirmDescription:`Are you sure you want to remove the selected items from your collections?`,edit:`Edit`,emptyContent:`You haven't collected any content yet`,noCreatedCollections:`No created collections yet`,noSubscribedCollections:`No subscribed collections yet`,operationFailed:`Operation failed, please try again later`,pleaseLogin:`Please log in first`,posts:`Posts`,processing:`Processing...`,selectAll:`Select All`,subscribed:`Subscribed`,uncollectFailed:`Failed to uncollect`,uncollectedSuccess:`Uncollected successfully`,video:`Video`},historyTab:{cancel:`Cancel`,delete:`Delete`,deleteFailed:`Deletion failed.`,edit:`Edit`,emptyContent:`You have no watch history yet`,historyDeletedSuccess:`Browsing history deleted`,operationFailed:`Operation failed, please try again later`,pleaseLogin:`Please log in first`,posts:`Posts`,processing:`Processing...`,selectAll:`Select All`,video:`Video`},likeTab:{cancel:`Cancel`,delete:`Delete`,edit:`Edit`,emptyContent:`You haven't liked any content yet`,operationFailed:`Operation failed, please try again later`,pleaseLogin:`Please log in first`,posts:`Posts`,processing:`Processing...`,selectAll:`Select All`,unlikeFailed:`Failed to unlike`,unlikedSuccess:`Unliked successfully`,video:`Video`},publishTab:{deleteFailed:`Delete failed`,deleteSuccess:`Deleted`,emptyText:`No published content yet`}},userProfileHeader:{fans:`Fans`,follow:`Follow`,likesReceived:`Likes Received`}}},publish:{components:{collection:{createCollection:`Create Collection`,moreCollections:`More collections`,syncToCollection:`Sync to collection`},collectionCard:{contentCountSuffix:`Bar Contents`},collectionPopup:{noCollections:`No collections yet`,syncToCollection:`Sync to collection`},coverItem:{coverAlt:`Cover`,editCover:`Edit cover`,uploadImage:`Upload Image`},editor:{headlineHint:`With Headline`},header:{publish:`Publish`},materialItem:{deleteMaterial:`Delete media`,uploadImage:`Uploaded image`,videoCover:`Video cover`},mediaPreview:{previewAlt:`Preview`},uploadProgress:{uploading:`Uploading`}},pageClient:{cancel:`cancel`,editContentFirst:`Please edit the content first`,maxMaterialCount:`You can upload up to 9 materials`,publishFailed:`Publish failed, please try again later`,publishSuccess:`Published successfully`,resume:`Continued`,switchToPostConfirm:`Switching to post will clear the main video. Continue?`,switchToVideoConfirm:`Switching to video will clear existing materials. Continue?`,title:`Confirm toggle`,uploadFailedCount:`{count} files failed to upload`}},search:{hotRecommend:{hotPostsTitle:`Popular Posts`,hotVideosTitle:`Popular Videos`},hotSearch:{recommendedSearches:`Recommended searches`},pageClient:{searchHistory:`Search History`,tabs:{all:`All`,post:`Posts`,user:`Users`,video:`Videos`}},searchResult:{searchAll:{emptyResult:`No related content found`,more:`MORE`,relatedSuffix:`Related`},searchUser:{emptyResult:`No related content found`,followersSuffix:`Followers`},searchVideoInfo:{noRelevantContent:`No relevant content found`}},topHeader:{placeholder:`Please enter keywords`,search:`Cari`}},settings:{components:{resetPasswordDrawer:{boundEmailNotice:`The email address is currently bound`,codeSentSuccess:`Verification code sent`,confirmPasswordPlaceholder:`Please enter the login password again`,passwordPlaceholder:`Enter password (6-18 characters)`,passwordResetSuccess:`Password changed successfully`,resendAfter:`resend after`,resetFailed:`Modification failed, please try again later`,resetPassword:`Change Password`,sendCode:`Send verification code`,sendFailed:`Failed to send, please try again later`,sending:`Sending...`,setNewPasswordHint:`Set a new login password`,submitting:`Submitting...`,title:`Reset Password`,verifyEmailButton:`Validate Email`,verifyFailed:`Verification failed, please check the code`,verifyHint:`Perform verification`,verifySuccess:`Verification successful`,verifying:`Verifying...`},settings:{button:`Log Out`,cancel:`Cancel`,collectionsTitle:`Collections`,confirm:`Confirm`,feedbackTitle:`Feedback`,follow:`Following`,followersTitle:`Followers`,languageTitle:`Language`,like:`Likes`,listPrivateHint:`This list will be private`,logoutConfirmMessage:`Are you sure you want to log out?`,privacySettingsTitle:`Privacy Settings`,resetPasswordTitle:`Reset Password`,switchTo:`Switch to`,title:`Settings`,whenOff:`When turned off`}}},userFollow:{components:{comprehensiveTab:{empty:`No content yet, try somewhere else.`,postsFeed:`Posts Feed`},contentItem:{filmAndTv:`Film and television related`},followNoLogin:{login:`Log in`,notLoggedIn:`You are not logged in`},followNoUser:{empty:`You haven't followed anyone yet`},followedList:{newUpdate:`New update`,seeAll:`See All`},postTab:{empty:`Not following any posts`}},page:{tabs:{posts:`Posts`}}},videoDetail:{videoDetailClient:{videoDeleted:`This video has been deleted`,videoUnavailable:`This video is unavailable`}}},ui:{infiniteScroll:{failed:`Load failed, click to retry`,loading:`Loading`,noMore:`No more`},list:{empty:`No content yet`,loading:`Loading...`,postList:{earlier:`Earlier`,empty:`No browsing history`,postListItem:{coverAlt:`Post cover`},today:`Today`,yesterday:`Yesterday`},userActivityList:{earlier:`Earlier`,empty:`No browsing history`,today:`Today`,userActivityListActions:{comment:`Comment`,dislike:`Dislike`,like:`Like`,likeFailed:`Like failed`,share:`Share`},userActivityListItem:{collapse:`Collapse`,collectFailed:`Collection failed`,expand:`Expand`,mediaAlt:`Feed image`},yesterday:`Yesterday`},videoList:{earlier:`Earlier`,empty:`No viewing history`,today:`Today`,videoListItem:{coverAlt:`Video cover`,movie:`Movie`,series:`Series`,watchUntil:`Watched `},yesterday:`Yesterday`}},loading:{label:`Loading...`}}},tabBar:{follow:`Follow`,home:`Home`,message:`Message`,mine:`Mine`}};export{e as default};