feat: add app icon

pull/103/head
crazywoola 3 years ago
parent 7d607a93db
commit 817864ad5c

@ -49,7 +49,7 @@ const AppDetailLayout: FC<IAppDetailLayoutProps> = (props) => {
return null return null
return ( return (
<div className={cn(s.app, 'flex', 'overflow-hidden')}> <div className={cn(s.app, 'flex', 'overflow-hidden')}>
<AppSideBar title={response.name} desc={appModeName} navigation={navigation} /> <AppSideBar title={response.name} icon={response.icon} icon_background={response.icon_background} desc={appModeName} navigation={navigation} />
<div className="bg-white grow">{children}</div> <div className="bg-white grow">{children}</div>
</div> </div>
) )

@ -155,6 +155,8 @@ const DatasetDetailLayout: FC<IAppDetailLayoutProps> = (props) => {
<div className='flex' style={{ height: 'calc(100vh - 56px)' }}> <div className='flex' style={{ height: 'calc(100vh - 56px)' }}>
{!hideSideBar && <AppSideBar {!hideSideBar && <AppSideBar
title={datasetRes?.name || '--'} title={datasetRes?.name || '--'}
icon={datasetRes?.icon || 'https://static.dify.ai/images/dataset-default-icon.png'}
icon_background={datasetRes?.icon_background || '#F5F5F5'}
desc={datasetRes?.description || '--'} desc={datasetRes?.description || '--'}
navigation={navigation} navigation={navigation}
extraInfo={<ExtraInfo />} extraInfo={<ExtraInfo />}

@ -15,7 +15,8 @@ export function randomString(length: number) {
export type IAppBasicProps = { export type IAppBasicProps = {
iconType?: 'app' | 'api' | 'dataset' iconType?: 'app' | 'api' | 'dataset'
iconUrl?: string icon?: string,
icon_background?: string,
name: string name: string
type: string | React.ReactNode type: string | React.ReactNode
hoverTip?: string hoverTip?: string
@ -41,13 +42,12 @@ const ICON_MAP = {
'dataset': <AppIcon innerIcon={DatasetSvg} className='!border-[0.5px] !border-indigo-100 !bg-indigo-25' /> 'dataset': <AppIcon innerIcon={DatasetSvg} className='!border-[0.5px] !border-indigo-100 !bg-indigo-25' />
} }
export default function AppBasic({ iconUrl, name, type, hoverTip, textStyle, iconType = 'app' }: IAppBasicProps) { export default function AppBasic({ icon, icon_background, name, type, hoverTip, textStyle, iconType = 'app' }: IAppBasicProps) {
return ( return (
<div className="flex items-start"> <div className="flex items-start">
{iconUrl && ( {icon && icon_background && (
<div className='flex-shrink-0 mr-3'> <div className='flex-shrink-0 mr-3'>
{/* <img className="inline-block rounded-lg h-9 w-9" src={iconUrl} alt={name} /> */} <AppIcon icon={icon} background={icon_background}/>
{ICON_MAP[iconType]}
</div> </div>
)} )}
<div className="group"> <div className="group">

@ -7,6 +7,8 @@ export type IAppDetailNavProps = {
iconType?: 'app' | 'dataset' iconType?: 'app' | 'dataset'
title: string title: string
desc: string desc: string
icon: string
icon_background: string
navigation: Array<{ navigation: Array<{
name: string name: string
href: string href: string
@ -16,13 +18,12 @@ export type IAppDetailNavProps = {
extraInfo?: React.ReactNode extraInfo?: React.ReactNode
} }
const sampleAppIconUrl = 'https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80'
const AppDetailNav: FC<IAppDetailNavProps> = ({ title, desc, navigation, extraInfo, iconType = 'app' }) => { const AppDetailNav: FC<IAppDetailNavProps> = ({ title, desc, icon, icon_background, navigation, extraInfo, iconType = 'app' }) => {
return ( return (
<div className="flex flex-col w-56 overflow-y-auto bg-white border-r border-gray-200 shrink-0"> <div className="flex flex-col w-56 overflow-y-auto bg-white border-r border-gray-200 shrink-0">
<div className="flex flex-shrink-0 p-4"> <div className="flex flex-shrink-0 p-4">
<AppBasic iconType={iconType} iconUrl={sampleAppIconUrl} name={title} type={desc} /> <AppBasic iconType={iconType} icon={icon} icon_background={icon_background} name={title} type={desc} />
</div> </div>
<nav className="flex-1 p-4 space-y-1 bg-white"> <nav className="flex-1 p-4 space-y-1 bg-white">
{navigation.map((item, index) => { {navigation.map((item, index) => {

@ -104,7 +104,8 @@ function AppCard({
<div className="mb-2.5 flex flex-row items-start justify-between"> <div className="mb-2.5 flex flex-row items-start justify-between">
<AppBasic <AppBasic
iconType={isApp ? 'app' : 'api'} iconType={isApp ? 'app' : 'api'}
iconUrl={defaultUrl} icon={appInfo.icon}
icon_background={appInfo.icon_background}
name={basicName} name={basicName}
type={ type={
isApp isApp

@ -3,6 +3,8 @@ import { AppMode } from './app'
export type DataSet = { export type DataSet = {
id: string id: string
name: string name: string
icon: string
icon_background: string
description: string description: string
permission: 'only_me' | 'all_team_members' permission: 'only_me' | 'all_team_members'
data_source_type: 'upload_file' data_source_type: 'upload_file'

Loading…
Cancel
Save