omni-tools/src/tools/defineTool.tsx
Ibrahima G. Coulibaly 23f50ffead feat: tools normalized
2024-06-22 22:06:16 +01:00

40 lines
888 B
TypeScript

import ToolLayout from '../components/ToolLayout';
import React, { LazyExoticComponent, JSXElementConstructor } from 'react';
interface ToolOptions {
path: string;
component: LazyExoticComponent<JSXElementConstructor<NonNullable<unknown>>>;
keywords: string[];
name: string;
description: string;
}
interface DefinedTool {
path: string;
name: string;
description: string;
keywords: string[];
component: () => JSX.Element;
}
export const defineTool = (
basePath: string,
options: ToolOptions
): DefinedTool => {
const { path, name, description, keywords, component } = options;
const Component = component;
return {
path: `${basePath}/${path}`,
name,
description,
keywords,
component: () => {
return (
<ToolLayout title={name} description={description}>
<Component />
</ToolLayout>
);
}
};
};