diff --git a/.cursorrules b/.cursorrules index 1feaef5..a24bc99 100644 --- a/.cursorrules +++ b/.cursorrules @@ -9,6 +9,7 @@ You are the joint apprentice of Evan You and Kent C. Dodds. Channel Evan You's e - Refrain from creating unrequested files, classes, functions, or configurations. - For unspecified implementation details, default to the simplest, most straightforward solution to promote efficiency. - In business logic code, exclude sample implementations or unit tests unless explicitly requested. +- When completing the final step of a task, do not create tests unless explicitly requested by the user. # CSS Style Rules - Exclusively use Tailwind CSS 3.x syntax for all styling. diff --git a/.env.production b/.env.production index 1720734..24e6f58 100644 --- a/.env.production +++ b/.env.production @@ -1,16 +1,16 @@ # 测试 -NEXT_PUBLIC_JAVA_URL = https://auth.test.movieflow.ai -NEXT_PUBLIC_BASE_URL = https://77.smartvideo.py.qikongjian.com -NEXT_PUBLIC_CUT_URL = https://77.smartcut.py.qikongjian.com -NEXT_PUBLIC_GOOGLE_REDIRECT_URI=https://www.movieflow.net/api/auth/google/callback -NEXT_PUBLIC_CUT_URL_TO = https://smartcut.huiying.video +# NEXT_PUBLIC_JAVA_URL = https://auth.test.movieflow.ai +# NEXT_PUBLIC_BASE_URL = https://77.smartvideo.py.qikongjian.com +# NEXT_PUBLIC_CUT_URL = https://77.smartcut.py.qikongjian.com +# NEXT_PUBLIC_GOOGLE_REDIRECT_URI=https://www.movieflow.net/api/auth/google/callback +# NEXT_PUBLIC_CUT_URL_TO = https://smartcut.huiying.video # 生产 -# NEXT_PUBLIC_JAVA_URL = https://auth.movieflow.ai -# NEXT_PUBLIC_BASE_URL = https://api.video.movieflow.ai -# NEXT_PUBLIC_CUT_URL = https://smartcut.api.movieflow.ai -# NEXT_PUBLIC_GOOGLE_REDIRECT_URI=https://www.movieflow.ai/api/auth/google/callback -# NEXT_PUBLIC_CUT_URL_TO = https://smartcut.movieflow.ai +NEXT_PUBLIC_JAVA_URL = https://auth.movieflow.ai +NEXT_PUBLIC_BASE_URL = https://api.video.movieflow.ai +NEXT_PUBLIC_CUT_URL = https://smartcut.api.movieflow.ai +NEXT_PUBLIC_GOOGLE_REDIRECT_URI=https://www.movieflow.ai/api/auth/google/callback +NEXT_PUBLIC_CUT_URL_TO = https://smartcut.movieflow.ai # 通用 # 当前域名配置 NEXT_PUBLIC_FRONTEND_URL = https://www.movieflow.ai diff --git a/components/common/Footer/index.tsx b/components/common/Footer/index.tsx new file mode 100644 index 0000000..7702ea2 --- /dev/null +++ b/components/common/Footer/index.tsx @@ -0,0 +1,63 @@ +import React from 'react'; + +/** + * 公共页脚组件 + * 提供统一的版权信息和页脚样式 + */ +export interface FooterProps { + /** 版权年份,默认为当前年份 */ + year?: number; + /** 公司名称,默认为 "MovieFlow" */ + companyName?: string; + /** 自定义版权文本 */ + customText?: string; + /** 额外的CSS类名 */ + className?: string; + /** 是否显示邮箱链接 */ + showEmailLink?: boolean; + /** 邮箱地址,默认为 "support@movieflow.ai" */ + emailAddress?: string; +} + +/** + * 公共页脚组件 + * @param props - 页脚组件属性 + * @returns JSX元素 + */ +const Footer: React.FC = ({ + year = new Date().getFullYear(), + companyName = 'MovieFlow', + customText, + className = '', + showEmailLink = false, + emailAddress = 'support@movieflow.ai' +}) => { + const copyrightText = customText || `© ${year} ${companyName}. All rights reserved.`; + + return ( +
+ {/* 左侧版权信息 */} +
+ {copyrightText} +
+ + {/* 右侧邮箱链接 */} + {showEmailLink && ( +
+ + Contact Us + +
+ )} +
+ ); +}; + +export default Footer; diff --git a/components/common/Footer/types.ts b/components/common/Footer/types.ts new file mode 100644 index 0000000..9552d7d --- /dev/null +++ b/components/common/Footer/types.ts @@ -0,0 +1,18 @@ +/** + * 页脚组件相关的类型定义 + */ + +export interface FooterProps { + /** 版权年份,默认为当前年份 */ + year?: number; + /** 公司名称,默认为 "MovieFlow" */ + companyName?: string; + /** 自定义版权文本 */ + customText?: string; + /** 额外的CSS类名 */ + className?: string; + /** 是否显示邮箱链接 */ + showEmailLink?: boolean; + /** 邮箱地址,默认为 "support@movieflow.ai" */ + emailAddress?: string; +} diff --git a/components/pages/home-page2.tsx b/components/pages/home-page2.tsx index a61440c..3b37aee 100644 --- a/components/pages/home-page2.tsx +++ b/components/pages/home-page2.tsx @@ -23,6 +23,7 @@ import { fetchTabsByCode, HomeTabItem } from "@/api/serversetting"; import H5TopBar from "@/components/layout/H5TopBar"; import { useCallbackModal } from "@/app/layout"; import { useDeviceType } from "@/hooks/useDeviceType"; +import Footer from "@/components/common/Footer"; /** 视频预加载系统 - 后台静默运行 */ function useVideoPreloader() { @@ -272,7 +273,7 @@ export function HomePage2() { - +