feat: 官网补充公司主体信息与隐私政策、服务条款页
新增 /privacy、/terms 页面,提供英文与印尼文版本,覆盖 Google 登录数据、Play 内购与订阅、账号删除及印尼个人数据保护要求;关于页补充法定主体、注册地址与联系方式,页脚下沉法律入口,下载区仅保留 Google Play。
This commit is contained in:
1 parent
3d96d82300
commit
d6da152dec
10 files changed
+337
-17
No files matched your search
@@ -1,17 +1,24 @@
|
||||
// Author: fruit.com.cn
|
||||
import { Suspense, useState } from 'react';
|
||||
import { Outlet, useLocation } from 'react-router-dom';
|
||||
import { Link, Outlet, useLocation } from 'react-router-dom';
|
||||
import { useLocale, useUi } from '../app/providers/AppProviders';
|
||||
import { Sidebar } from './components/Sidebar';
|
||||
import { TopBar } from './components/TopBar';
|
||||
import { UploadVideoDialog } from './components/UploadVideoDialog';
|
||||
|
||||
const FOOTER_LINKS = {
|
||||
id: { privacy: 'Privasi', terms: 'Ketentuan', about: 'Tentang YMB' },
|
||||
en: { privacy: 'Privacy', terms: 'Terms', about: 'About YMB' },
|
||||
zh: { privacy: '隐私政策', terms: '服务条款', about: '关于 YMB' },
|
||||
};
|
||||
|
||||
export function AppShell() {
|
||||
const { locale } = useLocale();
|
||||
const { sidebarOpen, setSidebarOpen } = useUi();
|
||||
const location = useLocation();
|
||||
const [uploadOpen, setUploadOpen] = useState(false);
|
||||
const immersive = location.pathname === '/shorts';
|
||||
const links = FOOTER_LINKS[locale.code] || FOOTER_LINKS.en;
|
||||
|
||||
return (
|
||||
<>
|
||||
@@ -21,7 +28,18 @@ export function AppShell() {
|
||||
<Suspense fallback={<div className="route-loading" aria-busy="true" />}>
|
||||
<Outlet />
|
||||
</Suspense>
|
||||
{!immersive && <footer className="site-footer">© {new Date().getFullYear()} {locale.copyright}</footer>}
|
||||
{!immersive && (
|
||||
<footer className="site-footer">
|
||||
<div>© {new Date().getFullYear()} {locale.copyright}</div>
|
||||
<nav className="site-footer-links" aria-label="Legal and company information">
|
||||
<Link to="/privacy">{links.privacy}</Link>
|
||||
<span aria-hidden="true">·</span>
|
||||
<Link to="/terms">{links.terms}</Link>
|
||||
<span aria-hidden="true">·</span>
|
||||
<Link to="/about">{links.about}</Link>
|
||||
</nav>
|
||||
</footer>
|
||||
)}
|
||||
</main>
|
||||
{sidebarOpen && (
|
||||
<button className="scrim mobile-only" onClick={() => setSidebarOpen(false)} aria-label="Close" type="button" />
|
||||
|
||||
Reference in new issue
Block a user