import { Box } from '@mui/material'; import React, { ReactNode } from 'react'; import { Helmet } from 'react-helmet'; import ToolHeader from './ToolHeader'; import Separator from './Separator'; import AllTools from './allTools/AllTools'; import { getToolsByCategory } from '@tools/index'; import { capitalizeFirstLetter } from '../utils/string'; import { IconifyIcon } from '@iconify/react'; import { useTranslation } from 'react-i18next'; import { ToolCategory } from '@tools/defineTool'; import { FullI18nKey } from '../i18n'; export default function ToolLayout({ children, title, description, icon, type, i18n }: { title: string; description: string; icon?: IconifyIcon | string; type: ToolCategory; children: ReactNode; i18n?: { name: FullI18nKey; description: FullI18nKey; shortDescription: FullI18nKey; }; }) { const { t } = useTranslation(); // Use i18n keys if available, otherwise fall back to provided strings //@ts-ignore const toolTitle: string = i18n ? t(i18n.name) : title; //@ts-ignore const toolDescription: string = i18n ? t(i18n.description) : description; const otherCategoryTools = getToolsByCategory() .find((category) => category.type === type) ?.tools.filter((tool) => tool.name !== title) .map((tool) => ({ title: tool.name, description: tool.shortDescription, link: '/' + tool.path, icon: tool.icon })) ?? []; return ( {`${toolTitle} - OmniTools`} {children} category.type === type)! .rawTitle ) })} toolCards={otherCategoryTools} /> ); }