* docs: migrate ui docs to docs universe * created yarn workspace * added eslint and tsconfig configurations * fix eslint configurations * fixed eslint configurations * shared tailwind configurations * added shared ui package * added more shared components * migrating more components * made details components shared * move InlineCode component * moved InputText * moved Loading component * Moved Modal component * moved Select components * Moved Tooltip component * moved Search components * moved ColorMode provider * Moved Notification components and providers * used icons package * use UI colors in api-reference * moved Navbar component * used Navbar and Search in UI docs * added Feedback to UI docs * general enhancements * fix color mode * added copy colors file from ui-preset * added features and enhancements to UI docs * move Sidebar component and provider * general fixes and preparations for deployment * update docusaurus version * adjusted versions * fix output directory * remove rootDirectory property * fix yarn.lock * moved code component * added vale for all docs MD and MDX * fix tests * fix vale error * fix deployment errors * change ignore commands * add output directory * fix docs test * general fixes * content fixes * fix announcement script * added changeset * fix vale checks * added nofilter option * fix vale error
49 lines
1.3 KiB
TypeScript
49 lines
1.3 KiB
TypeScript
"use client"
|
|
|
|
import { useEffect, useState } from "react"
|
|
import getCustomComponents from "../../MDXComponents"
|
|
import type { ScopeType } from "../../MDXComponents"
|
|
import { MDXRemote } from "next-mdx-remote"
|
|
import type { MDXRemoteProps, MDXRemoteSerializeResult } from "next-mdx-remote"
|
|
import { serialize } from "next-mdx-remote/serialize"
|
|
|
|
export type MDXContentClientProps = {
|
|
content: any
|
|
className?: string
|
|
} & Partial<MDXRemoteProps>
|
|
|
|
const MDXContentClient = ({
|
|
content,
|
|
className,
|
|
...props
|
|
}: MDXContentClientProps) => {
|
|
const [parsedContent, setParsedContent] = useState<MDXRemoteSerializeResult>()
|
|
|
|
useEffect(() => {
|
|
void serialize(content, {
|
|
mdxOptions: {
|
|
// A workaround for an error in next-mdx-remote
|
|
// more details in this issue:
|
|
// https://github.com/hashicorp/next-mdx-remote/issues/350
|
|
development: process.env.NEXT_PUBLIC_ENV === "development",
|
|
},
|
|
scope: props.scope,
|
|
}).then((output) => {
|
|
setParsedContent(output)
|
|
})
|
|
}, [content, props.scope])
|
|
|
|
return (
|
|
<div className={className}>
|
|
{parsedContent !== undefined && (
|
|
<MDXRemote
|
|
{...parsedContent}
|
|
components={getCustomComponents((props.scope as ScopeType) || {})}
|
|
/>
|
|
)}
|
|
</div>
|
|
)
|
|
}
|
|
|
|
export default MDXContentClient
|