chore: create from template add community

This commit is contained in:
Joel
2026-02-13 11:55:28 +08:00
parent 87d09b2e3d
commit e21c9cb4a6
5 changed files with 28 additions and 1 deletions

View File

@ -1,4 +1,5 @@
import { fireEvent, render, screen } from '@testing-library/react'
import { MARKETPLACE_URL_PREFIX } from '@/config'
import { AppModeEnum } from '@/types/app'
import Apps from './index'
@ -124,4 +125,13 @@ describe('Apps', () => {
expect(screen.getByText('app.newApp.noTemplateFound')).toBeInTheDocument()
expect(screen.getByText('app.newApp.noTemplateFoundTip')).toBeInTheDocument()
})
it('renders explore community link', () => {
render(<Apps />)
const link = screen.getByRole('link', { name: 'app.newApp.exploreCommunity' })
expect(link).toHaveAttribute('href', `${MARKETPLACE_URL_PREFIX.replace(/\/$/, '')}/templates`)
expect(link).toHaveAttribute('target', '_blank')
expect(link).toHaveAttribute('rel', 'noopener noreferrer')
})
})

View File

@ -10,13 +10,14 @@ import { useMemo, useState } from 'react'
import { useTranslation } from 'react-i18next'
import AppTypeSelector from '@/app/components/app/type-selector'
import { trackEvent } from '@/app/components/base/amplitude'
import { buttonVariants } from '@/app/components/base/button'
import Divider from '@/app/components/base/divider'
import Input from '@/app/components/base/input'
import Loading from '@/app/components/base/loading'
import Toast from '@/app/components/base/toast'
import CreateAppModal from '@/app/components/explore/create-app-modal'
import { usePluginDependencies } from '@/app/components/workflow/plugin-dependency/hooks'
import { NEED_REFRESH_APP_LIST_KEY } from '@/config'
import { MARKETPLACE_URL_PREFIX, NEED_REFRESH_APP_LIST_KEY } from '@/config'
import { useAppContext } from '@/context/app-context'
import { DSLImportMode } from '@/models/app'
import { importDSL } from '@/service/apps'
@ -33,6 +34,8 @@ type AppsProps = {
onCreateFromBlank?: () => void
}
const marketplaceTemplatesUrl = `${MARKETPLACE_URL_PREFIX.replace(/\/$/, '')}/templates`
// export enum PageType {
// EXPLORE = 'explore',
// CREATE = 'create',
@ -166,6 +169,17 @@ const Apps = ({
<div className="flex items-center justify-between border-b border-divider-burn py-3">
<div className="min-w-[180px] pl-5">
<span className="text-text-primary title-xl-semi-bold">{t('newApp.startFromTemplate', { ns: 'app' })}</span>
<a
href={marketplaceTemplatesUrl}
target="_blank"
rel="noopener noreferrer"
className={cn(
buttonVariants({ variant: 'primary', size: 'small' }),
'ml-2 align-middle',
)}
>
{t('newApp.exploreCommunity', { ns: 'app' })}
</a>
</div>
<div className="flex max-w-[548px] flex-1 items-center rounded-xl border border-components-panel-border bg-components-panel-bg-blur p-1.5 shadow-md">
<AppTypeSelector value={currentType} onChange={setCurrentType} />