用 Tailwind CSS 重写 TextStatistics 页面

This commit is contained in:
雨霖铃
2026-05-21 23:35:25 +08:00
parent 7f9bf2334c
commit 4753a7b54d
+23 -55
View File
@@ -1,8 +1,7 @@
import { useCallback, useMemo, useState } from 'react'; import { useCallback, useMemo, useState } from 'react';
import { alpha, Box, Container, Grid, Paper, Typography } from '@mui/material'; import { FileText } from 'lucide-react';
import PageHeader from '@/components/PageHeader'; import PageHeader from '@/components/PageHeader';
import TextInputArea from '@/components/TextInputArea'; import TextInputArea from '@/components/TextInputArea';
import DescriptionIcon from '@mui/icons-material/Description';
import { formatByteSize, getTextStats } from '@/utils/textStatistics'; import { formatByteSize, getTextStats } from '@/utils/textStatistics';
import { textStatisticsPageStyles } from '@/config/pageTheme'; import { textStatisticsPageStyles } from '@/config/pageTheme';
import { useLazyTranslation } from '@/utils/useLazyTranslation'; import { useLazyTranslation } from '@/utils/useLazyTranslation';
@@ -35,13 +34,13 @@ export default function Index() {
]; ];
return ( return (
<Box> <div>
<Container sx={{ p: 2 }}> <div className="p-2">
{/* 头部区域 */} {/* 头部区域 */}
<PageHeader <PageHeader
title={t('textStatistics:pageTitle')} title={t('textStatistics:pageTitle')}
subtitle={t('textStatistics:pageSubtitle')} subtitle={t('textStatistics:pageSubtitle')}
icon={<DescriptionIcon />} icon={<FileText />}
iconColor={textStatisticsPageStyles.primaryColor} iconColor={textStatisticsPageStyles.primaryColor}
/> />
@@ -57,58 +56,27 @@ export default function Index() {
/> />
{/* 统计结果展示区域 */} {/* 统计结果展示区域 */}
<Grid container spacing={2}> <div className="grid grid-cols-1 md:grid-cols-4 gap-2">
{statItems.map((item) => ( {statItems.map((item) => (
<Grid size={{ xs: 12, md: 3 }} key={item.label}> <div
<Paper key={item.label}
elevation={0} className="p-2 text-center rounded-2xl border transition-all duration-300 ease-[cubic-bezier(0.4,0,0.2,1)] min-h-[64px] md:min-h-[90px] flex flex-row md:flex-col items-center justify-between md:justify-center px-3 md:px-2 hover:-translate-y-0.5 hover:shadow-[0_4px_12px_rgba(156,39,176,0.15)] hover:border-purple-600"
sx={{ style={{
p: 2, backgroundColor: `${textStatisticsPageStyles.primaryColor}0a`,
textAlign: 'center', borderColor: `${textStatisticsPageStyles.primaryColor}1a`,
borderRadius: 4, }}
bgcolor: textStatisticsPageStyles.cardBg, >
border: '1px solid', <span className="text-gray-500 whitespace-nowrap mb-0 md:mb-1">{item.label}</span>
borderColor: textStatisticsPageStyles.cardBorder, <span
transition: 'all 0.3s cubic-bezier(0.4, 0, 0.2, 1)', // 平滑的切换动画 className="break-all font-semibold"
minHeight: { xs: '64px', md: '90px' }, style={{ color: textStatisticsPageStyles.primaryColor }}
display: 'flex',
flexDirection: { xs: 'row', md: 'column' }, // 小屏幕横向排列提高空间利用率
alignItems: 'center',
justifyContent: { xs: 'space-between', md: 'center' },
px: { xs: 3, md: 2 },
'&:hover': {
transform: 'translateY(-2px)',
boxShadow: () =>
`0 4px 12px ${alpha(textStatisticsPageStyles.primaryColor, 0.15)}`,
borderColor: textStatisticsPageStyles.primaryColor,
},
lineHeight: 1.6,
fontSize: '0.9rem',
fontWeight: 600,
}}
> >
<Typography {item.value}
color="text.secondary" </span>
sx={{ </div>
mb: { xs: 0, md: 0.5 },
whiteSpace: 'nowrap',
}}
>
{item.label}
</Typography>
<Typography
sx={{
color: textStatisticsPageStyles.primaryColor, // 高亮显示核心数值
wordBreak: 'break-all',
}}
>
{item.value}
</Typography>
</Paper>
</Grid>
))} ))}
</Grid> </div>
</Container> </div>
</Box> </div>
); );
} }