-
-
+
🎯 拖拽文件到此处或点击选择文件
📄 支持所有文本格式文件
diff --git a/src/components/ThemeToggle.jsx b/src/components/ThemeToggle.jsx
new file mode 100644
index 0000000..b0ad159
--- /dev/null
+++ b/src/components/ThemeToggle.jsx
@@ -0,0 +1,23 @@
+import React, { useState } from 'react';
+import { Moon, Sun } from 'lucide-react';
+
+export function ThemeToggle({ className = '' }) {
+ const [isDark, setIsDark] = useState(() =>
+ document.documentElement.classList.contains('dark')
+ );
+
+ const toggleTheme = () => {
+ document.documentElement.classList.toggle('dark');
+ setIsDark(document.documentElement.classList.contains('dark'));
+ };
+
+ return (
+
+ );
+}
diff --git a/src/components/__tests__/ThemeToggle.test.jsx b/src/components/__tests__/ThemeToggle.test.jsx
new file mode 100644
index 0000000..b36bc30
--- /dev/null
+++ b/src/components/__tests__/ThemeToggle.test.jsx
@@ -0,0 +1,15 @@
+import { render, screen, fireEvent } from '@testing-library/react';
+import { describe, it, expect } from 'vitest';
+import { ThemeToggle } from '../ThemeToggle';
+
+describe('ThemeToggle', () => {
+ it('toggles dark class on document element', () => {
+ document.documentElement.classList.remove('dark');
+ render(
);
+ const button = screen.getByRole('button', { name: '切换主题' });
+ fireEvent.click(button);
+ expect(document.documentElement.classList.contains('dark')).toBe(true);
+ fireEvent.click(button);
+ expect(document.documentElement.classList.contains('dark')).toBe(false);
+ });
+});
diff --git a/src/index.css b/src/index.css
index 3d38cda..c11bb65 100644
--- a/src/index.css
+++ b/src/index.css
@@ -4,6 +4,9 @@
/* Accessibility improvements */
@layer base {
+ body {
+ @apply bg-gray-50 text-gray-900 dark:bg-gray-900 dark:text-gray-100;
+ }
/* Screen reader only content */
.sr-only {
position: absolute;
diff --git a/tailwind.config.js b/tailwind.config.js
index dca8ba0..6fa4d26 100644
--- a/tailwind.config.js
+++ b/tailwind.config.js
@@ -1,5 +1,6 @@
/** @type {import('tailwindcss').Config} */
export default {
+ darkMode: 'class',
content: [
"./index.html",
"./src/**/*.{js,ts,jsx,tsx}",
From efa652054bab5c7a75b7377ce6cde14fff4f89dc Mon Sep 17 00:00:00 2001
From: JavaZero <71128095+JavaZeroo@users.noreply.github.com>
Date: Mon, 25 Aug 2025 19:05:43 +0800
Subject: [PATCH 2/5] feat: improve dark mode styling
---
src/App.jsx | 56 +++++++++----------
src/components/ChartContainer.jsx | 12 ++---
src/components/ComparisonControls.jsx | 26 ++++-----
src/components/FileConfigModal.jsx | 62 ++++++++++-----------
src/components/FileList.jsx | 32 +++++------
src/components/RegexControls.jsx | 78 +++++++++++++--------------
src/components/ResizablePanel.jsx | 2 +-
src/index.css | 74 +++++++++++++------------
8 files changed, 170 insertions(+), 172 deletions(-)
diff --git a/src/App.jsx b/src/App.jsx
index 09c39ce..cb440a0 100644
--- a/src/App.jsx
+++ b/src/App.jsx
@@ -195,14 +195,14 @@ function App() {
}, [handleGlobalDragEnter, handleGlobalDragOver, handleGlobalDragLeave, handleGlobalDrop]);
return (
-
+
{/* 全页面拖拽覆盖层 */}
{globalDragOver && (
-
@@ -227,13 +227,13 @@ function App() {
-
+
🎯 释放文件以上传
-
+
支持 所有文本格式 文件
-
+
拖拽到页面任意位置即可快速上传文件
@@ -243,7 +243,7 @@ function App() {
{!sidebarVisible && (