index.tsx 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. 'use client'
  2. import React from 'react'
  3. import { useTranslation } from 'react-i18next'
  4. import {
  5. RiAddLine,
  6. } from '@remixicon/react'
  7. import { useFeatures } from '../hooks'
  8. import type { OnFeaturesChange } from '../types'
  9. import FeatureModal from './feature-modal'
  10. import Button from '@/app/components/base/button'
  11. type ChooseFeatureProps = {
  12. onChange?: OnFeaturesChange
  13. disabled?: boolean
  14. }
  15. const ChooseFeature = ({
  16. onChange,
  17. disabled,
  18. }: ChooseFeatureProps) => {
  19. const { t } = useTranslation()
  20. const showFeaturesModal = useFeatures(s => s.showFeaturesModal)
  21. const setShowFeaturesModal = useFeatures(s => s.setShowFeaturesModal)
  22. return (
  23. <>
  24. <Button
  25. className={`
  26. border-primary-100 bg-primary-25 text-xs font-semibold text-primary-600
  27. `}
  28. onClick={() => !disabled && setShowFeaturesModal(true)}
  29. >
  30. <RiAddLine className='mr-1 w-4 h-4' />
  31. {t('appDebug.operation.addFeature')}
  32. </Button>
  33. {
  34. showFeaturesModal && (
  35. <FeatureModal onChange={onChange} />
  36. )
  37. }
  38. </>
  39. )
  40. }
  41. export default React.memo(ChooseFeature)