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) 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) 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) return { categories, categoriesMap, } }