@@ -15,10 +15,17 @@ const sortedEssays = essays.sort((a, b) =>
1515
1616 <h1 >Essays</h1 >
1717
18- <ul style =" margin-top: 2rem;" >
18+ <div style =" margin: 1rem 0;" >
19+ <button class =" lang-btn active" data-lang =" all" >All</button >
20+ <button class =" lang-btn" data-lang =" en" >English</button >
21+ <button class =" lang-btn" data-lang =" ko" >Korean</button >
22+ </div >
23+
24+ <ul style =" margin-top: 2rem;" id =" essays-list" >
1925 { sortedEssays .map ((essay ) => (
20- <li style = " margin-bottom: 1rem;" >
26+ <li style = " margin-bottom: 1rem;" data-lang = { essay . data . lang } >
2127 <a href = { ` /essays/${essay .id } ` } >{ essay .data .title } </a >
28+ { essay .data .lang === " ko" && <span style = " color: #999; margin-left: 0.5rem;" >🇰🇷</span >}
2229 <br />
2330 <small style = " color: #666;" >
2431 { essay .data .created_at .toLocaleDateString (" en-US" , {
@@ -31,3 +38,45 @@ const sortedEssays = essays.sort((a, b) =>
3138 ))}
3239 </ul >
3340</Base >
41+
42+ <style >
43+ .lang-btn {
44+ background: none;
45+ border: 1px solid #ccc;
46+ padding: 0.25rem 0.75rem;
47+ margin-right: 0.5rem;
48+ cursor: pointer;
49+ border-radius: 4px;
50+ }
51+ .lang-btn:hover {
52+ background: #f0f0f0;
53+ }
54+ .lang-btn.active {
55+ background: #1a1a1a;
56+ color: white;
57+ border-color: #1a1a1a;
58+ }
59+ </style >
60+
61+ <script >
62+ const buttons = document.querySelectorAll('.lang-btn');
63+ const items = document.querySelectorAll('#essays-list li');
64+
65+ buttons.forEach(btn => {
66+ btn.addEventListener('click', () => {
67+ const lang = btn.getAttribute('data-lang');
68+
69+ buttons.forEach(b => b.classList.remove('active'));
70+ btn.classList.add('active');
71+
72+ items.forEach(item => {
73+ const itemLang = item.getAttribute('data-lang');
74+ if (lang === 'all' || itemLang === lang) {
75+ (item as HTMLElement).style.display = '';
76+ } else {
77+ (item as HTMLElement).style.display = 'none';
78+ }
79+ });
80+ });
81+ });
82+ </script >
0 commit comments