refactor: reorganize directory structure into src/

Move all source code directories into src/ for cleaner project structure:
- pages/, components/, utils/, config/, providers/, types/, lib/, assets/, entrypoints/ → src/
- Use WXT srcDir config to resolve @/ alias to src/
- Update tsconfig, vitest, eslint, tailwind configs
- Remove scattered README.md files from subdirectories
- Update documentation (AGENTS.md, CODING_STANDARDS.md, README.md)
- Fix pre-existing lint error in RouterProvider.tsx

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
雨霖铃
2026-05-28 20:20:45 +08:00
parent 9903483f42
commit b79fe7dd49
166 changed files with 86 additions and 631 deletions
@@ -0,0 +1,35 @@
import type { Dispatch, SetStateAction } from 'react'; // 💡 1. 显式解构导入类型,彻底掐灭 TS2304 报错
import { createContext, useContext } from 'react';
import type { QrCodeGeneratorState, QrCodeMode, QrCodeParserState } from '../types';
export interface QrCodeContextValue {
// 核心主视图路由模式切换卡
mode: QrCodeMode;
setMode: (mode: QrCodeMode) => void;
// 1. 流式生成器终端状态机驱动
generatorState: QrCodeGeneratorState;
setTextToEncode: (text: string) => void;
// 💡 架构纯净化:物理剔除暴露给外部的命令式 generateQrCode 算子。
// 外部面板只需 setTextToEncode 驱动源文本更新,生成动作由内部流式管线全自动自发自愈完成!
downloadQrCode: () => void;
copyQrCode: () => Promise<void>;
// 2. 活态反向解析器终端状态机驱动
parserState: QrCodeParserState;
setParserState: Dispatch<SetStateAction<QrCodeParserState>>; // 💡 规整为纯净的直接类型使用
parseQrCode: (file: File) => Promise<void>;
handleFileChange: (file: File) => void;
handleClearFile: () => void;
}
export const QrCodeContext = createContext<QrCodeContextValue | null>(null);
export function useQrCodeContext() {
const context = useContext(QrCodeContext);
if (!context) {
// 边界鲁棒性防护大闸
throw new Error('useQrCodeContext must be used within a valid QrCodeProvider container');
}
return context;
}