diff options
| author | Maze Winther <mazewinther@gmail.com> | 2026-04-15 00:33:59 +0200 |
|---|---|---|
| committer | Maze Winther <mazewinther@gmail.com> | 2026-04-15 00:33:59 +0200 |
| commit | 1943a4d18fe9fe1a40bb3e36ee122cc79765cabd (patch) | |
| tree | 1a6f864beaa487931cfaef3ccd7a27fe3c40ed6a /apps/web | |
| parent | 3eccc2f9e338f63e6e0f84ad70b3b7f0439110e1 (diff) | |
| download | opencut-1943a4d18fe9fe1a40bb3e36ee122cc79765cabd.tar.gz | |
feat: changelog now supports markdown within entries
Diffstat (limited to 'apps/web')
| -rw-r--r-- | apps/web/src/app/changelog/components/release.tsx | 3 | ||||
| -rw-r--r-- | apps/web/src/components/ui/react-markdown-wrapper.tsx | 29 |
2 files changed, 30 insertions, 2 deletions
diff --git a/apps/web/src/app/changelog/components/release.tsx b/apps/web/src/app/changelog/components/release.tsx index 0da74bf4..475b0a6d 100644 --- a/apps/web/src/app/changelog/components/release.tsx +++ b/apps/web/src/app/changelog/components/release.tsx @@ -1,6 +1,7 @@ import type { ReactNode } from "react"; import Link from "next/link"; import { cn } from "@/utils/ui"; +import { ReactMarkdownWrapper } from "@/components/ui/react-markdown-wrapper"; import { getSectionTitle, groupAndOrderChanges, @@ -144,7 +145,7 @@ function ReleaseChangeList({ key={change.text} className="text-base leading-relaxed text-foreground" > - {change.text} + <ReactMarkdownWrapper inline>{change.text}</ReactMarkdownWrapper> </li> ))} </ul> diff --git a/apps/web/src/components/ui/react-markdown-wrapper.tsx b/apps/web/src/components/ui/react-markdown-wrapper.tsx index 181ae8ac..68772b07 100644 --- a/apps/web/src/components/ui/react-markdown-wrapper.tsx +++ b/apps/web/src/components/ui/react-markdown-wrapper.tsx @@ -1,7 +1,13 @@ import ReactMarkdown from "react-markdown"; import { cn } from "@/utils/ui"; -export function ReactMarkdownWrapper({ children }: { children: string }) { +export function ReactMarkdownWrapper({ + children, + inline = false, +}: { + children: string; + inline?: boolean; +}) { return ( <ReactMarkdown components={{ @@ -18,6 +24,27 @@ export function ReactMarkdownWrapper({ children }: { children: string }) { strong: ({ children }) => ( <strong className="text-foreground font-semibold">{children}</strong> ), + code: ({ className: codeClassName, children, ...props }) => ( + <code + className={cn( + "rounded border border-destructive/20 bg-destructive/5 px-1.5 py-0.5 font-mono text-[0.85em] text-red-700 dark:text-red-300", + codeClassName, + )} + {...props} + > + {children} + </code> + ), + p: ({ className: paragraphClassName, children, ...props }) => + inline ? ( + <span className={cn("m-0", paragraphClassName)} {...props}> + {children} + </span> + ) : ( + <p className={cn("m-0", paragraphClassName)} {...props}> + {children} + </p> + ), }} > {children} |
