markdown-test-components.tsx 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. import type { ComponentProps } from 'react'
  2. import {
  3. JsonBlock as LocalizedJsonBlock,
  4. MarkdownText as LocalizedMarkdownText,
  5. type MarkdownCodeLabels,
  6. type MarkdownLabels,
  7. } from '../src/index.ts'
  8. import { markdownLabels as defaultMarkdownLabels } from './labels.client.ts'
  9. type MarkdownTextProps = Omit<ComponentProps<typeof LocalizedMarkdownText>, 'labels'> & {
  10. labels?: MarkdownLabels
  11. codeLabels?: MarkdownCodeLabels
  12. }
  13. export function MarkdownText({
  14. labels,
  15. codeLabels,
  16. ...props
  17. }: MarkdownTextProps) {
  18. const resolved = labels ?? (codeLabels === undefined
  19. ? defaultMarkdownLabels
  20. : { ...defaultMarkdownLabels, code: codeLabels })
  21. return <LocalizedMarkdownText {...props} labels={resolved} />
  22. }
  23. type JsonBlockProps = Omit<ComponentProps<typeof LocalizedJsonBlock>, 'truncatedLabel'> & {
  24. truncatedLabel?: (total: number) => string
  25. }
  26. export function JsonBlock({ truncatedLabel, ...props }: JsonBlockProps) {
  27. return (
  28. <LocalizedJsonBlock
  29. {...props}
  30. truncatedLabel={truncatedLabel ?? (total => `… 已截断,共 ${total} 字符`)}
  31. />
  32. )
  33. }