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