You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. import { useTranslation } from 'react-i18next'
  2. import type { TFunction } from 'i18next'
  3. import {
  4. categoryKeys,
  5. tagKeys,
  6. } from './constants'
  7. type Tag = {
  8. name: string
  9. label: string
  10. }
  11. export const useTags = (translateFromOut?: TFunction) => {
  12. const { t: translation } = useTranslation()
  13. const t = translateFromOut || translation
  14. const tags = tagKeys.map((tag) => {
  15. return {
  16. name: tag,
  17. label: t(`pluginTags.tags.${tag}`),
  18. }
  19. })
  20. const tagsMap = tags.reduce((acc, tag) => {
  21. acc[tag.name] = tag
  22. return acc
  23. }, {} as Record<string, Tag>)
  24. return {
  25. tags,
  26. tagsMap,
  27. }
  28. }
  29. type Category = {
  30. name: string
  31. label: string
  32. }
  33. export const useCategories = (translateFromOut?: TFunction) => {
  34. const { t: translation } = useTranslation()
  35. const t = translateFromOut || translation
  36. const categories = categoryKeys.map((category) => {
  37. if (category === 'agent-strategy') {
  38. return {
  39. name: 'agent-strategy',
  40. label: t('plugin.category.agents'),
  41. }
  42. }
  43. return {
  44. name: category,
  45. label: t(`plugin.category.${category}s`),
  46. }
  47. })
  48. const categoriesMap = categories.reduce((acc, category) => {
  49. acc[category.name] = category
  50. return acc
  51. }, {} as Record<string, Category>)
  52. return {
  53. categories,
  54. categoriesMap,
  55. }
  56. }
  57. export const useSingleCategories = (translateFromOut?: TFunction) => {
  58. const { t: translation } = useTranslation()
  59. const t = translateFromOut || translation
  60. const categories = categoryKeys.map((category) => {
  61. if (category === 'agent-strategy') {
  62. return {
  63. name: 'agent-strategy',
  64. label: t('plugin.categorySingle.agent'),
  65. }
  66. }
  67. return {
  68. name: category,
  69. label: t(`plugin.categorySingle.${category}`),
  70. }
  71. })
  72. const categoriesMap = categories.reduce((acc, category) => {
  73. acc[category.name] = category
  74. return acc
  75. }, {} as Record<string, Category>)
  76. return {
  77. categories,
  78. categoriesMap,
  79. }
  80. }
  81. export const PLUGIN_PAGE_TABS_MAP = {
  82. plugins: 'plugins',
  83. marketplace: 'discover',
  84. }
  85. export const usePluginPageTabs = () => {
  86. const { t } = useTranslation()
  87. const tabs = [
  88. { value: PLUGIN_PAGE_TABS_MAP.plugins, text: t('common.menus.plugins') },
  89. { value: PLUGIN_PAGE_TABS_MAP.marketplace, text: t('common.menus.exploreMarketplace') },
  90. ]
  91. return tabs
  92. }