Skip to content

Commit c17f8b9

Browse files
committed
update
1 parent 1c15c6e commit c17f8b9

File tree

6 files changed

+119
-41
lines changed

6 files changed

+119
-41
lines changed

.github/workflows/deploy-app.yml

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
name: Deploy Application
2+
on:
3+
push:
4+
branches:
5+
- main
6+
7+
jobs:
8+
deploy_docs:
9+
runs-on: ubuntu-latest
10+
steps:
11+
- name: Checkout Repo
12+
uses: actions/checkout@v3
13+
14+
- name: Install pnpm
15+
uses: pnpm/action-setup@v4
16+
with:
17+
version: 10
18+
run_install: false
19+
20+
- name: Install Node.js
21+
uses: actions/setup-node@v4
22+
with:
23+
node-version: 22
24+
cache: "pnpm"
25+
26+
- name: Deploy
27+
env:
28+
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
29+
run: |
30+
pnpm install
31+
pnpm build:worker
32+
pnpm deploy:worker

.github/workflows/deploy-docs.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ on:
33
push:
44
branches:
55
- main
6+
paths:
7+
- docs/**
68

79
jobs:
810
deploy_docs:

docs/messages/en.json

Lines changed: 24 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -102,21 +102,34 @@
102102
"footer": "More providers and models are being added regularly"
103103
},
104104
"footer": {
105+
"subtitle": "AI Image Generator",
105106
"description": "Transform your words into stunning visuals with our advanced AI image generation technology.",
106107
"copyright": "© 2024 Typix AI. All rights reserved.",
107-
"links": {
108+
"categories": {
108109
"product": "Product",
109110
"community": "Community",
110-
"support": "Support",
111-
"features": "Features",
112-
"gallery": "Gallery",
113-
"pricing": "Pricing",
114-
"github": "GitHub",
115-
"discord": "Discord",
116-
"twitter": "Twitter",
117-
"docs": "Documentation",
118-
"faq": "FAQ",
119-
"contact": "Contact"
111+
"support": "Support"
112+
},
113+
"links": {
114+
"product": {
115+
"features": "Features",
116+
"gallery": "Gallery",
117+
"pricing": "Pricing"
118+
},
119+
"community": {
120+
"github": "GitHub",
121+
"discord": "Discord",
122+
"twitter": "Twitter"
123+
},
124+
"support": {
125+
"docs": "Documentation",
126+
"faq": "FAQ",
127+
"contact": "Contact Us"
128+
}
129+
},
130+
"legal": {
131+
"privacy": "Privacy Policy",
132+
"terms": "Terms of Service"
120133
}
121134
}
122135
}

docs/messages/zh.json

Lines changed: 24 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -102,21 +102,34 @@
102102
"footer": "更多服务商和模型正在持续接入中"
103103
},
104104
"footer": {
105+
"subtitle": "AI 图像生成器",
105106
"description": "使用我们先进的AI图像生成技术,将您的文字转化为惊艳的视觉效果。",
106107
"copyright": "© 2024 Typix AI. 保留所有权利。",
107-
"links": {
108+
"categories": {
108109
"product": "产品",
109110
"community": "社区",
110-
"support": "支持",
111-
"features": "功能特色",
112-
"gallery": "作品画廊",
113-
"pricing": "价格方案",
114-
"github": "GitHub",
115-
"discord": "Discord",
116-
"twitter": "Twitter",
117-
"docs": "文档",
118-
"faq": "常见问题",
119-
"contact": "联系我们"
111+
"support": "支持"
112+
},
113+
"links": {
114+
"product": {
115+
"features": "功能特色",
116+
"gallery": "作品画廊",
117+
"pricing": "价格方案"
118+
},
119+
"community": {
120+
"github": "GitHub",
121+
"discord": "Discord",
122+
"twitter": "Twitter"
123+
},
124+
"support": {
125+
"docs": "文档",
126+
"faq": "常见问题",
127+
"contact": "联系我们"
128+
}
129+
},
130+
"legal": {
131+
"privacy": "隐私政策",
132+
"terms": "服务条款"
120133
}
121134
}
122135
}

docs/src/components/footer.tsx

Lines changed: 24 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,21 @@ export function Footer() {
1313
support: ['docs', 'faq', 'contact'],
1414
};
1515

16+
const categories: Record<string, string> = {
17+
product: t('categories.product'),
18+
community: t('categories.community'),
19+
support: t('categories.support')
20+
};
21+
1622
return (
1723
<footer className="py-20 px-4 sm:px-6 lg:px-8 linear-gradient-bg relative overflow-hidden">
18-
{/* 背景装饰 */}
24+
{/* Background decoration */}
1925
<div className="absolute inset-0 overflow-hidden">
2026
<div className="absolute top-0 left-1/4 w-96 h-96 bg-gradient-to-r from-purple-500/10 via-blue-500/10 to-cyan-500/10 rounded-full blur-3xl" />
2127
<div className="absolute bottom-0 right-1/4 w-80 h-80 bg-gradient-to-l from-cyan-500/10 via-blue-500/10 to-purple-500/10 rounded-full blur-3xl" />
2228
</div>
2329

24-
{/* 顶部分割线 */}
30+
{/* Top divider */}
2531
<div className="absolute top-0 left-0 right-0 h-px bg-gradient-to-r from-transparent via-purple-500/20 to-transparent" />
2632

2733
<div className="container mx-auto max-w-7xl relative z-10">
@@ -36,14 +42,14 @@ export function Footer() {
3642
</div>
3743
</div>
3844
<div className="flex flex-col">
39-
<span className="text-2xl font-bold bg-gradient-to-r from-purple-400 via-blue-400 to-cyan-400 bg-clip-text text-transparent">Typix</span>
40-
<span className="text-xs text-muted-foreground font-medium tracking-wider uppercase">
41-
AI Image Generator
42-
</span>
45+
<span className="text-2xl font-bold bg-gradient-to-r from-purple-400 via-blue-400 to-cyan-400 bg-clip-text text-transparent">Typix</span>
46+
<span className="text-xs text-muted-foreground font-medium tracking-wider uppercase">
47+
{t('subtitle')}
48+
</span>
4349
</div>
4450
</div>
4551
<p className="text-muted-foreground mb-8 leading-relaxed">
46-
Transform your words into stunning visuals with our advanced AI image generation technology.
52+
{t('description')}
4753
</p>
4854
<div className="flex space-x-4">
4955
{[
@@ -67,7 +73,7 @@ export function Footer() {
6773
{Object.entries(footerLinks).map(([category, links]) => (
6874
<div key={category}>
6975
<h3 className="font-semibold text-foreground mb-6 bg-gradient-to-r from-purple-400 via-blue-400 to-cyan-400 bg-clip-text text-transparent">
70-
{category.charAt(0).toUpperCase() + category.slice(1)}
76+
{categories[category]}
7177
</h3>
7278
<ul className="space-y-4">
7379
{links.map((link) => (
@@ -76,7 +82,7 @@ export function Footer() {
7682
href={category === 'product' ? `#${link}` : '#'}
7783
variant="footer"
7884
>
79-
{link.charAt(0).toUpperCase() + link.slice(1)}
85+
{t(`links.${category}.${link}`)}
8086
</TextLinkButton>
8187
</li>
8288
))}
@@ -88,29 +94,32 @@ export function Footer() {
8894

8995
{/* Bottom Section */}
9096
<div className="mt-16 pt-8 relative">
91-
{/* 分割线 */}
97+
{/* Divider */}
9298
<div className="absolute top-0 left-0 right-0 h-px bg-gradient-to-r from-transparent via-border to-transparent" />
9399

94100
<div className="flex flex-col sm:flex-row justify-between items-center space-y-4 sm:space-y-0">
95101
<p className="text-muted-foreground text-sm">
96-
© 2024 Typix AI. All rights reserved.
102+
{t('copyright')}
97103
</p>
98104
<div className="flex items-center space-x-8 text-sm">
99-
{['Privacy Policy', 'Terms of Service'].map((item) => (
105+
{[
106+
{ id: 'privacy', label: t('legal.privacy') },
107+
{ id: 'terms', label: t('legal.terms') }
108+
].map((item) => (
100109
<TextLinkButton
101-
key={item}
110+
key={item.id}
102111
href="#"
103112
variant="footer"
104113
>
105-
{item}
114+
{item.label}
106115
</TextLinkButton>
107116
))}
108117
</div>
109118
</div>
110119
</div>
111120
</div>
112121

113-
{/* 底部渐变 */}
122+
{/* Bottom gradient */}
114123
<div className="absolute bottom-0 left-0 right-0 h-32 bg-gradient-to-t from-background/80 to-transparent pointer-events-none" />
115124
</footer>
116125
);

src/app/components/navigation/GlobalNavigation.tsx

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -105,20 +105,29 @@ export function GlobalNavigation({ className }: GlobalNavigationProps) {
105105
key={item.id}
106106
variant="ghost"
107107
className={cn(
108-
"h-full min-h-[3rem] flex-1 flex-col gap-1 rounded-none px-2 py-2 transition-all duration-200 hover:bg-transparent",
109-
active ? "text-primary" : "text-muted-foreground hover:text-foreground",
108+
"h-full min-h-[3rem] flex-1 flex-col gap-1 rounded-none px-2 py-2 transition-all duration-200 hover:bg-transparent relative",
109+
active
110+
? "text-primary"
111+
: "text-muted-foreground hover:text-foreground",
110112
)}
111113
onClick={handleNavigation(item.href)}
112114
>
113-
<Icon className="h-5 w-5 transition-transform duration-200" />
115+
<Icon className={cn(
116+
"h-5 w-5 transition-all duration-200",
117+
active && "scale-110 text-primary"
118+
)} />
114119
<span
115120
className={cn(
116121
"font-medium text-xs transition-all duration-200",
117-
active ? "text-primary" : "text-muted-foreground",
122+
active ? "text-primary font-semibold" : "text-muted-foreground",
118123
)}
119124
>
120125
{item.label}
121126
</span>
127+
{/* Active indicator for mobile */}
128+
{active && (
129+
<div className="absolute bottom-0 left-1/2 h-1 w-8 -translate-x-1/2 rounded-full bg-primary transition-all duration-200" />
130+
)}
122131
</Button>
123132
);
124133
})}

0 commit comments

Comments
 (0)