impress_asr_input_rust/web/src/App.tsx
impressionyang ceb2df18c4
Some checks are pending
Build Windows GUI / build-windows (push) Waiting to run
Build Windows GUI / release (push) Blocked by required conditions
初始提交:Windows 跨平台语音识别应用
功能:
- Tauri v2 GUI 应用
- 系统托盘支持
- 日志输出到文件
- 带时间戳的版本号
- 前端资源嵌入

修复:
- 前端路径使用相对路径
- 移除 devUrl 配置
- 窗口置顶设置
2026-05-21 17:58:18 +08:00

65 lines
1.9 KiB
TypeScript
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { useState } from 'react'
import './App.css'
import RecordPage from './pages/RecordPage'
import FileConvertPage from './pages/FileConvertPage'
import SettingsPage from './pages/SettingsPage'
type Page = 'record' | 'file' | 'settings'
function App() {
const [currentPage, setCurrentPage] = useState<Page>('record')
const renderPage = () => {
switch (currentPage) {
case 'record':
return <RecordPage />
case 'file':
return <FileConvertPage />
case 'settings':
return <SettingsPage />
default:
return <RecordPage />
}
}
return (
<div className="app">
<div className="sidebar">
<div className="logo">
<span className="logo-icon">🎙</span>
<span className="logo-text">impress ASR</span>
</div>
<nav className="nav">
<button
className={`nav-item ${currentPage === 'record' ? 'active' : ''}`}
onClick={() => setCurrentPage('record')}
>
<span className="nav-icon">🎤</span>
<span className="nav-label"></span>
</button>
<button
className={`nav-item ${currentPage === 'file' ? 'active' : ''}`}
onClick={() => setCurrentPage('file')}
>
<span className="nav-icon">📁</span>
<span className="nav-label"></span>
</button>
<button
className={`nav-item ${currentPage === 'settings' ? 'active' : ''}`}
onClick={() => setCurrentPage('settings')}
>
<span className="nav-icon"></span>
<span className="nav-label"></span>
</button>
</nav>
<div className="version">v0.1.0</div>
</div>
<main className="main-content">
{renderPage()}
</main>
</div>
)
}
export default App