import {isValidElement} from 'react';
interface Props {
name: string;
value: unknown;
}
export default function JSXProperty({name, value}: Props) {
if (name === 'children') {
return {`{children}`}
;
}
if (value === null || value === undefined) {
return {`${name}={${value}}`}
;
}
if (value === true) {
return {name}
;
}
if (value === false) {
return {`${name}={${value}}`}
;
}
if (value === Number || value === Boolean || value === Function) {
// @ts-expect-error
return {`${name}={${value.name}}`}
;
}
if (typeof value === 'string') {
return {`${name}=${JSON.stringify(value)}`}
;
}
if (typeof value === 'number') {
return {`${name}={${value}}`}
;
}
if (typeof value === 'function') {
return (
{`${name}={${value.name || 'Function'}}`}
);
}
if (isValidElement(value)) {
return {`${name}=${value}`}
;
}
return {`${name}={${JSON.stringify(value)}}`}
;
}