Zeichen's app for both server and client.
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

Icon.tsx 793 B

123456789101112131415161718192021222324252627282930313233343536
  1. import * as React from 'react'
  2. import * as PropTypes from 'prop-types'
  3. import { ArrowLeft, Search, FilePlus, FileText, FolderPlus, GitBranch, Trash2, User, Menu } from 'react-feather'
  4. const DEFINED_ICONS = {
  5. 'note': FileText,
  6. 'mind-map': GitBranch,
  7. 'user': User,
  8. 'new-folder': FolderPlus,
  9. 'new-note': FilePlus,
  10. 'bin': Trash2,
  11. 'back': ArrowLeft,
  12. 'search': Search,
  13. 'menu': Menu,
  14. }
  15. const propTypes = {
  16. name: PropTypes.oneOf(Object.keys(DEFINED_ICONS)).isRequired,
  17. }
  18. type Props = PropTypes.InferProps<typeof propTypes>
  19. const Icon: React.FC<Props> = ({
  20. name
  21. }) => {
  22. const { [name as keyof typeof DEFINED_ICONS]: Component = null } = DEFINED_ICONS
  23. if (Component !== null) {
  24. return <Component />
  25. }
  26. return null
  27. }
  28. Icon.propTypes = propTypes
  29. export default Icon