feat: add click-to-copy CopyableCode component across all detail pages

- New CopyableCode component with monospace styling and click-to-copy
- TaskDetailPage: copyable task code in header
- ProjectDetailPage: copyable project code in header
- MilestoneDetailPage: copyable milestone code in header
- MeetingDetailPage: copyable meeting code in header
- SupportDetailPage: copyable support code in header
- ProposeDetailPage: copyable propose code in header and info section

Helps users easily copy resource codes for CLI usage (hf task get <code>, etc)
This commit is contained in:
zhi
2026-03-22 00:22:28 +00:00
parent a65429250a
commit 4fc120f595
7 changed files with 58 additions and 7 deletions

View File

@@ -6,6 +6,7 @@ import dayjs from 'dayjs'
import { useAuth } from '@/hooks/useAuth'
import ProjectFormModal from '@/components/ProjectFormModal'
import MilestoneFormModal from '@/components/MilestoneFormModal'
import CopyableCode from '@/components/CopyableCode'
export default function ProjectDetailPage() {
const { id } = useParams()
@@ -74,7 +75,7 @@ export default function ProjectDetailPage() {
<button className="btn-back" onClick={() => navigate('/projects')}> Back to projects</button>
<div className="task-header">
<h2>📁 {project.name} {project.project_code && <span className="badge">{project.project_code}</span>}</h2>
<h2>📁 {project.name} {project.project_code && <CopyableCode code={project.project_code} />}</h2>
<p style={{ color: 'var(--text-dim)', marginTop: 4 }}>{project.description || 'No description'}</p>
{project.repo && <p style={{ color: 'var(--text-dim)', marginTop: 4 }}>📦 {project.repo}</p>}
<div className="text-dim">Owner: {project.owner_name || 'Unknown'}</div>