From 8aacd3bea2ae60fc10261c182113c638ca252d42 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=88=98=E8=88=AA=E5=AE=87?= <3364451258@qq.com>
Date: Wed, 17 Jun 2026 00:21:19 +0800
Subject: [PATCH] =?UTF-8?q?feat:=20=E4=B8=BB=E5=B8=83=E5=B1=80=20+=20?=
=?UTF-8?q?=E5=B7=A6=E4=BE=A7=E6=A8=A1=E5=BC=8F=E9=9D=A2=E6=9D=BF?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
gui/src-frontend/src/App.tsx | 56 +++++++++++++++++--
.../src/components/ExportPanel.tsx | 8 +++
.../src/components/HistoryList.tsx | 8 +++
gui/src-frontend/src/components/ModePanel.tsx | 27 +++++++++
gui/src-frontend/src/components/QrPreview.tsx | 9 +++
5 files changed, 103 insertions(+), 5 deletions(-)
create mode 100644 gui/src-frontend/src/components/ExportPanel.tsx
create mode 100644 gui/src-frontend/src/components/HistoryList.tsx
create mode 100644 gui/src-frontend/src/components/ModePanel.tsx
create mode 100644 gui/src-frontend/src/components/QrPreview.tsx
diff --git a/gui/src-frontend/src/App.tsx b/gui/src-frontend/src/App.tsx
index d94ed79..08c9835 100644
--- a/gui/src-frontend/src/App.tsx
+++ b/gui/src-frontend/src/App.tsx
@@ -1,9 +1,55 @@
-export default function App() {
+import { QrProvider, useQrState } from './store/qrContext';
+import ModePanel from './components/ModePanel';
+import QrPreview from './components/QrPreview';
+import ExportPanel from './components/ExportPanel';
+import HistoryList from './components/HistoryList';
+
+function AppLayout() {
return (
-
-
- 🀫 QRGen GUI — 开发中
-
+
+ {/* 顶部标题栏 */}
+
+
+ 🀫 QRGen
+
+
+
+ {/* 三栏主体 */}
+
+
+ {/* 底部输入区 */}
+
+
+
);
}
+
+function BottomInput() {
+ const { state } = useQrState();
+
+ return (
+
+ 输入区 — 开发中(当前模式: {state.mode})
+
+ );
+}
+
+export default function App() {
+ return (
+
+
+
+ );
+}
diff --git a/gui/src-frontend/src/components/ExportPanel.tsx b/gui/src-frontend/src/components/ExportPanel.tsx
new file mode 100644
index 0000000..3d718ee
--- /dev/null
+++ b/gui/src-frontend/src/components/ExportPanel.tsx
@@ -0,0 +1,8 @@
+export default function ExportPanel() {
+ return (
+
+ );
+}
diff --git a/gui/src-frontend/src/components/HistoryList.tsx b/gui/src-frontend/src/components/HistoryList.tsx
new file mode 100644
index 0000000..c5a7309
--- /dev/null
+++ b/gui/src-frontend/src/components/HistoryList.tsx
@@ -0,0 +1,8 @@
+export default function HistoryList() {
+ return (
+
+ );
+}
diff --git a/gui/src-frontend/src/components/ModePanel.tsx b/gui/src-frontend/src/components/ModePanel.tsx
new file mode 100644
index 0000000..8f92ef6
--- /dev/null
+++ b/gui/src-frontend/src/components/ModePanel.tsx
@@ -0,0 +1,27 @@
+import { useQrState } from '../store/qrContext';
+import { MODES, MODE_LABELS } from '../types';
+
+export default function ModePanel() {
+ const { state, dispatch } = useQrState();
+
+ return (
+
+
+ 编码模式
+
+ {MODES.map(mode => (
+
+ ))}
+
+ );
+}
diff --git a/gui/src-frontend/src/components/QrPreview.tsx b/gui/src-frontend/src/components/QrPreview.tsx
new file mode 100644
index 0000000..ca8f919
--- /dev/null
+++ b/gui/src-frontend/src/components/QrPreview.tsx
@@ -0,0 +1,9 @@
+export default function QrPreview() {
+ return (
+
+ );
+}