Skip to content

Commit e9f98df

Browse files
committed
feat: Improve landing page with modern UI enhancements
- Add copy button for install command - Replace emoji icons with Lucide SVG icons - Convert code showcase from 3-column grid to tab UI - Add fadeInUp scroll animations - Add GitHub stars badge - Update i18n translations (ko, ja)
1 parent aadff98 commit e9f98df

File tree

7 files changed

+282
-49
lines changed

7 files changed

+282
-49
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,3 +20,4 @@ yarn-debug.log*
2020
yarn-error.log*
2121

2222
.idea
23+
.env*

i18n/ja/code.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -283,6 +283,10 @@
283283
"message": "生成",
284284
"description": "Generated label"
285285
},
286+
"homepage.codeShowcase.tryIt": {
287+
"message": "プレイグラウンドで試す →",
288+
"description": "Try it in Playground link"
289+
},
286290
"homepage.quickStart.title": {
287291
"message": "クイックスタート",
288292
"description": "Quick start title"

i18n/ko/code.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -283,6 +283,10 @@
283283
"message": "생성됨",
284284
"description": "Generated label"
285285
},
286+
"homepage.codeShowcase.tryIt": {
287+
"message": "플레이그라운드에서 시도해보기 →",
288+
"description": "Try it in Playground link"
289+
},
286290
"homepage.quickStart.title": {
287291
"message": "빠른 시작",
288292
"description": "Quick start title"

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
"@docusaurus/preset-classic": "3.9.2",
2020
"@mdx-js/react": "^3.0.0",
2121
"clsx": "^2.0.0",
22+
"lucide-react": "^0.559.0",
2223
"prism-react-renderer": "^2.3.0",
2324
"react": "^19.0.0",
2425
"react-dom": "^19.0.0"

pnpm-lock.yaml

Lines changed: 12 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/pages/index.module.css

Lines changed: 182 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,15 @@
1+
/* Animations */
2+
@keyframes fadeInUp {
3+
from {
4+
opacity: 0;
5+
transform: translateY(20px);
6+
}
7+
to {
8+
opacity: 1;
9+
transform: translateY(0);
10+
}
11+
}
12+
113
/* Hero Banner */
214
.heroBanner {
315
padding: 6rem 0;
@@ -14,6 +26,23 @@
1426
background: linear-gradient(180deg, #ffffff 0%, #f6f8fa 100%);
1527
}
1628

29+
.badges {
30+
display: flex;
31+
gap: 1rem;
32+
justify-content: center;
33+
align-items: center;
34+
margin-bottom: 0.5rem;
35+
}
36+
37+
.githubBadge {
38+
display: inline-flex;
39+
align-items: center;
40+
}
41+
42+
.githubBadge img {
43+
height: 20px;
44+
}
45+
1746
.heroTitle {
1847
font-size: 3.5rem;
1948
font-weight: 800;
@@ -73,6 +102,28 @@
73102
font-size: 1rem;
74103
}
75104

105+
.copyButton {
106+
background: transparent;
107+
border: none;
108+
cursor: pointer;
109+
padding: 0.25rem;
110+
color: #6a9955;
111+
display: inline-flex;
112+
align-items: center;
113+
justify-content: center;
114+
transition: color 0.2s ease, transform 0.2s ease;
115+
border-radius: 4px;
116+
}
117+
118+
.copyButton:hover {
119+
color: #8fbc8f;
120+
transform: scale(1.1);
121+
}
122+
123+
.copyButton:active {
124+
transform: scale(0.95);
125+
}
126+
76127
.heroButtons {
77128
display: flex;
78129
gap: 1rem;
@@ -83,6 +134,7 @@
83134
/* Features Section */
84135
.features {
85136
padding: 5rem 0;
137+
animation: fadeInUp 0.6s ease-out;
86138
}
87139

88140
.featuresGrid {
@@ -97,8 +149,16 @@
97149
border-radius: 12px;
98150
padding: 1.75rem;
99151
transition: transform 0.2s ease, box-shadow 0.2s ease;
152+
animation: fadeInUp 0.6s ease-out both;
100153
}
101154

155+
.featureCard:nth-child(1) { animation-delay: 0.1s; }
156+
.featureCard:nth-child(2) { animation-delay: 0.15s; }
157+
.featureCard:nth-child(3) { animation-delay: 0.2s; }
158+
.featureCard:nth-child(4) { animation-delay: 0.25s; }
159+
.featureCard:nth-child(5) { animation-delay: 0.3s; }
160+
.featureCard:nth-child(6) { animation-delay: 0.35s; }
161+
102162
.featureCard:hover {
103163
transform: translateY(-4px);
104164
box-shadow: 0 12px 24px rgba(0, 0, 0, 0.08);
@@ -118,6 +178,11 @@
118178
margin-bottom: 1rem;
119179
}
120180

181+
.featureIconSvg {
182+
color: var(--ifm-color-primary);
183+
margin-bottom: 1rem;
184+
}
185+
121186
.featureTitle {
122187
font-size: 1.25rem;
123188
font-weight: 600;
@@ -135,6 +200,7 @@
135200
.codeShowcase {
136201
padding: 5rem 0;
137202
background: var(--ifm-background-surface-color);
203+
animation: fadeInUp 0.6s ease-out;
138204
}
139205

140206
[data-theme='dark'] .codeShowcase {
@@ -152,9 +218,100 @@
152218
text-align: center;
153219
color: var(--ifm-color-emphasis-700);
154220
font-size: 1.1rem;
155-
margin-bottom: 3rem;
221+
margin-bottom: 2rem;
222+
}
223+
224+
/* Code Tabs */
225+
.codeTabs {
226+
display: flex;
227+
gap: 0.5rem;
228+
justify-content: center;
229+
margin-bottom: 1.5rem;
230+
flex-wrap: wrap;
231+
}
232+
233+
.codeTab {
234+
display: flex;
235+
flex-direction: column;
236+
align-items: center;
237+
gap: 0.25rem;
238+
padding: 0.75rem 1.25rem;
239+
background: var(--ifm-color-emphasis-100);
240+
border: 1px solid var(--ifm-color-emphasis-200);
241+
border-radius: 8px;
242+
cursor: pointer;
243+
transition: all 0.2s ease;
244+
}
245+
246+
[data-theme='dark'] .codeTab {
247+
background: #21262d;
248+
border-color: #30363d;
249+
}
250+
251+
.codeTab:hover {
252+
border-color: var(--ifm-color-primary);
253+
}
254+
255+
.codeTabActive {
256+
background: var(--ifm-color-primary);
257+
border-color: var(--ifm-color-primary);
258+
color: white;
259+
}
260+
261+
[data-theme='dark'] .codeTabActive {
262+
background: var(--ifm-color-primary);
263+
border-color: var(--ifm-color-primary);
264+
}
265+
266+
.codeTabFilename {
267+
font-family: var(--ifm-font-family-monospace);
268+
font-size: 0.875rem;
269+
font-weight: 500;
270+
}
271+
272+
.codeTabLabel {
273+
font-size: 0.7rem;
274+
text-transform: uppercase;
275+
letter-spacing: 0.05em;
276+
opacity: 0.8;
277+
}
278+
279+
.codeTabContent {
280+
max-width: 700px;
281+
margin: 0 auto;
282+
border-radius: 12px;
283+
overflow: hidden;
284+
border: 1px solid var(--ifm-color-emphasis-200);
285+
}
286+
287+
[data-theme='dark'] .codeTabContent {
288+
border-color: #30363d;
156289
}
157290

291+
.codeTabContent pre {
292+
margin: 0 !important;
293+
border-radius: 0 !important;
294+
}
295+
296+
.tryItWrapper {
297+
text-align: center;
298+
margin-top: 1.5rem;
299+
}
300+
301+
.tryItButton {
302+
display: inline-block;
303+
color: var(--ifm-color-primary);
304+
font-weight: 500;
305+
font-size: 1rem;
306+
transition: color 0.2s ease;
307+
}
308+
309+
.tryItButton:hover {
310+
color: var(--ifm-color-primary-dark);
311+
text-decoration: underline;
312+
}
313+
314+
/* Legacy code grid styles (keeping for reference) */
158315
.codeGrid {
159316
display: grid;
160317
grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
@@ -217,6 +374,7 @@
217374
/* Quick Start Section */
218375
.quickStart {
219376
padding: 5rem 0;
377+
animation: fadeInUp 0.6s ease-out;
220378
}
221379

222380
.steps {
@@ -262,6 +420,7 @@
262420
.tooling {
263421
padding: 5rem 0;
264422
background: var(--ifm-background-surface-color);
423+
animation: fadeInUp 0.6s ease-out;
265424
}
266425

267426
[data-theme='dark'] .tooling {
@@ -336,6 +495,18 @@
336495
height: 36px;
337496
font-size: 1rem;
338497
}
498+
499+
.codeTabs {
500+
gap: 0.375rem;
501+
}
502+
503+
.codeTab {
504+
padding: 0.5rem 0.875rem;
505+
}
506+
507+
.codeTabFilename {
508+
font-size: 0.75rem;
509+
}
339510
}
340511

341512
@media (max-width: 576px) {
@@ -356,4 +527,14 @@
356527
width: 100%;
357528
max-width: 280px;
358529
}
530+
531+
.installCommand {
532+
padding: 0.75rem 1rem;
533+
font-size: 0.875rem;
534+
}
535+
536+
.badges {
537+
flex-direction: column;
538+
gap: 0.5rem;
539+
}
359540
}

0 commit comments

Comments
 (0)