Prose.jsx 1.3 KB

12345678910111213141516171819202122232425
  1. import clsx from 'clsx'
  2. export function Prose({ as: Component = 'div', className, ...props }) {
  3. return (
  4. <Component
  5. className={clsx(
  6. className,
  7. 'prose prose-slate max-w-none dark:prose-invert dark:text-slate-400',
  8. // headings
  9. 'prose-headings:scroll-mt-28 prose-headings:font-display prose-headings:font-normal lg:prose-headings:scroll-mt-[8.5rem]',
  10. // lead
  11. 'prose-lead:text-slate-500 dark:prose-lead:text-slate-400',
  12. // links
  13. 'prose-a:font-semibold dark:prose-a:text-sky-400',
  14. // link underline
  15. 'prose-a:no-underline prose-a:shadow-[inset_0_-2px_0_0_var(--tw-prose-background,#fff),inset_0_calc(-1*(var(--tw-prose-underline-size,4px)+2px))_0_0_var(--tw-prose-underline,theme(colors.sky.300))] hover:prose-a:[--tw-prose-underline-size:6px] dark:[--tw-prose-background:theme(colors.slate.900)] dark:prose-a:shadow-[inset_0_calc(-1*var(--tw-prose-underline-size,2px))_0_0_var(--tw-prose-underline,theme(colors.sky.800))] dark:hover:prose-a:[--tw-prose-underline-size:6px]',
  16. // pre
  17. 'prose-pre:rounded-xl prose-pre:bg-slate-900 prose-pre:shadow-lg dark:prose-pre:bg-slate-800/60 dark:prose-pre:shadow-none dark:prose-pre:ring-1 dark:prose-pre:ring-slate-300/10',
  18. // hr
  19. 'dark:prose-hr:border-slate-800'
  20. )}
  21. {...props}
  22. />
  23. )
  24. }