Files
erp/apps/web/src/pages/Workflow.tsx
iven 9568dd7875 chore: apply cargo fmt across workspace and update docs
- Run cargo fmt on all Rust crates for consistent formatting
- Update CLAUDE.md with WASM plugin commands and dev.ps1 instructions
- Update wiki: add WASM plugin architecture, rewrite dev environment docs
- Minor frontend cleanup (unused imports)
2026-04-15 00:49:20 +08:00

71 lines
2.2 KiB
TypeScript

import { useState } from 'react';
import { Tabs } from 'antd';
import { PartitionOutlined, FileSearchOutlined, CheckSquareOutlined, MonitorOutlined } from '@ant-design/icons';
import ProcessDefinitions from './workflow/ProcessDefinitions';
import PendingTasks from './workflow/PendingTasks';
import CompletedTasks from './workflow/CompletedTasks';
import InstanceMonitor from './workflow/InstanceMonitor';
export default function Workflow() {
const [activeKey, setActiveKey] = useState('definitions');
return (
<div>
<div className="erp-page-header" style={{ borderBottom: 'none', marginBottom: 0, paddingBottom: 8 }}>
<div>
<h4></h4>
<div className="erp-page-subtitle"></div>
</div>
</div>
<Tabs
activeKey={activeKey}
onChange={setActiveKey}
style={{ marginTop: 8 }}
items={[
{
key: 'definitions',
label: (
<span style={{ display: 'flex', alignItems: 'center', gap: 6 }}>
<PartitionOutlined style={{ fontSize: 14 }} />
</span>
),
children: <ProcessDefinitions />,
},
{
key: 'pending',
label: (
<span style={{ display: 'flex', alignItems: 'center', gap: 6 }}>
<FileSearchOutlined style={{ fontSize: 14 }} />
</span>
),
children: <PendingTasks />,
},
{
key: 'completed',
label: (
<span style={{ display: 'flex', alignItems: 'center', gap: 6 }}>
<CheckSquareOutlined style={{ fontSize: 14 }} />
</span>
),
children: <CompletedTasks />,
},
{
key: 'instances',
label: (
<span style={{ display: 'flex', alignItems: 'center', gap: 6 }}>
<MonitorOutlined style={{ fontSize: 14 }} />
</span>
),
children: <InstanceMonitor />,
},
]}
/>
</div>
);
}