From 17c1f5bc1552b7a364af0fbf52c30286cbf10d62 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Sat, 27 Sep 2025 15:11:37 +0000
Subject: [PATCH 1/3] Initial plan
From bd6d3d672ada9a7e761325f8bb2e9f7420b4d9a7 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Sat, 27 Sep 2025 15:17:38 +0000
Subject: [PATCH 2/3] Initial analysis: Add language toggle to mobile header
Co-authored-by: abap34 <53076594+abap34@users.noreply.github.com>
---
package-lock.json | 3 +++
src/components/SearchResult.js | 12 ------------
2 files changed, 3 insertions(+), 12 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 43902175..4c6d6560 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -33,6 +33,9 @@
"react-use": "^17.5.1",
"web-vitals": "^2.1.4",
"yaml": "^2.5.1"
+ },
+ "engines": {
+ "node": ">=22.0.0"
}
},
"node_modules/@adobe/css-tools": {
diff --git a/src/components/SearchResult.js b/src/components/SearchResult.js
index 91a3ab8e..272dcd7d 100644
--- a/src/components/SearchResult.js
+++ b/src/components/SearchResult.js
@@ -97,19 +97,7 @@ function searchPostsByTags(posts, tags) {
}, posts);
}
-function findHighlightedText(content, query) {
- const isMatch = content.toLowerCase().includes(query.toLowerCase());
- const index = content.toLowerCase().indexOf(query.toLowerCase());
- const start = Math.max(0, index - 10);
- const end = Math.min(content.length, index + query.length + 100);
- const before = content.slice(start, index);
-
- const match = content.slice(index, index + query.length);
- const after = content.slice(index + query.length, end);
-
- return { isMatch, before, match, after };
-}
// ドメイン名を抽出する関数
function extractDomain(url) {
From cbaf6bbb92da400f50a87de673de7eb18f796898 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Sat, 27 Sep 2025 15:22:14 +0000
Subject: [PATCH 3/3] Add language toggle button to mobile header
Co-authored-by: abap34 <53076594+abap34@users.noreply.github.com>
---
src/components/Header.css | 14 ++++++++++++++
src/components/Header.js | 9 +++++++++
2 files changed, 23 insertions(+)
diff --git a/src/components/Header.css b/src/components/Header.css
index a8375adf..386b275a 100644
--- a/src/components/Header.css
+++ b/src/components/Header.css
@@ -39,6 +39,20 @@
margin-left: 0.5rem;
}
+.header-language-toggle {
+ font-size: 14px;
+ padding: 0.4rem 0.6rem;
+ border: 1px solid var(--foreground2);
+ border-radius: 4px;
+ background-color: var(--background1);
+ transition: all 0.2s ease;
+}
+
+.header-language-toggle:hover {
+ background-color: var(--background2);
+ border-color: var(--foreground1);
+}
+
@media (min-width: 768px) {
.header {
display: none;
diff --git a/src/components/Header.js b/src/components/Header.js
index fbffb503..95b7e519 100644
--- a/src/components/Header.js
+++ b/src/components/Header.js
@@ -1,9 +1,11 @@
import { useContext, useState } from 'react';
import SidebarContext from '../context/SidebarContext';
+import LanguageContext from '../context/LanguageContext';
import './Header.css';
export default function Header() {
const { toggleSidebar } = useContext(SidebarContext);
+ const { language, toggleLanguage } = useContext(LanguageContext);
const [isThree, setIsThree] = useState(true);
const handlePlusClick = () => {
@@ -22,6 +24,13 @@ export default function Header() {
+