@scienceicons/myst
Version:
Open Science Icons in MyST Markdown by Curvenote
20 lines (19 loc) • 1.09 kB
JavaScript
import { jsx as _jsx } from "react/jsx-runtime";
import * as scicon from '@scienceicons/react/24/solid';
import { CircleAlert } from 'lucide-react';
function UnknownIcon({ value }) {
return (_jsx("span", { className: "text-yellow-600", title: `${value} is unknown`, children: _jsx(CircleAlert, { width: "1.2em", height: "1.2em", className: "inline" }) }));
}
export const ScienceIconRenderer = ({ node }) => {
var _a;
const names = scicon.names.map((icon) => icon.name);
if (node.value && names.includes(node.value)) {
const componentName = (_a = scicon.names.find((i) => i.name === node.value)) === null || _a === void 0 ? void 0 : _a.componentName;
if (!componentName)
return _jsx(UnknownIcon, { value: node.value });
const { names, ...components } = scicon;
const Component = components[componentName];
return (_jsx("span", { className: "inline-flex align-text-bottom", title: node.value, children: _jsx(Component, { width: "1.2em", height: "1.2em" }) }));
}
return _jsx(UnknownIcon, { value: node.value });
};