refactor: 移除所有页面的 PageHeader 组件

删除 PageHeader 组件及其测试文件,清理相关不再使用的导入和变量。
This commit is contained in:
雨霖铃
2026-05-23 13:15:25 +08:00
parent cf05df7022
commit df3eee8749
11 changed files with 4 additions and 311 deletions
-17
View File
@@ -1,7 +1,4 @@
import { Image as ImageIcon, Type, Upload } from 'lucide-react';
import { useLazyTranslation } from '@/utils/useLazyTranslation';
import PageHeader from '@/components/PageHeader';
import { useStorageState } from '@/utils/useStorageState';
import type { Base64ConverterPageMode } from '@/types/storage';
import TextMode from './TextMode';
@@ -22,22 +19,8 @@ export default function Index() {
isValidPageMode,
);
const modeIcon: Record<PageMode, React.ReactNode> = {
text: <Type className="h-4 w-4" />,
file: <Upload className="h-4 w-4" />,
image: <ImageIcon className="h-4 w-4" />,
};
return (
<div className="p-4 w-full flex flex-col space-y-4 min-h-[520px] select-none animate-in fade-in duration-300">
<PageHeader
title={t('base64Converter:pageTitle')}
subtitle={t('base64Converter:pageSubtitle')}
icon={modeIcon[pageMode]}
iconColor="text-indigo-800"
className="pb-1"
/>
<SwitchButtonGroup
value={pageMode}
options={[
+1 -8
View File
@@ -1,7 +1,6 @@
import { useCallback, useMemo, useState } from 'react';
import { Code, Download, Trash2 } from 'lucide-react';
import { Download, Trash2 } from 'lucide-react';
import { useLazyTranslation } from '@/utils/useLazyTranslation';
import PageHeader from '@/components/PageHeader';
import CopyButton from '@/components/CopyButton';
import SwitchButtonGroup from '@/components/SwitchButtonGroup';
import { Button } from '@/components/ui/button'; // 💡 1. 全面回归规范:引入原生的 shadcn 原子 Button
@@ -51,12 +50,6 @@ export default function HtmlToMarkdownPage() {
- 统一收拢为我们先前在 Dashboard 页、JSON 工具箱制定的 p-4 space-y-4 标准极客桌面规格。
*/
<div className="p-4 w-full flex flex-col space-y-4 select-none animate-in fade-in duration-300">
<PageHeader
title={t('pageTitle')}
subtitle={t('pageSubtitle')}
icon={<Code className="h-4 w-4" />}
/>
<div className="flex flex-col gap-4">
{/* 工具栏集成区 */}
<div className="flex flex-col sm:flex-row gap-3 justify-between items-stretch sm:items-center bg-secondary/40 rounded-xl border border-border/60 px-1.5 py-1.5 sm:h-12">
+1 -27
View File
@@ -1,7 +1,5 @@
import React, { useCallback, useEffect, useMemo, useState } from 'react';
import { ArrowRightLeft, Braces, GitCompareArrows, Minimize2 } from 'lucide-react';
import { useCallback, useEffect, useMemo, useState } from 'react';
import { useLazyTranslation } from '@/utils/useLazyTranslation';
import PageHeader from '@/components/PageHeader';
import JsonDiffInput from './JsonDiffInput';
import DiffResult from './DiffResult';
import DiffNavigator from './DiffNavigator';
@@ -99,22 +97,6 @@ export default function Index() {
const activePath = diffResult && total > 0 ? diffResult.diffPaths[currentDiffIndex] : undefined;
const modeTitles: Record<PageMode, { title: string; subtitle: string }> = {
diff: { title: 'jsonDiff:pageTitle', subtitle: 'jsonDiff:pageSubtitle' },
format: { title: 'jsonFormat:formatTitle', subtitle: 'jsonFormat:formatSubtitle' },
yaml: { title: 'jsonFormat:yamlTitle', subtitle: 'jsonFormat:yamlSubtitle' },
toml: { title: 'jsonFormat:tomlTitle', subtitle: 'jsonFormat:tomlSubtitle' },
minify: { title: 'jsonFormat:minifyTitle', subtitle: 'jsonFormat:minifySubtitle' },
};
const modeIcon: Record<PageMode, React.ReactNode> = {
diff: <GitCompareArrows className="h-4 w-4" />,
format: <Braces className="h-4 w-4" />,
yaml: <ArrowRightLeft className="h-4 w-4" />,
toml: <ArrowRightLeft className="h-4 w-4" />,
minify: <Minimize2 className="h-4 w-4" />,
};
const yamlConvert: ConvertFunction = useCallback((text: string) => {
const r = jsonToYaml(text);
return { output: r.output, originalBytes: r.originalBytes, outputBytes: r.outputBytes };
@@ -132,14 +114,6 @@ export default function Index() {
return (
<div className="p-4 w-full flex flex-col space-y-4 min-h-[500px] select-none animate-in fade-in duration-300">
<PageHeader
title={t(modeTitles[pageMode].title)}
subtitle={t(modeTitles[pageMode].subtitle)}
icon={modeIcon[pageMode]}
iconColor="#3b82f6"
className="pb-1"
/>
<SwitchButtonGroup
value={pageMode}
onChange={(v: PageMode) => setPageMode(v)}
-8
View File
@@ -1,6 +1,4 @@
import { useCallback, useEffect, useMemo, useState } from 'react';
import { Key } from 'lucide-react';
import PageHeader from '@/components/PageHeader';
import { parseJwt, stringifyJson } from '@/utils/jwt';
import CopyButton from '@/components/CopyButton';
import TextInputArea from '@/components/TextInputArea';
@@ -73,12 +71,6 @@ export default function Index() {
return (
<div className="p-4 w-full flex flex-col space-y-4 animate-in fade-in duration-300 select-none">
<PageHeader
title={t('jwt:pageTitle')}
subtitle={t('jwt:pageSubtitle')}
icon={<Key className="h-4 w-4" />} // 💡 规范锁死 Icon 宽高,抹杀闪烁
/>
<div className="flex flex-col gap-4">
{/* 输入终端 */}
<TextInputArea
+1 -9
View File
@@ -1,7 +1,6 @@
import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
import { Code, Download, Printer, Trash2 } from 'lucide-react';
import { Download, Printer, Trash2 } from 'lucide-react';
import { useLazyTranslation } from '@/utils/useLazyTranslation';
import PageHeader from '@/components/PageHeader';
import CopyButton from '@/components/CopyButton';
import SwitchButtonGroup from '@/components/SwitchButtonGroup';
import { Button } from '@/components/ui/button';
@@ -177,13 +176,6 @@ export default function MarkdownToHtmlPage() {
return (
<div className="p-4 w-full flex flex-col space-y-4 select-none animate-in fade-in duration-300">
<PageHeader
title={t('pageTitle')}
subtitle={t('pageSubtitle')}
icon={<Code className="h-4 w-4" />}
className="pb-1"
/>
<div className="flex flex-col space-y-4">
{/* 工具集成控制中枢 */}
<div className="flex flex-col sm:flex-row gap-3 justify-between items-stretch sm:items-center bg-secondary/40 rounded-xl border border-border/60 px-1.5 py-1.5 sm:h-12">
-11
View File
@@ -1,5 +1,3 @@
import { QrCode as QrCodeIcon } from 'lucide-react'; // 💡 别名规整,防止与页面组件发生重名误判
import PageHeader from '@/components/PageHeader';
import SwitchButtonGroup from '@/components/SwitchButtonGroup';
import { useLazyTranslation } from '@/utils/useLazyTranslation';
@@ -26,15 +24,6 @@ export default function Index() {
- 替换为标准的 p-4 呼吸内边距配合 flex flex-col space-y-4,接管系统级重排!
*/}
<div className="p-4 w-full flex flex-col space-y-4 min-h-[500px] select-none animate-in fade-in duration-300">
{/* 标题控制栏:追加微调 py-0.5,防范文字边缘截断 */}
<PageHeader
title={t('qrCode:pageTitle')}
subtitle={t('qrCode:pageSubtitle')}
icon={<QrCodeIcon className="h-4 w-4" />} // 💡 规范对齐:强制锁死 Icon 宽高,抹杀闪烁
iconColor="text-green-700"
className="pb-1"
/>
{/* 流式中央控制切流卡:注入 sm 断点防御,防范单栏状态下发生变形 */}
<div className="w-full sm:w-fit pt-0.5">
<SwitchButtonGroup
-10
View File
@@ -1,6 +1,4 @@
import { useCallback, useMemo, useState } from 'react';
import { FileText } from 'lucide-react';
import PageHeader from '@/components/PageHeader';
import TextInputArea from '@/components/TextInputArea';
import { formatByteSize, getTextStats } from '@/utils/textStatistics';
import { useLazyTranslation } from '@/utils/useLazyTranslation';
@@ -29,14 +27,6 @@ export default function Index() {
return (
<div className="p-4 w-full space-y-4 animate-in fade-in duration-300">
{/* 头部区域 */}
<PageHeader
title={t('textStatistics:pageTitle')}
subtitle={t('textStatistics:pageSubtitle')}
icon={<FileText />}
iconColor="text-purple-500"
/>
{/* 文本输入区域 */}
<TextInputArea
value={text}
-9
View File
@@ -1,5 +1,3 @@
import { Clock } from 'lucide-react';
import PageHeader from '@/components/PageHeader';
import SwitchButtonGroup from '@/components/SwitchButtonGroup';
import { ZONES } from './constants';
import LiveClock from './LiveClock';
@@ -39,13 +37,6 @@ export default function Index() {
return (
<div className="min-h-screen bg-background text-foreground antialiased selection:bg-primary/20">
<div className="max-w-7xl mx-auto p-4 sm:p-6 space-y-4">
{/* Header */}
<PageHeader
title={t('timestamp:pageTitle')}
subtitle={t('timestamp:pageSubtitle')}
icon={<Clock />}
/>
{/* 动态参考信息时钟条 */}
<LiveClock unit={unit} onUseNow={handleUseNow} />