mirror of
https://github.com/langgenius/dify.git
synced 2026-05-06 02:18:08 +08:00
feat(skill): add create blank skill modal with name validation
Wire up the "Create Blank Skill" action card to open a modal where users enter a skill name. The modal validates against existing skill names in real-time and creates a folder with a SKILL.md file via batchUpload, then opens the file as a pinned tab.
This commit is contained in:
@ -1,26 +1,35 @@
|
||||
'use client'
|
||||
|
||||
import { RiAddCircleFill, RiUploadLine } from '@remixicon/react'
|
||||
import { memo } from 'react'
|
||||
import { memo, useState } from 'react'
|
||||
import { useTranslation } from 'react-i18next'
|
||||
import ActionCard from './action-card'
|
||||
import CreateBlankSkillModal from './create-blank-skill-modal'
|
||||
|
||||
const CreateImportSection = () => {
|
||||
const { t } = useTranslation('workflow')
|
||||
const [isModalOpen, setIsModalOpen] = useState(false)
|
||||
|
||||
return (
|
||||
<div className="grid grid-cols-3 gap-2 px-6 pb-4 pt-6">
|
||||
<ActionCard
|
||||
icon={<RiAddCircleFill className="size-5 text-text-accent" />}
|
||||
title={t('skill.startTab.createBlankSkill')}
|
||||
description={t('skill.startTab.createBlankSkillDesc')}
|
||||
<>
|
||||
<div className="grid grid-cols-3 gap-2 px-6 pb-4 pt-6">
|
||||
<ActionCard
|
||||
icon={<RiAddCircleFill className="size-5 text-text-accent" />}
|
||||
title={t('skill.startTab.createBlankSkill')}
|
||||
description={t('skill.startTab.createBlankSkillDesc')}
|
||||
onClick={() => setIsModalOpen(true)}
|
||||
/>
|
||||
<ActionCard
|
||||
icon={<RiUploadLine className="size-5 text-text-accent" />}
|
||||
title={t('skill.startTab.importSkill')}
|
||||
description={t('skill.startTab.importSkillDesc')}
|
||||
/>
|
||||
</div>
|
||||
<CreateBlankSkillModal
|
||||
isOpen={isModalOpen}
|
||||
onClose={() => setIsModalOpen(false)}
|
||||
/>
|
||||
<ActionCard
|
||||
icon={<RiUploadLine className="size-5 text-text-accent" />}
|
||||
title={t('skill.startTab.importSkill')}
|
||||
description={t('skill.startTab.importSkillDesc')}
|
||||
/>
|
||||
</div>
|
||||
</>
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user