34 lines
1.3 KiB
TypeScript
Raw Normal View History

2024-08-12 21:05:52 +02:00
import { useEffect, useRef, useState } from 'react';
import { getSchemaByName } from "@stirling-pdf/shared-operations/src/workflow/operatorAccessor";
import styles from './OperatorCard.module.css';
2024-08-12 21:05:52 +02:00
import { MaterialSymbol, MaterialSymbolProps } from 'react-material-symbols';
interface OperatorCardProps {
/** The text to display inside the button */
operatorInternalName: string;
}
export function OperatorCard({ operatorInternalName }: OperatorCardProps) {
const [schema, setSchema] = useState<any>(undefined); // TODO: Type as joi type
2024-08-12 21:05:52 +02:00
const [materialSymbolName, setMaterialSymbolName] = useState<MaterialSymbolProps["icon"]>("error");
useEffect(() => {
getSchemaByName(operatorInternalName).then(schema => {
if(schema) {
setSchema(schema.schema);
2024-08-12 21:05:52 +02:00
setMaterialSymbolName(schema.materialSymbolName || "error");
}
});
}, [operatorInternalName]);
return (
<a key={operatorInternalName} href={"/operators/" + operatorInternalName}>
<div className={styles.operator_card}>
2024-08-12 21:05:52 +02:00
<h3><MaterialSymbol icon={materialSymbolName} size={30} fill grade={-25} color='black'></MaterialSymbol> { schema?.describe().flags.label }</h3>
{ schema?.describe().flags.description }
</div>
</a>
);
}