fix(web): show project icons beside project names
This commit is contained in:
@@ -465,6 +465,11 @@
|
|||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.project-title-icon .arco-icon,
|
||||||
|
.project-overview-icon .arco-icon {
|
||||||
|
font-size: 1.2em;
|
||||||
|
}
|
||||||
|
|
||||||
.channel-list {
|
.channel-list {
|
||||||
display: grid;
|
display: grid;
|
||||||
gap: 4px;
|
gap: 4px;
|
||||||
|
|||||||
11
apps/web_v1/src/pages/projects/project-icon.tsx
Normal file
11
apps/web_v1/src/pages/projects/project-icon.tsx
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
import { IconFolder } from '@arco-design/web-react/icon'
|
||||||
|
|
||||||
|
export function ProjectIcon({ icon, className }: { icon: string; className: string }) {
|
||||||
|
const value = icon.trim()
|
||||||
|
|
||||||
|
return (
|
||||||
|
<span className={className} aria-hidden="true">
|
||||||
|
{value || <IconFolder />}
|
||||||
|
</span>
|
||||||
|
)
|
||||||
|
}
|
||||||
@@ -2,6 +2,7 @@ import { useMemo, useState } from 'react'
|
|||||||
import { Button, Card, Grid, Space, Tag, Typography } from '@arco-design/web-react'
|
import { Button, Card, Grid, Space, Tag, Typography } from '@arco-design/web-react'
|
||||||
import { IconCheckCircleFill, IconClockCircle, IconFile, IconLink } from '@arco-design/web-react/icon'
|
import { IconCheckCircleFill, IconClockCircle, IconFile, IconLink } from '@arco-design/web-react/icon'
|
||||||
import { ProjectFileGrid } from './project-file-grid'
|
import { ProjectFileGrid } from './project-file-grid'
|
||||||
|
import { ProjectIcon } from './project-icon'
|
||||||
import { ProjectTaskEditModal, type ProjectTaskUpdate } from './project-task-edit-modal'
|
import { ProjectTaskEditModal, type ProjectTaskUpdate } from './project-task-edit-modal'
|
||||||
import type { ProjectWorkspace, TaskItem } from './project-types'
|
import type { ProjectWorkspace, TaskItem } from './project-types'
|
||||||
|
|
||||||
@@ -33,7 +34,7 @@ export function ProjectOverview({
|
|||||||
<div className="overview-page project-overview-page">
|
<div className="overview-page project-overview-page">
|
||||||
<section className="project-overview-hero" style={{ background: projectHeroBackground(project.background, project.color) }}>
|
<section className="project-overview-hero" style={{ background: projectHeroBackground(project.background, project.color) }}>
|
||||||
<div className="project-overview-identity">
|
<div className="project-overview-identity">
|
||||||
<span className="project-overview-icon">{project.short}</span>
|
<ProjectIcon className="project-overview-icon" icon={project.icon} />
|
||||||
<div>
|
<div>
|
||||||
<Title heading={3}>{project.name}</Title>
|
<Title heading={3}>{project.name}</Title>
|
||||||
<Paragraph ellipsis={{ rows: 2 }}>{project.description || '暂无简介'}</Paragraph>
|
<Paragraph ellipsis={{ rows: 2 }}>{project.description || '暂无简介'}</Paragraph>
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
import { useEffect, useState } from 'react'
|
import { useEffect, useState } from 'react'
|
||||||
import { Alert, Badge, Button, Divider, Input, Layout, Modal, Space, Typography } from '@arco-design/web-react'
|
import { Alert, Badge, Button, Divider, Input, Layout, Modal, Space, Typography } from '@arco-design/web-react'
|
||||||
import { IconApps, IconDashboard, IconMore, IconPlus, IconSettings } from '@arco-design/web-react/icon'
|
import { IconApps, IconDashboard, IconMore, IconPlus, IconSettings } from '@arco-design/web-react/icon'
|
||||||
|
import { ProjectIcon } from './project-icon'
|
||||||
import type { ChannelKey, ProjectChannel, ProjectWorkspace, WorkbenchView } from './project-types'
|
import type { ChannelKey, ProjectChannel, ProjectWorkspace, WorkbenchView } from './project-types'
|
||||||
|
|
||||||
const { Sider } = Layout
|
const { Sider } = Layout
|
||||||
@@ -56,12 +57,11 @@ export function ProjectSidebar({
|
|||||||
})
|
})
|
||||||
}, [activeWorkspace.project, settingsOpen])
|
}, [activeWorkspace.project, settingsOpen])
|
||||||
|
|
||||||
const projectIcon = activeWorkspace.project.short || activeWorkspace.project.identifier || activeWorkspace.project.name.slice(0, 2)
|
|
||||||
return (
|
return (
|
||||||
<Sider className="channel-sidebar" width={248}>
|
<Sider className="channel-sidebar" width={248}>
|
||||||
<div className="project-title">
|
<div className="project-title">
|
||||||
<Space>
|
<Space>
|
||||||
{workspaceMode ? <IconApps /> : <span className="project-title-icon">{projectIcon}</span>}
|
{workspaceMode ? <IconApps /> : <ProjectIcon className="project-title-icon" icon={activeWorkspace.project.icon} />}
|
||||||
<Title heading={5}>{workspaceMode ? '工作台' : activeWorkspace.project.name}</Title>
|
<Title heading={5}>{workspaceMode ? '工作台' : activeWorkspace.project.name}</Title>
|
||||||
</Space>
|
</Space>
|
||||||
<Button aria-label="编辑项目设置" icon={<IconSettings />} size="mini" onClick={() => setSettingsOpen(true)} />
|
<Button aria-label="编辑项目设置" icon={<IconSettings />} size="mini" onClick={() => setSettingsOpen(true)} />
|
||||||
|
|||||||
Reference in New Issue
Block a user