ui: remove footer hints and floating feedback entry points

This commit is contained in:
shishengliang
2026-09-23 18:35:31 +08:00
parent d3fcec7dce
commit fd514177c6
10 changed files with 11 additions and 33 deletions
+4 -5
View File
@@ -3,7 +3,6 @@ import { motion } from 'motion/react';
import { Building2, ChevronRight, ShieldCheck } from 'lucide-react'; import { Building2, ChevronRight, ShieldCheck } from 'lucide-react';
import { useAuth } from '../auth/useAuth'; import { useAuth } from '../auth/useAuth';
import { DemoModeProvider } from './Blur'; import { DemoModeProvider } from './Blur';
import FeedbackFab from './FeedbackFab';
import { cn } from '../lib/cn'; import { cn } from '../lib/cn';
import { LoadingState } from './ui/surface'; import { LoadingState } from './ui/surface';
@@ -91,7 +90,7 @@ export function Shell({ modules }: { modules: ModuleConfig[] }) {
return ( return (
<DemoModeProvider enabled={false}> <DemoModeProvider enabled={false}>
<div className="enterprise-grid-bg flex min-h-screen"> <div className="app-shell enterprise-grid-bg flex min-h-screen">
{/* 全局水印 */} {/* 全局水印 */}
<div className="fixed inset-0 pointer-events-none z-[9999] overflow-hidden" style={{ opacity: 0.06 }}> <div className="fixed inset-0 pointer-events-none z-[9999] overflow-hidden" style={{ opacity: 0.06 }}>
<div className="absolute inset-0" style={{ <div className="absolute inset-0" style={{
@@ -156,7 +155,7 @@ export function Shell({ modules }: { modules: ModuleConfig[] }) {
</nav> </nav>
{/* 内容区 */} {/* 内容区 */}
<main className="min-w-0 flex-1 pb-16 md:ml-20 md:pb-0" style={{ overflowX: 'clip' }}> <main className="app-shell-content min-w-0 flex-1 pb-16 md:ml-20 md:pb-0" style={{ overflowX: 'clip' }}>
<div className="pointer-events-none fixed left-20 right-0 top-0 z-20 hidden h-12 items-center border-b border-white/60 bg-white/55 px-6 text-xs font-bold text-slate-400 backdrop-blur-xl md:flex"> <div className="pointer-events-none fixed left-20 right-0 top-0 z-20 hidden h-12 items-center border-b border-white/60 bg-white/55 px-6 text-xs font-bold text-slate-400 backdrop-blur-xl md:flex">
<span className="text-slate-600">羚牛氢能 BI</span> <span className="text-slate-600">羚牛氢能 BI</span>
<span className="mx-2 text-slate-300">/</span> <span className="mx-2 text-slate-300">/</span>
@@ -165,11 +164,11 @@ export function Shell({ modules }: { modules: ModuleConfig[] }) {
<Suspense fallback={<div className="p-3 md:p-6"><LoadingState label="正在加载业务模块" /></div>}> <Suspense fallback={<div className="p-3 md:p-6"><LoadingState label="正在加载业务模块" /></div>}>
{ActiveComponent && <ActiveComponent />} {ActiveComponent && <ActiveComponent />}
</Suspense> </Suspense>
{activeModule !== 'assets' && <FeedbackFab module={activeModule} />}
</main> </main>
{/* 移动端底部导航 (md 以下) */} {/* 移动端底部导航 (md 以下) */}
<nav className="fixed inset-x-0 bottom-0 z-50 border-t border-white/70 bg-white/92 px-3 pb-[max(0.5rem,env(safe-area-inset-bottom))] pt-2 shadow-[0_-18px_40px_rgba(15,23,42,0.08)] backdrop-blur-xl md:hidden"> <nav className="app-mobile-nav fixed inset-x-0 bottom-0 z-50 border-t border-white/70 bg-white/92 px-3 pb-[max(0.5rem,env(safe-area-inset-bottom))] pt-2 shadow-[0_-18px_40px_rgba(15,23,42,0.08)] backdrop-blur-xl md:hidden">
<div className="grid gap-1" style={{ gridTemplateColumns: `repeat(${modules.length}, minmax(0, 1fr))` }}> <div className="grid gap-1" style={{ gridTemplateColumns: `repeat(${modules.length}, minmax(0, 1fr))` }}>
{modules.map((m) => { {modules.map((m) => {
const Icon = m.icon; const Icon = m.icon;
+1 -2
View File
@@ -43,7 +43,6 @@ import {
import { SearchSelect } from '../../components/SearchSelect'; import { SearchSelect } from '../../components/SearchSelect';
import { MultiSearchSelect } from '../../components/MultiSearchSelect'; import { MultiSearchSelect } from '../../components/MultiSearchSelect';
import Blur from '../../components/Blur'; import Blur from '../../components/Blur';
import RotatingFooterHint from '../../components/RotatingFooterHint';
import { ErrorState, LoadingState, PageFrame, SkeletonBlock, SurfaceCard } from '../../components/ui/surface'; import { ErrorState, LoadingState, PageFrame, SkeletonBlock, SurfaceCard } from '../../components/ui/surface';
import { AssetsHeader } from './components/AssetsHeader'; import { AssetsHeader } from './components/AssetsHeader';
import { FlowDetailModal } from './components/FlowDetailModal'; import { FlowDetailModal } from './components/FlowDetailModal';
@@ -1746,7 +1745,7 @@ export default function AssetsModule() {
/> />
</div> </div>
<RotatingFooterHint className="pb-4" />
<button <button
ref={assistantTrigger} ref={assistantTrigger}
type="button" type="button"
+1 -4
View File
@@ -2,8 +2,6 @@ import { useCallback, useEffect, useRef, useState } from 'react';
import { ArrowLeft, Upload, Zap } from 'lucide-react'; import { ArrowLeft, Upload, Zap } from 'lucide-react';
import { fetchJson } from '../../auth/api-client'; import { fetchJson } from '../../auth/api-client';
import { useAuth } from '../../auth/useAuth'; import { useAuth } from '../../auth/useAuth';
import FeedbackFab from '../../components/FeedbackFab';
import RotatingFooterHint from '../../components/RotatingFooterHint';
import { PageFrame } from '../../components/ui/surface'; import { PageFrame } from '../../components/ui/surface';
import { BatchTable } from './import-page/BatchTable'; import { BatchTable } from './import-page/BatchTable';
import { RecordFilters } from './import-page/RecordFilters'; import { RecordFilters } from './import-page/RecordFilters';
@@ -168,8 +166,7 @@ export default function EleImportPage() {
<RecordTable items={items} /> <RecordTable items={items} />
</section> </section>
<RotatingFooterHint className="pb-4" />
<FeedbackFab module="ele" />
</PageFrame> </PageFrame>
); );
} }
-10
View File
@@ -1,14 +1,5 @@
import { motion } from 'motion/react'; import { motion } from 'motion/react';
import { Construction, Hammer } from 'lucide-react'; import { Construction, Hammer } from 'lucide-react';
import RotatingFooterHint from '../../components/RotatingFooterHint';
const ETC_HINTS = [
'ETC 通行费数据正在与发卡方系统打通…',
'工人 GG 正在搭脚手架,敬请期待 ~',
'马上能看到每月通行费明细啦',
'想看哪个维度的 ETC?反馈一下嘛',
'上线时机:等数据接通的那一天',
];
export default function ETCView() { export default function ETCView() {
return ( return (
@@ -73,7 +64,6 @@ export default function ETCView() {
</div> </div>
</motion.div> </motion.div>
<RotatingFooterHint hints={ETC_HINTS} />
</div> </div>
); );
} }
+1 -2
View File
@@ -4,7 +4,6 @@ import { motion, AnimatePresence } from 'motion/react';
import TrendBadge from './TrendBadge'; import TrendBadge from './TrendBadge';
import { fetchElectricMonthly } from './api'; import { fetchElectricMonthly } from './api';
import type { CustomerType, DateQuickPick, ElectricMonthGroup } from './types'; import type { CustomerType, DateQuickPick, ElectricMonthGroup } from './types';
import RotatingFooterHint from '../../components/RotatingFooterHint';
import { EmptyState, ErrorState, LoadingState, MetricTile } from '../../components/ui/surface'; import { EmptyState, ErrorState, LoadingState, MetricTile } from '../../components/ui/surface';
import DailyRangeControls from './daily-range/DailyRangeControls'; import DailyRangeControls from './daily-range/DailyRangeControls';
import { import {
@@ -186,7 +185,7 @@ export default function ElectricDaily() {
})} })}
</div> </div>
)} )}
<RotatingFooterHint />
</div> </div>
); );
} }
+1 -2
View File
@@ -2,7 +2,6 @@ import { useEffect, useState } from 'react';
import { BatteryCharging, Gauge, Wallet, CalendarClock } from 'lucide-react'; import { BatteryCharging, Gauge, Wallet, CalendarClock } from 'lucide-react';
import { BarChart, Bar, XAxis, YAxis, ResponsiveContainer, Cell, Tooltip, ReferenceLine } from 'recharts'; import { BarChart, Bar, XAxis, YAxis, ResponsiveContainer, Cell, Tooltip, ReferenceLine } from 'recharts';
import { fetchElectricOverview, type ElectricOverviewResponse } from './api'; import { fetchElectricOverview, type ElectricOverviewResponse } from './api';
import RotatingFooterHint from '../../components/RotatingFooterHint';
import { ErrorState, LoadingState, MetricTile, SurfaceCard } from '../../components/ui/surface'; import { ErrorState, LoadingState, MetricTile, SurfaceCard } from '../../components/ui/surface';
function fmtYuan(yuan: number) { function fmtYuan(yuan: number) {
@@ -122,7 +121,7 @@ export default function ElectricOverview() {
</BarChart> </BarChart>
</ResponsiveContainer> </ResponsiveContainer>
</SurfaceCard> </SurfaceCard>
<RotatingFooterHint />
</div> </div>
); );
} }
+1 -2
View File
@@ -13,7 +13,6 @@ import {
type RangeMode, type RangeMode,
} from './hydrogen-daily/model'; } from './hydrogen-daily/model';
import DailyRangeControls from './daily-range/DailyRangeControls'; import DailyRangeControls from './daily-range/DailyRangeControls';
import RotatingFooterHint from '../../components/RotatingFooterHint';
import { EmptyState, ErrorState, LoadingState, MetricTile, SurfaceCard } from '../../components/ui/surface'; import { EmptyState, ErrorState, LoadingState, MetricTile, SurfaceCard } from '../../components/ui/surface';
export default function HydrogenDaily() { export default function HydrogenDaily() {
@@ -272,7 +271,7 @@ export default function HydrogenDaily() {
})} })}
</div> </div>
)} )}
<RotatingFooterHint />
</div> </div>
); );
} }
-2
View File
@@ -1,5 +1,4 @@
import { useCallback, useEffect, useRef, useState } from 'react'; import { useCallback, useEffect, useRef, useState } from 'react';
import RotatingFooterHint from '../../components/RotatingFooterHint';
import { fetchHydrogenOverview, type HydrogenOverviewResponse } from './api'; import { fetchHydrogenOverview, type HydrogenOverviewResponse } from './api';
import { DistributionCharts } from './hydrogen-overview/components/DistributionCharts'; import { DistributionCharts } from './hydrogen-overview/components/DistributionCharts';
import { HydrogenOverviewSkeleton } from './hydrogen-overview/components/HydrogenOverviewSkeleton'; import { HydrogenOverviewSkeleton } from './hydrogen-overview/components/HydrogenOverviewSkeleton';
@@ -99,7 +98,6 @@ export default function HydrogenOverview() {
<StationSummaryTable stations={stations} /> <StationSummaryTable stations={stations} />
<CustomerSummaryTable customers={customers} /> <CustomerSummaryTable customers={customers} />
<RotatingFooterHint />
<RefreshOverlay refreshing={refreshing} hasData={Boolean(data)} /> <RefreshOverlay refreshing={refreshing} hasData={Boolean(data)} />
</div> </div>
); );
+1 -2
View File
@@ -4,7 +4,6 @@ import MonitoringView from './MonitoringView';
import StatisticsView from './StatisticsView'; import StatisticsView from './StatisticsView';
import DailyReportView from './DailyReportView'; import DailyReportView from './DailyReportView';
import { useHashSubTab } from '../energy/useHashSubTab'; import { useHashSubTab } from '../energy/useHashSubTab';
import RotatingFooterHint from '../../components/RotatingFooterHint';
import { FadeIn, PageFrame, SegmentedNav } from '../../components/ui/surface'; import { FadeIn, PageFrame, SegmentedNav } from '../../components/ui/surface';
type MileageSubTab = 'monitoring' | 'statistics' | 'report'; type MileageSubTab = 'monitoring' | 'statistics' | 'report';
@@ -45,7 +44,7 @@ export default function MileageModule() {
)} )}
</FadeIn> </FadeIn>
</AnimatePresence> </AnimatePresence>
<RotatingFooterHint />
</PageFrame> </PageFrame>
); );
} }
+1 -2
View File
@@ -7,7 +7,6 @@ import SuggestionList from './SuggestionList';
import SuggestionDetail from './SuggestionDetail'; import SuggestionDetail from './SuggestionDetail';
import NotificationHistory from './NotificationHistory'; import NotificationHistory from './NotificationHistory';
import { exportSuggestionsCsv } from './csv-export'; import { exportSuggestionsCsv } from './csv-export';
import RotatingFooterHint from '../../components/RotatingFooterHint';
import { PageFrame } from '../../components/ui/surface'; import { PageFrame } from '../../components/ui/surface';
import ActiveFilterTags from './scheduling-module/ActiveFilterTags'; import ActiveFilterTags from './scheduling-module/ActiveFilterTags';
import BatchActionBar from './scheduling-module/BatchActionBar'; import BatchActionBar from './scheduling-module/BatchActionBar';
@@ -309,7 +308,7 @@ export default function SchedulingModule() {
onSubmit={handleBatchSubmit} onSubmit={handleBatchSubmit}
/> />
)} )}
<RotatingFooterHint className="pb-4" />
</PageFrame> </PageFrame>
); );
} }