diff --git a/src/app/components/generator/McdocRenderer.tsx b/src/app/components/generator/McdocRenderer.tsx
new file mode 100644
index 00000000..9b572007
--- /dev/null
+++ b/src/app/components/generator/McdocRenderer.tsx
@@ -0,0 +1,182 @@
+import type { JsonNode } from '@spyglassmc/json'
+import { JsonArrayNode, JsonBooleanNode, JsonNumberNode, JsonObjectNode, JsonStringNode } from '@spyglassmc/json'
+import type { ListType, LiteralType, McdocType } from '@spyglassmc/mcdoc'
+import type { SimplifiedStructType } from '@spyglassmc/mcdoc/lib/runtime/checker/index.js'
+import { useLocale } from '../../contexts/Locale.jsx'
+import { Octicon } from '../Octicon.jsx'
+
+interface Props {
+ node: JsonNode | undefined
+}
+export function McdocRoot({ node } : Props) {
+ const type = node?.typeDef ?? { kind: 'unsafe' }
+
+ if (type.kind === 'struct') {
+ return