@multiplatform.one/markdown 6.0.4 → 6.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (672) hide show
  1. package/README.md +61 -0
  2. package/dist/cjs/Aside/index.cjs +37 -32
  3. package/dist/cjs/Aside/index.native.js +41 -34
  4. package/dist/cjs/Aside/index.native.js.map +1 -1
  5. package/dist/cjs/ExternalIcon/index.cjs +2 -0
  6. package/dist/cjs/ExternalIcon/index.native.js +2 -0
  7. package/dist/cjs/ExternalIcon/index.native.js.map +1 -1
  8. package/dist/cjs/Hr/index.cjs +3 -11
  9. package/dist/cjs/Hr/index.native.js +3 -11
  10. package/dist/cjs/Hr/index.native.js.map +1 -1
  11. package/dist/cjs/{SimpleTable → MarkdownSimpleTable}/index.cjs +27 -9
  12. package/dist/{jsx/SimpleTable → cjs/MarkdownSimpleTable}/index.native.js +32 -11
  13. package/dist/cjs/MarkdownSimpleTable/index.native.js.map +1 -0
  14. package/dist/cjs/Mdx/index.cjs +15 -7
  15. package/dist/cjs/Mdx/index.native.js +15 -7
  16. package/dist/cjs/Mdx/index.native.js.map +1 -1
  17. package/dist/cjs/MdxCodeBlock/index.cjs +28 -20
  18. package/dist/cjs/MdxCodeBlock/index.native.js +33 -22
  19. package/dist/cjs/MdxCodeBlock/index.native.js.map +1 -1
  20. package/dist/cjs/Notice/index.cjs +13 -56
  21. package/dist/cjs/Notice/index.native.js +13 -56
  22. package/dist/cjs/Notice/index.native.js.map +1 -1
  23. package/dist/cjs/Table/index.cjs +13 -0
  24. package/dist/cjs/Table/index.native.js +15 -0
  25. package/dist/cjs/Table/index.native.js.map +1 -1
  26. package/dist/cjs/Tabs/index.cjs +15 -47
  27. package/dist/cjs/Tabs/index.native.js +20 -52
  28. package/dist/cjs/Tabs/index.native.js.map +1 -1
  29. package/dist/cjs/Ul/index.cjs +2 -2
  30. package/dist/cjs/Ul/index.native.js +2 -2
  31. package/dist/cjs/Ul/index.native.js.map +1 -1
  32. package/dist/cjs/Video/index.cjs +4 -2
  33. package/dist/cjs/Video/index.native.js +4 -2
  34. package/dist/cjs/Video/index.native.js.map +1 -1
  35. package/dist/cjs/components/Blockquote.cjs +16 -3
  36. package/dist/cjs/components/Blockquote.native.js +25 -3
  37. package/dist/cjs/components/Blockquote.native.js.map +1 -1
  38. package/dist/cjs/components/Break.cjs +1 -0
  39. package/dist/cjs/components/Break.native.js +1 -0
  40. package/dist/cjs/components/Break.native.js.map +1 -1
  41. package/dist/cjs/components/CodeBlock.cjs +20 -60
  42. package/dist/cjs/components/CodeBlock.native.js +22 -64
  43. package/dist/cjs/components/CodeBlock.native.js.map +1 -1
  44. package/dist/cjs/components/Heading.cjs +23 -0
  45. package/dist/cjs/components/Heading.native.js +24 -0
  46. package/dist/cjs/components/Heading.native.js.map +1 -1
  47. package/dist/cjs/components/Image.cjs +3 -5
  48. package/dist/cjs/components/Image.native.js +6 -5
  49. package/dist/cjs/components/Image.native.js.map +1 -1
  50. package/dist/cjs/components/InlineCode.cjs +3 -6
  51. package/dist/cjs/components/InlineCode.native.js +3 -6
  52. package/dist/cjs/components/InlineCode.native.js.map +1 -1
  53. package/dist/cjs/components/InlineStyles.cjs +3 -0
  54. package/dist/cjs/components/InlineStyles.native.js +3 -0
  55. package/dist/cjs/components/InlineStyles.native.js.map +1 -1
  56. package/dist/cjs/components/Link.cjs +22 -5
  57. package/dist/cjs/components/Link.native.js +23 -5
  58. package/dist/cjs/components/Link.native.js.map +1 -1
  59. package/dist/cjs/components/List.cjs +87 -9
  60. package/dist/cjs/components/List.native.js +91 -9
  61. package/dist/cjs/components/List.native.js.map +1 -1
  62. package/dist/cjs/components/Paragraph.cjs +6 -1
  63. package/dist/cjs/components/Paragraph.native.js +6 -1
  64. package/dist/cjs/components/Paragraph.native.js.map +1 -1
  65. package/dist/cjs/components/Table.cjs +57 -24
  66. package/dist/cjs/components/Table.native.js +67 -25
  67. package/dist/cjs/components/Table.native.js.map +1 -1
  68. package/dist/cjs/hooks/useCompileMdx.cjs +61 -28
  69. package/dist/cjs/hooks/useCompileMdx.native.js +80 -28
  70. package/dist/cjs/hooks/useCompileMdx.native.js.map +1 -1
  71. package/dist/cjs/hooks/useEvaluateMdx.cjs +7 -1
  72. package/dist/cjs/hooks/useEvaluateMdx.native.js +9 -3
  73. package/dist/cjs/hooks/useEvaluateMdx.native.js.map +1 -1
  74. package/dist/cjs/icons/index.cjs +31 -101
  75. package/dist/cjs/icons/index.native.js +36 -116
  76. package/dist/cjs/icons/index.native.js.map +1 -1
  77. package/dist/cjs/index.cjs +6 -4
  78. package/dist/cjs/index.native.js +6 -4
  79. package/dist/cjs/index.native.js.map +1 -1
  80. package/dist/cjs/mdxComponents.cjs +13 -6
  81. package/dist/cjs/mdxComponents.native.js +16 -6
  82. package/dist/cjs/mdxComponents.native.js.map +1 -1
  83. package/dist/cjs/mermaid/MermaidBlock.cjs +110 -0
  84. package/dist/cjs/mermaid/MermaidBlock.native.js +41 -0
  85. package/dist/cjs/mermaid/MermaidBlock.native.js.map +1 -0
  86. package/dist/cjs/mermaid/index.cjs +31 -0
  87. package/dist/cjs/mermaid/index.native.js +34 -0
  88. package/dist/cjs/mermaid/index.native.js.map +1 -0
  89. package/dist/cjs/mermaid/mountDiagramSvg.cjs +54 -0
  90. package/dist/cjs/mermaid/mountDiagramSvg.native.js +98 -0
  91. package/dist/cjs/mermaid/mountDiagramSvg.native.js.map +1 -0
  92. package/dist/cjs/mermaid/renderMermaidDiagram.cjs +92 -0
  93. package/dist/cjs/mermaid/renderMermaidDiagram.native.js +110 -0
  94. package/dist/cjs/mermaid/renderMermaidDiagram.native.js.map +1 -0
  95. package/dist/cjs/renderer.cjs +9 -1
  96. package/dist/cjs/renderer.native.js +10 -2
  97. package/dist/cjs/renderer.native.js.map +1 -1
  98. package/dist/cjs/shared/colorRamps.cjs +1 -11
  99. package/dist/cjs/shared/colorRamps.native.js +1 -11
  100. package/dist/cjs/shared/colorRamps.native.js.map +1 -1
  101. package/dist/cjs/shared/cutoffGradient.cjs +54 -0
  102. package/dist/cjs/shared/cutoffGradient.native.js +63 -0
  103. package/dist/cjs/shared/cutoffGradient.native.js.map +1 -0
  104. package/dist/cjs/shiki/index.cjs +1 -16
  105. package/dist/cjs/shiki/index.native.js +0 -15
  106. package/dist/cjs/shiki/index.native.js.map +1 -1
  107. package/dist/esm/Aside/index.mjs +39 -34
  108. package/dist/esm/Aside/index.mjs.map +1 -1
  109. package/dist/esm/Aside/index.native.js +43 -36
  110. package/dist/esm/Aside/index.native.js.map +1 -1
  111. package/dist/esm/ExternalIcon/index.mjs +2 -0
  112. package/dist/esm/ExternalIcon/index.mjs.map +1 -1
  113. package/dist/esm/ExternalIcon/index.native.js +2 -0
  114. package/dist/esm/ExternalIcon/index.native.js.map +1 -1
  115. package/dist/esm/Hr/index.mjs +4 -12
  116. package/dist/esm/Hr/index.mjs.map +1 -1
  117. package/dist/esm/Hr/index.native.js +4 -12
  118. package/dist/esm/Hr/index.native.js.map +1 -1
  119. package/dist/esm/{SimpleTable → MarkdownSimpleTable}/index.mjs +24 -6
  120. package/dist/esm/MarkdownSimpleTable/index.mjs.map +1 -0
  121. package/dist/esm/{SimpleTable → MarkdownSimpleTable}/index.native.js +29 -8
  122. package/dist/esm/MarkdownSimpleTable/index.native.js.map +1 -0
  123. package/dist/esm/Mdx/index.mjs +15 -7
  124. package/dist/esm/Mdx/index.mjs.map +1 -1
  125. package/dist/esm/Mdx/index.native.js +15 -7
  126. package/dist/esm/Mdx/index.native.js.map +1 -1
  127. package/dist/esm/MdxCodeBlock/index.mjs +30 -22
  128. package/dist/esm/MdxCodeBlock/index.mjs.map +1 -1
  129. package/dist/esm/MdxCodeBlock/index.native.js +35 -24
  130. package/dist/esm/MdxCodeBlock/index.native.js.map +1 -1
  131. package/dist/esm/Notice/index.mjs +15 -57
  132. package/dist/esm/Notice/index.mjs.map +1 -1
  133. package/dist/esm/Notice/index.native.js +15 -57
  134. package/dist/esm/Notice/index.native.js.map +1 -1
  135. package/dist/esm/Table/index.mjs +13 -0
  136. package/dist/esm/Table/index.mjs.map +1 -1
  137. package/dist/esm/Table/index.native.js +15 -0
  138. package/dist/esm/Table/index.native.js.map +1 -1
  139. package/dist/esm/Tabs/index.mjs +17 -49
  140. package/dist/esm/Tabs/index.mjs.map +1 -1
  141. package/dist/esm/Tabs/index.native.js +22 -54
  142. package/dist/esm/Tabs/index.native.js.map +1 -1
  143. package/dist/esm/Ul/index.mjs +2 -2
  144. package/dist/esm/Ul/index.mjs.map +1 -1
  145. package/dist/esm/Ul/index.native.js +2 -2
  146. package/dist/esm/Ul/index.native.js.map +1 -1
  147. package/dist/esm/Video/index.mjs +4 -2
  148. package/dist/esm/Video/index.mjs.map +1 -1
  149. package/dist/esm/Video/index.native.js +4 -2
  150. package/dist/esm/Video/index.native.js.map +1 -1
  151. package/dist/esm/components/Blockquote.mjs +17 -4
  152. package/dist/esm/components/Blockquote.mjs.map +1 -1
  153. package/dist/esm/components/Blockquote.native.js +26 -4
  154. package/dist/esm/components/Blockquote.native.js.map +1 -1
  155. package/dist/esm/components/Break.mjs +2 -1
  156. package/dist/esm/components/Break.mjs.map +1 -1
  157. package/dist/esm/components/Break.native.js +2 -1
  158. package/dist/esm/components/Break.native.js.map +1 -1
  159. package/dist/esm/components/CodeBlock.mjs +21 -61
  160. package/dist/esm/components/CodeBlock.mjs.map +1 -1
  161. package/dist/esm/components/CodeBlock.native.js +23 -65
  162. package/dist/esm/components/CodeBlock.native.js.map +1 -1
  163. package/dist/esm/components/Heading.mjs +24 -1
  164. package/dist/esm/components/Heading.mjs.map +1 -1
  165. package/dist/esm/components/Heading.native.js +25 -1
  166. package/dist/esm/components/Heading.native.js.map +1 -1
  167. package/dist/esm/components/Image.mjs +3 -5
  168. package/dist/esm/components/Image.mjs.map +1 -1
  169. package/dist/esm/components/Image.native.js +6 -5
  170. package/dist/esm/components/Image.native.js.map +1 -1
  171. package/dist/esm/components/InlineCode.mjs +3 -6
  172. package/dist/esm/components/InlineCode.mjs.map +1 -1
  173. package/dist/esm/components/InlineCode.native.js +3 -6
  174. package/dist/esm/components/InlineCode.native.js.map +1 -1
  175. package/dist/esm/components/InlineStyles.mjs +3 -0
  176. package/dist/esm/components/InlineStyles.mjs.map +1 -1
  177. package/dist/esm/components/InlineStyles.native.js +3 -0
  178. package/dist/esm/components/InlineStyles.native.js.map +1 -1
  179. package/dist/esm/components/Link.mjs +23 -6
  180. package/dist/esm/components/Link.mjs.map +1 -1
  181. package/dist/esm/components/Link.native.js +24 -6
  182. package/dist/esm/components/Link.native.js.map +1 -1
  183. package/dist/esm/components/List.mjs +88 -10
  184. package/dist/esm/components/List.mjs.map +1 -1
  185. package/dist/esm/components/List.native.js +92 -10
  186. package/dist/esm/components/List.native.js.map +1 -1
  187. package/dist/esm/components/Paragraph.mjs +6 -1
  188. package/dist/esm/components/Paragraph.mjs.map +1 -1
  189. package/dist/esm/components/Paragraph.native.js +6 -1
  190. package/dist/esm/components/Paragraph.native.js.map +1 -1
  191. package/dist/esm/components/Table.mjs +59 -26
  192. package/dist/esm/components/Table.mjs.map +1 -1
  193. package/dist/esm/components/Table.native.js +69 -27
  194. package/dist/esm/components/Table.native.js.map +1 -1
  195. package/dist/esm/hooks/useCompileMdx.mjs +61 -29
  196. package/dist/esm/hooks/useCompileMdx.mjs.map +1 -1
  197. package/dist/esm/hooks/useCompileMdx.native.js +80 -29
  198. package/dist/esm/hooks/useCompileMdx.native.js.map +1 -1
  199. package/dist/esm/hooks/useEvaluateMdx.mjs +7 -1
  200. package/dist/esm/hooks/useEvaluateMdx.mjs.map +1 -1
  201. package/dist/esm/hooks/useEvaluateMdx.native.js +9 -3
  202. package/dist/esm/hooks/useEvaluateMdx.native.js.map +1 -1
  203. package/dist/esm/icons/index.mjs +32 -100
  204. package/dist/esm/icons/index.mjs.map +1 -1
  205. package/dist/esm/icons/index.native.js +37 -115
  206. package/dist/esm/icons/index.native.js.map +1 -1
  207. package/dist/esm/index.mjs +5 -3
  208. package/dist/esm/index.mjs.map +1 -1
  209. package/dist/esm/index.native.js +5 -3
  210. package/dist/esm/index.native.js.map +1 -1
  211. package/dist/esm/mdxComponents.mjs +14 -7
  212. package/dist/esm/mdxComponents.mjs.map +1 -1
  213. package/dist/esm/mdxComponents.native.js +17 -7
  214. package/dist/esm/mdxComponents.native.js.map +1 -1
  215. package/dist/esm/mermaid/MermaidBlock.mjs +85 -0
  216. package/dist/esm/mermaid/MermaidBlock.mjs.map +1 -0
  217. package/dist/esm/mermaid/MermaidBlock.native.js +13 -0
  218. package/dist/esm/mermaid/MermaidBlock.native.js.map +1 -0
  219. package/dist/esm/mermaid/index.mjs +4 -0
  220. package/dist/esm/mermaid/index.mjs.map +1 -0
  221. package/dist/esm/mermaid/index.native.js +4 -0
  222. package/dist/esm/mermaid/index.native.js.map +1 -0
  223. package/dist/esm/mermaid/mountDiagramSvg.mjs +29 -0
  224. package/dist/esm/mermaid/mountDiagramSvg.mjs.map +1 -0
  225. package/dist/esm/mermaid/mountDiagramSvg.native.js +70 -0
  226. package/dist/esm/mermaid/mountDiagramSvg.native.js.map +1 -0
  227. package/dist/esm/mermaid/renderMermaidDiagram.mjs +55 -0
  228. package/dist/esm/mermaid/renderMermaidDiagram.mjs.map +1 -0
  229. package/dist/esm/mermaid/renderMermaidDiagram.native.js +70 -0
  230. package/dist/esm/mermaid/renderMermaidDiagram.native.js.map +1 -0
  231. package/dist/esm/renderer.mjs +9 -1
  232. package/dist/esm/renderer.mjs.map +1 -1
  233. package/dist/esm/renderer.native.js +10 -2
  234. package/dist/esm/renderer.native.js.map +1 -1
  235. package/dist/esm/shared/colorRamps.mjs +1 -10
  236. package/dist/esm/shared/colorRamps.mjs.map +1 -1
  237. package/dist/esm/shared/colorRamps.native.js +1 -10
  238. package/dist/esm/shared/colorRamps.native.js.map +1 -1
  239. package/dist/esm/shared/cutoffGradient.mjs +28 -0
  240. package/dist/esm/shared/cutoffGradient.mjs.map +1 -0
  241. package/dist/esm/shared/cutoffGradient.native.js +34 -0
  242. package/dist/esm/shared/cutoffGradient.native.js.map +1 -0
  243. package/dist/esm/shiki/index.mjs +1 -2
  244. package/dist/esm/shiki/index.mjs.map +1 -1
  245. package/dist/esm/shiki/index.native.js +1 -2
  246. package/dist/esm/shiki/index.native.js.map +1 -1
  247. package/dist/jsx/Aside/index.mjs +39 -34
  248. package/dist/jsx/Aside/index.mjs.map +1 -1
  249. package/dist/jsx/Aside/index.native.js +41 -34
  250. package/dist/jsx/Aside/index.native.js.map +1 -1
  251. package/dist/jsx/ExternalIcon/index.mjs +2 -0
  252. package/dist/jsx/ExternalIcon/index.mjs.map +1 -1
  253. package/dist/jsx/ExternalIcon/index.native.js +2 -0
  254. package/dist/jsx/ExternalIcon/index.native.js.map +1 -1
  255. package/dist/jsx/Hr/index.mjs +4 -12
  256. package/dist/jsx/Hr/index.mjs.map +1 -1
  257. package/dist/jsx/Hr/index.native.js +3 -11
  258. package/dist/jsx/Hr/index.native.js.map +1 -1
  259. package/dist/jsx/{SimpleTable → MarkdownSimpleTable}/index.mjs +24 -6
  260. package/dist/jsx/MarkdownSimpleTable/index.mjs.map +1 -0
  261. package/dist/{cjs/SimpleTable → jsx/MarkdownSimpleTable}/index.native.js +32 -11
  262. package/dist/jsx/MarkdownSimpleTable/index.native.js.map +1 -0
  263. package/dist/jsx/Mdx/index.mjs +15 -7
  264. package/dist/jsx/Mdx/index.mjs.map +1 -1
  265. package/dist/jsx/Mdx/index.native.js +15 -7
  266. package/dist/jsx/Mdx/index.native.js.map +1 -1
  267. package/dist/jsx/MdxCodeBlock/index.mjs +30 -22
  268. package/dist/jsx/MdxCodeBlock/index.mjs.map +1 -1
  269. package/dist/jsx/MdxCodeBlock/index.native.js +33 -22
  270. package/dist/jsx/MdxCodeBlock/index.native.js.map +1 -1
  271. package/dist/jsx/Notice/index.mjs +15 -57
  272. package/dist/jsx/Notice/index.mjs.map +1 -1
  273. package/dist/jsx/Notice/index.native.js +13 -56
  274. package/dist/jsx/Notice/index.native.js.map +1 -1
  275. package/dist/jsx/Table/index.mjs +13 -0
  276. package/dist/jsx/Table/index.mjs.map +1 -1
  277. package/dist/jsx/Table/index.native.js +15 -0
  278. package/dist/jsx/Table/index.native.js.map +1 -1
  279. package/dist/jsx/Tabs/index.mjs +17 -49
  280. package/dist/jsx/Tabs/index.mjs.map +1 -1
  281. package/dist/jsx/Tabs/index.native.js +20 -52
  282. package/dist/jsx/Tabs/index.native.js.map +1 -1
  283. package/dist/jsx/Ul/index.mjs +2 -2
  284. package/dist/jsx/Ul/index.mjs.map +1 -1
  285. package/dist/jsx/Ul/index.native.js +2 -2
  286. package/dist/jsx/Ul/index.native.js.map +1 -1
  287. package/dist/jsx/Video/index.mjs +4 -2
  288. package/dist/jsx/Video/index.mjs.map +1 -1
  289. package/dist/jsx/Video/index.native.js +4 -2
  290. package/dist/jsx/Video/index.native.js.map +1 -1
  291. package/dist/jsx/components/Blockquote.mjs +17 -4
  292. package/dist/jsx/components/Blockquote.mjs.map +1 -1
  293. package/dist/jsx/components/Blockquote.native.js +25 -3
  294. package/dist/jsx/components/Blockquote.native.js.map +1 -1
  295. package/dist/jsx/components/Break.mjs +2 -1
  296. package/dist/jsx/components/Break.mjs.map +1 -1
  297. package/dist/jsx/components/Break.native.js +1 -0
  298. package/dist/jsx/components/Break.native.js.map +1 -1
  299. package/dist/jsx/components/CodeBlock.mjs +21 -61
  300. package/dist/jsx/components/CodeBlock.mjs.map +1 -1
  301. package/dist/jsx/components/CodeBlock.native.js +22 -64
  302. package/dist/jsx/components/CodeBlock.native.js.map +1 -1
  303. package/dist/jsx/components/Heading.mjs +24 -1
  304. package/dist/jsx/components/Heading.mjs.map +1 -1
  305. package/dist/jsx/components/Heading.native.js +24 -0
  306. package/dist/jsx/components/Heading.native.js.map +1 -1
  307. package/dist/jsx/components/Image.mjs +3 -5
  308. package/dist/jsx/components/Image.mjs.map +1 -1
  309. package/dist/jsx/components/Image.native.js +6 -5
  310. package/dist/jsx/components/Image.native.js.map +1 -1
  311. package/dist/jsx/components/InlineCode.mjs +3 -6
  312. package/dist/jsx/components/InlineCode.mjs.map +1 -1
  313. package/dist/jsx/components/InlineCode.native.js +3 -6
  314. package/dist/jsx/components/InlineCode.native.js.map +1 -1
  315. package/dist/jsx/components/InlineStyles.mjs +3 -0
  316. package/dist/jsx/components/InlineStyles.mjs.map +1 -1
  317. package/dist/jsx/components/InlineStyles.native.js +3 -0
  318. package/dist/jsx/components/InlineStyles.native.js.map +1 -1
  319. package/dist/jsx/components/Link.mjs +23 -6
  320. package/dist/jsx/components/Link.mjs.map +1 -1
  321. package/dist/jsx/components/Link.native.js +23 -5
  322. package/dist/jsx/components/Link.native.js.map +1 -1
  323. package/dist/jsx/components/List.mjs +88 -10
  324. package/dist/jsx/components/List.mjs.map +1 -1
  325. package/dist/jsx/components/List.native.js +91 -9
  326. package/dist/jsx/components/List.native.js.map +1 -1
  327. package/dist/jsx/components/Paragraph.mjs +6 -1
  328. package/dist/jsx/components/Paragraph.mjs.map +1 -1
  329. package/dist/jsx/components/Paragraph.native.js +6 -1
  330. package/dist/jsx/components/Paragraph.native.js.map +1 -1
  331. package/dist/jsx/components/Table.mjs +59 -26
  332. package/dist/jsx/components/Table.mjs.map +1 -1
  333. package/dist/jsx/components/Table.native.js +67 -25
  334. package/dist/jsx/components/Table.native.js.map +1 -1
  335. package/dist/jsx/hooks/useCompileMdx.mjs +61 -29
  336. package/dist/jsx/hooks/useCompileMdx.mjs.map +1 -1
  337. package/dist/jsx/hooks/useCompileMdx.native.js +80 -28
  338. package/dist/jsx/hooks/useCompileMdx.native.js.map +1 -1
  339. package/dist/jsx/hooks/useEvaluateMdx.mjs +7 -1
  340. package/dist/jsx/hooks/useEvaluateMdx.mjs.map +1 -1
  341. package/dist/jsx/hooks/useEvaluateMdx.native.js +9 -3
  342. package/dist/jsx/hooks/useEvaluateMdx.native.js.map +1 -1
  343. package/dist/jsx/icons/index.mjs +32 -100
  344. package/dist/jsx/icons/index.mjs.map +1 -1
  345. package/dist/jsx/icons/index.native.js +36 -116
  346. package/dist/jsx/icons/index.native.js.map +1 -1
  347. package/dist/jsx/index.js +5 -3
  348. package/dist/jsx/index.js.map +1 -1
  349. package/dist/jsx/index.mjs +5 -3
  350. package/dist/jsx/index.mjs.map +1 -1
  351. package/dist/jsx/index.native.js +6 -4
  352. package/dist/jsx/index.native.js.map +1 -1
  353. package/dist/jsx/mdxComponents.mjs +14 -7
  354. package/dist/jsx/mdxComponents.mjs.map +1 -1
  355. package/dist/jsx/mdxComponents.native.js +16 -6
  356. package/dist/jsx/mdxComponents.native.js.map +1 -1
  357. package/dist/jsx/mermaid/MermaidBlock.mjs +85 -0
  358. package/dist/jsx/mermaid/MermaidBlock.mjs.map +1 -0
  359. package/dist/jsx/mermaid/MermaidBlock.native.js +41 -0
  360. package/dist/jsx/mermaid/MermaidBlock.native.js.map +1 -0
  361. package/dist/jsx/mermaid/index.mjs +4 -0
  362. package/dist/jsx/mermaid/index.mjs.map +1 -0
  363. package/dist/jsx/mermaid/index.native.js +34 -0
  364. package/dist/jsx/mermaid/index.native.js.map +1 -0
  365. package/dist/jsx/mermaid/mountDiagramSvg.mjs +29 -0
  366. package/dist/jsx/mermaid/mountDiagramSvg.mjs.map +1 -0
  367. package/dist/jsx/mermaid/mountDiagramSvg.native.js +98 -0
  368. package/dist/jsx/mermaid/mountDiagramSvg.native.js.map +1 -0
  369. package/dist/jsx/mermaid/renderMermaidDiagram.mjs +55 -0
  370. package/dist/jsx/mermaid/renderMermaidDiagram.mjs.map +1 -0
  371. package/dist/jsx/mermaid/renderMermaidDiagram.native.js +110 -0
  372. package/dist/jsx/mermaid/renderMermaidDiagram.native.js.map +1 -0
  373. package/dist/jsx/renderer.mjs +9 -1
  374. package/dist/jsx/renderer.mjs.map +1 -1
  375. package/dist/jsx/renderer.native.js +10 -2
  376. package/dist/jsx/renderer.native.js.map +1 -1
  377. package/dist/jsx/shared/colorRamps.mjs +1 -10
  378. package/dist/jsx/shared/colorRamps.mjs.map +1 -1
  379. package/dist/jsx/shared/colorRamps.native.js +1 -11
  380. package/dist/jsx/shared/colorRamps.native.js.map +1 -1
  381. package/dist/jsx/shared/cutoffGradient.mjs +28 -0
  382. package/dist/jsx/shared/cutoffGradient.mjs.map +1 -0
  383. package/dist/jsx/shared/cutoffGradient.native.js +63 -0
  384. package/dist/jsx/shared/cutoffGradient.native.js.map +1 -0
  385. package/dist/jsx/shiki/index.mjs +1 -2
  386. package/dist/jsx/shiki/index.mjs.map +1 -1
  387. package/dist/jsx/shiki/index.native.js +0 -15
  388. package/dist/jsx/shiki/index.native.js.map +1 -1
  389. package/package.json +25 -14
  390. package/src/Aside/index.tsx +42 -35
  391. package/src/ExternalIcon/index.tsx +8 -1
  392. package/src/Hr/index.tsx +3 -6
  393. package/src/{SimpleTable → MarkdownSimpleTable}/index.tsx +30 -12
  394. package/src/MarkdownSimpleTable/markdownSimpleTable.spec.tsx +92 -0
  395. package/src/Mdx/index.tsx +12 -7
  396. package/src/MdxCodeBlock/index.tsx +33 -20
  397. package/src/Notice/index.tsx +12 -54
  398. package/src/Table/index.tsx +22 -6
  399. package/src/Tabs/index.tsx +26 -52
  400. package/src/Ul/index.ts +2 -2
  401. package/src/Video/index.tsx +15 -12
  402. package/src/components/Blockquote.tsx +29 -4
  403. package/src/components/Break.tsx +3 -1
  404. package/src/components/CodeBlock.tsx +49 -79
  405. package/src/components/Heading.tsx +15 -2
  406. package/src/components/Image.tsx +6 -3
  407. package/src/components/InlineCode.tsx +14 -7
  408. package/src/components/InlineStyles.tsx +15 -3
  409. package/src/components/Link.tsx +29 -6
  410. package/src/components/List.tsx +111 -11
  411. package/src/components/Paragraph.tsx +6 -1
  412. package/src/components/Table.tsx +56 -35
  413. package/src/components/markdownPrimitives.spec.tsx +121 -0
  414. package/src/docBlocks.spec.tsx +85 -0
  415. package/src/hooks/useCompileMdx.ts +75 -35
  416. package/src/hooks/useEvaluateMdx.ts +7 -1
  417. package/src/icons/index.tsx +36 -58
  418. package/src/index.ts +15 -3
  419. package/src/markdownComponent.spec.tsx +58 -0
  420. package/src/mdx.spec.tsx +4 -0
  421. package/src/mdxComponents.spec.tsx +185 -0
  422. package/src/mdxComponents.tsx +14 -5
  423. package/src/mermaid/MermaidBlock.native.tsx +15 -0
  424. package/src/mermaid/MermaidBlock.tsx +88 -0
  425. package/src/mermaid/index.ts +23 -0
  426. package/src/mermaid/mountDiagramSvg.ts +49 -0
  427. package/src/mermaid/renderMermaidDiagram.spec.ts +89 -0
  428. package/src/mermaid/renderMermaidDiagram.ts +78 -0
  429. package/src/renderer.spec.tsx +276 -0
  430. package/src/renderer.tsx +13 -1
  431. package/src/shared/colorRamps.ts +0 -10
  432. package/src/shared/cutoffGradient.ts +40 -0
  433. package/src/shiki/index.ts +7 -11
  434. package/src/stories/Blocks.stories.tsx +232 -0
  435. package/src/stories/Callouts.stories.tsx +147 -0
  436. package/src/stories/Code.stories.tsx +116 -0
  437. package/src/stories/Inline.stories.tsx +162 -0
  438. package/src/stories/Mdx.stories.tsx +107 -0
  439. package/src/stories/Media.stories.tsx +148 -0
  440. package/src/stories/Tables.stories.tsx +173 -0
  441. package/types/Aside/index.d.ts +11 -0
  442. package/types/Aside/index.d.ts.map +1 -0
  443. package/types/ExternalIcon/index.d.ts +2 -0
  444. package/types/ExternalIcon/index.d.ts.map +1 -0
  445. package/types/Hr/index.d.ts +2 -0
  446. package/types/Hr/index.d.ts.map +1 -0
  447. package/types/Li/index.d.ts +6 -0
  448. package/types/Li/index.d.ts.map +1 -0
  449. package/types/Markdown.d.ts +22 -0
  450. package/types/Markdown.d.ts.map +1 -0
  451. package/types/MarkdownSimpleTable/index.d.ts +16 -0
  452. package/types/MarkdownSimpleTable/index.d.ts.map +1 -0
  453. package/types/Mdx/index.d.ts +9 -0
  454. package/types/Mdx/index.d.ts.map +1 -0
  455. package/types/MdxCodeBlock/index.d.ts +7 -0
  456. package/types/MdxCodeBlock/index.d.ts.map +1 -0
  457. package/types/MdxCodeBlock/mdxCodeBlockContext.d.ts +13 -0
  458. package/types/MdxCodeBlock/mdxCodeBlockContext.d.ts.map +1 -0
  459. package/types/Notice/index.d.ts +12 -0
  460. package/types/Notice/index.d.ts.map +1 -0
  461. package/types/Table/index.d.ts +20 -0
  462. package/types/Table/index.d.ts.map +1 -0
  463. package/types/Tabs/index.d.ts +21 -0
  464. package/types/Tabs/index.d.ts.map +1 -0
  465. package/types/Ul/index.d.ts +6 -0
  466. package/types/Ul/index.d.ts.map +1 -0
  467. package/types/Video/index.d.ts +12 -0
  468. package/types/Video/index.d.ts.map +1 -0
  469. package/types/components/Blockquote.d.ts +3 -0
  470. package/types/components/Blockquote.d.ts.map +1 -0
  471. package/types/components/Break.d.ts +3 -0
  472. package/types/components/Break.d.ts.map +1 -0
  473. package/types/components/CodeBlock.d.ts +17 -0
  474. package/types/components/CodeBlock.d.ts.map +1 -0
  475. package/types/components/Heading.d.ts +3 -0
  476. package/types/components/Heading.d.ts.map +1 -0
  477. package/types/components/HorizontalRule.d.ts +3 -0
  478. package/types/components/HorizontalRule.d.ts.map +1 -0
  479. package/types/components/Image.d.ts +3 -0
  480. package/types/components/Image.d.ts.map +1 -0
  481. package/types/components/InlineCode.d.ts +12 -0
  482. package/types/components/InlineCode.d.ts.map +1 -0
  483. package/types/components/InlineStyles.d.ts +5 -0
  484. package/types/components/InlineStyles.d.ts.map +1 -0
  485. package/types/components/Link.d.ts +3 -0
  486. package/types/components/Link.d.ts.map +1 -0
  487. package/types/components/List.d.ts +10 -0
  488. package/types/components/List.d.ts.map +1 -0
  489. package/types/components/Paragraph.d.ts +3 -0
  490. package/types/components/Paragraph.d.ts.map +1 -0
  491. package/types/components/Table.d.ts +13 -0
  492. package/types/components/Table.d.ts.map +1 -0
  493. package/types/components/index.d.ts +13 -0
  494. package/types/components/index.d.ts.map +1 -0
  495. package/types/hooks/index.d.ts +4 -0
  496. package/types/hooks/index.d.ts.map +1 -0
  497. package/types/hooks/useCompileAndEvaluateMdx.d.ts +9 -0
  498. package/types/hooks/useCompileAndEvaluateMdx.d.ts.map +1 -0
  499. package/types/hooks/useCompileMdx.d.ts +13 -0
  500. package/types/hooks/useCompileMdx.d.ts.map +1 -0
  501. package/types/hooks/useEvaluateMdx.d.ts +5 -0
  502. package/types/hooks/useEvaluateMdx.d.ts.map +1 -0
  503. package/types/icons/index.d.ts +12 -0
  504. package/types/icons/index.d.ts.map +1 -0
  505. package/types/index.d.ts +29 -0
  506. package/types/index.d.ts.map +1 -0
  507. package/types/mdxComponents.d.ts +8 -0
  508. package/types/mdxComponents.d.ts.map +1 -0
  509. package/types/mermaid/MermaidBlock.d.ts +15 -0
  510. package/types/mermaid/MermaidBlock.d.ts.map +1 -0
  511. package/types/mermaid/MermaidBlock.native.d.ts +10 -0
  512. package/types/mermaid/MermaidBlock.native.d.ts.map +1 -0
  513. package/types/mermaid/index.d.ts +18 -0
  514. package/types/mermaid/index.d.ts.map +1 -0
  515. package/types/mermaid/mountDiagramSvg.d.ts +11 -0
  516. package/types/mermaid/mountDiagramSvg.d.ts.map +1 -0
  517. package/types/mermaid/renderMermaidDiagram.d.ts +33 -0
  518. package/types/mermaid/renderMermaidDiagram.d.ts.map +1 -0
  519. package/types/parser.d.ts +11 -0
  520. package/types/parser.d.ts.map +1 -0
  521. package/types/renderer.d.ts +32 -0
  522. package/types/renderer.d.ts.map +1 -0
  523. package/types/shared/colorRamps.d.ts +39 -0
  524. package/types/shared/colorRamps.d.ts.map +1 -0
  525. package/types/shared/cutoffGradient.d.ts +12 -0
  526. package/types/shared/cutoffGradient.d.ts.map +1 -0
  527. package/types/shared/index.d.ts +2 -0
  528. package/types/shared/index.d.ts.map +1 -0
  529. package/types/shiki/index.d.ts +8 -0
  530. package/types/shiki/index.d.ts.map +1 -0
  531. package/types/types.d.ts +160 -0
  532. package/types/types.d.ts.map +1 -0
  533. package/types/util/rehypeMetaAttributes.d.ts +2 -0
  534. package/types/util/rehypeMetaAttributes.d.ts.map +1 -0
  535. package/dist/cjs/ExternalIcon/ExternalIcon.spec.cjs +0 -37
  536. package/dist/cjs/ExternalIcon/ExternalIcon.spec.native.js +0 -40
  537. package/dist/cjs/ExternalIcon/ExternalIcon.spec.native.js.map +0 -1
  538. package/dist/cjs/Hr/hr.spec.cjs +0 -21
  539. package/dist/cjs/Hr/hr.spec.native.js +0 -24
  540. package/dist/cjs/Hr/hr.spec.native.js.map +0 -1
  541. package/dist/cjs/Li/li.spec.cjs +0 -45
  542. package/dist/cjs/Li/li.spec.native.js +0 -50
  543. package/dist/cjs/Li/li.spec.native.js.map +0 -1
  544. package/dist/cjs/Markdown.stories.cjs +0 -153
  545. package/dist/cjs/Markdown.stories.native.js +0 -162
  546. package/dist/cjs/Markdown.stories.native.js.map +0 -1
  547. package/dist/cjs/Mdx/mdx.spec.cjs +0 -139
  548. package/dist/cjs/Mdx/mdx.spec.native.js +0 -158
  549. package/dist/cjs/Mdx/mdx.spec.native.js.map +0 -1
  550. package/dist/cjs/MdxCodeBlock/mdxCodeBlock.spec.cjs +0 -90
  551. package/dist/cjs/MdxCodeBlock/mdxCodeBlock.spec.native.js +0 -122
  552. package/dist/cjs/MdxCodeBlock/mdxCodeBlock.spec.native.js.map +0 -1
  553. package/dist/cjs/SimpleTable/index.native.js.map +0 -1
  554. package/dist/cjs/Ul/ul.spec.cjs +0 -150
  555. package/dist/cjs/Ul/ul.spec.native.js +0 -153
  556. package/dist/cjs/Ul/ul.spec.native.js.map +0 -1
  557. package/dist/cjs/hooks/useCompileAndEvaluateMdx.spec.cjs +0 -34
  558. package/dist/cjs/hooks/useCompileAndEvaluateMdx.spec.native.js +0 -49
  559. package/dist/cjs/hooks/useCompileAndEvaluateMdx.spec.native.js.map +0 -1
  560. package/dist/cjs/mdx.spec.cjs +0 -400
  561. package/dist/cjs/mdx.spec.native.js +0 -465
  562. package/dist/cjs/mdx.spec.native.js.map +0 -1
  563. package/dist/cjs/parser.spec.cjs +0 -109
  564. package/dist/cjs/parser.spec.native.js +0 -114
  565. package/dist/cjs/parser.spec.native.js.map +0 -1
  566. package/dist/cjs/shiki/highlighter.cjs +0 -89
  567. package/dist/cjs/shiki/highlighter.native.js +0 -94
  568. package/dist/cjs/shiki/highlighter.native.js.map +0 -1
  569. package/dist/cjs/util/util.spec.cjs +0 -81
  570. package/dist/cjs/util/util.spec.native.js +0 -84
  571. package/dist/cjs/util/util.spec.native.js.map +0 -1
  572. package/dist/esm/ExternalIcon/ExternalIcon.spec.mjs +0 -38
  573. package/dist/esm/ExternalIcon/ExternalIcon.spec.mjs.map +0 -1
  574. package/dist/esm/ExternalIcon/ExternalIcon.spec.native.js +0 -38
  575. package/dist/esm/ExternalIcon/ExternalIcon.spec.native.js.map +0 -1
  576. package/dist/esm/Hr/hr.spec.mjs +0 -22
  577. package/dist/esm/Hr/hr.spec.mjs.map +0 -1
  578. package/dist/esm/Hr/hr.spec.native.js +0 -22
  579. package/dist/esm/Hr/hr.spec.native.js.map +0 -1
  580. package/dist/esm/Li/li.spec.mjs +0 -46
  581. package/dist/esm/Li/li.spec.mjs.map +0 -1
  582. package/dist/esm/Li/li.spec.native.js +0 -48
  583. package/dist/esm/Li/li.spec.native.js.map +0 -1
  584. package/dist/esm/Markdown.stories.mjs +0 -125
  585. package/dist/esm/Markdown.stories.mjs.map +0 -1
  586. package/dist/esm/Markdown.stories.native.js +0 -131
  587. package/dist/esm/Markdown.stories.native.js.map +0 -1
  588. package/dist/esm/Mdx/mdx.spec.mjs +0 -140
  589. package/dist/esm/Mdx/mdx.spec.mjs.map +0 -1
  590. package/dist/esm/Mdx/mdx.spec.native.js +0 -156
  591. package/dist/esm/Mdx/mdx.spec.native.js.map +0 -1
  592. package/dist/esm/MdxCodeBlock/mdxCodeBlock.spec.mjs +0 -91
  593. package/dist/esm/MdxCodeBlock/mdxCodeBlock.spec.mjs.map +0 -1
  594. package/dist/esm/MdxCodeBlock/mdxCodeBlock.spec.native.js +0 -96
  595. package/dist/esm/MdxCodeBlock/mdxCodeBlock.spec.native.js.map +0 -1
  596. package/dist/esm/SimpleTable/index.mjs.map +0 -1
  597. package/dist/esm/SimpleTable/index.native.js.map +0 -1
  598. package/dist/esm/Ul/ul.spec.mjs +0 -151
  599. package/dist/esm/Ul/ul.spec.mjs.map +0 -1
  600. package/dist/esm/Ul/ul.spec.native.js +0 -151
  601. package/dist/esm/Ul/ul.spec.native.js.map +0 -1
  602. package/dist/esm/hooks/useCompileAndEvaluateMdx.spec.mjs +0 -35
  603. package/dist/esm/hooks/useCompileAndEvaluateMdx.spec.mjs.map +0 -1
  604. package/dist/esm/hooks/useCompileAndEvaluateMdx.spec.native.js +0 -47
  605. package/dist/esm/hooks/useCompileAndEvaluateMdx.spec.native.js.map +0 -1
  606. package/dist/esm/mdx.spec.mjs +0 -377
  607. package/dist/esm/mdx.spec.mjs.map +0 -1
  608. package/dist/esm/mdx.spec.native.js +0 -439
  609. package/dist/esm/mdx.spec.native.js.map +0 -1
  610. package/dist/esm/parser.spec.mjs +0 -110
  611. package/dist/esm/parser.spec.mjs.map +0 -1
  612. package/dist/esm/parser.spec.native.js +0 -112
  613. package/dist/esm/parser.spec.native.js.map +0 -1
  614. package/dist/esm/shiki/highlighter.mjs +0 -59
  615. package/dist/esm/shiki/highlighter.mjs.map +0 -1
  616. package/dist/esm/shiki/highlighter.native.js +0 -61
  617. package/dist/esm/shiki/highlighter.native.js.map +0 -1
  618. package/dist/esm/util/util.spec.mjs +0 -82
  619. package/dist/esm/util/util.spec.mjs.map +0 -1
  620. package/dist/esm/util/util.spec.native.js +0 -82
  621. package/dist/esm/util/util.spec.native.js.map +0 -1
  622. package/dist/jsx/ExternalIcon/ExternalIcon.spec.mjs +0 -38
  623. package/dist/jsx/ExternalIcon/ExternalIcon.spec.mjs.map +0 -1
  624. package/dist/jsx/ExternalIcon/ExternalIcon.spec.native.js +0 -40
  625. package/dist/jsx/ExternalIcon/ExternalIcon.spec.native.js.map +0 -1
  626. package/dist/jsx/Hr/hr.spec.mjs +0 -22
  627. package/dist/jsx/Hr/hr.spec.mjs.map +0 -1
  628. package/dist/jsx/Hr/hr.spec.native.js +0 -24
  629. package/dist/jsx/Hr/hr.spec.native.js.map +0 -1
  630. package/dist/jsx/Li/li.spec.mjs +0 -46
  631. package/dist/jsx/Li/li.spec.mjs.map +0 -1
  632. package/dist/jsx/Li/li.spec.native.js +0 -50
  633. package/dist/jsx/Li/li.spec.native.js.map +0 -1
  634. package/dist/jsx/Markdown.stories.mjs +0 -125
  635. package/dist/jsx/Markdown.stories.mjs.map +0 -1
  636. package/dist/jsx/Markdown.stories.native.js +0 -162
  637. package/dist/jsx/Markdown.stories.native.js.map +0 -1
  638. package/dist/jsx/Mdx/mdx.spec.mjs +0 -140
  639. package/dist/jsx/Mdx/mdx.spec.mjs.map +0 -1
  640. package/dist/jsx/Mdx/mdx.spec.native.js +0 -158
  641. package/dist/jsx/Mdx/mdx.spec.native.js.map +0 -1
  642. package/dist/jsx/MdxCodeBlock/mdxCodeBlock.spec.mjs +0 -91
  643. package/dist/jsx/MdxCodeBlock/mdxCodeBlock.spec.mjs.map +0 -1
  644. package/dist/jsx/MdxCodeBlock/mdxCodeBlock.spec.native.js +0 -122
  645. package/dist/jsx/MdxCodeBlock/mdxCodeBlock.spec.native.js.map +0 -1
  646. package/dist/jsx/SimpleTable/index.mjs.map +0 -1
  647. package/dist/jsx/SimpleTable/index.native.js.map +0 -1
  648. package/dist/jsx/Ul/ul.spec.mjs +0 -151
  649. package/dist/jsx/Ul/ul.spec.mjs.map +0 -1
  650. package/dist/jsx/Ul/ul.spec.native.js +0 -153
  651. package/dist/jsx/Ul/ul.spec.native.js.map +0 -1
  652. package/dist/jsx/hooks/useCompileAndEvaluateMdx.spec.mjs +0 -35
  653. package/dist/jsx/hooks/useCompileAndEvaluateMdx.spec.mjs.map +0 -1
  654. package/dist/jsx/hooks/useCompileAndEvaluateMdx.spec.native.js +0 -49
  655. package/dist/jsx/hooks/useCompileAndEvaluateMdx.spec.native.js.map +0 -1
  656. package/dist/jsx/mdx.spec.mjs +0 -377
  657. package/dist/jsx/mdx.spec.mjs.map +0 -1
  658. package/dist/jsx/mdx.spec.native.js +0 -465
  659. package/dist/jsx/mdx.spec.native.js.map +0 -1
  660. package/dist/jsx/parser.spec.mjs +0 -110
  661. package/dist/jsx/parser.spec.mjs.map +0 -1
  662. package/dist/jsx/parser.spec.native.js +0 -114
  663. package/dist/jsx/parser.spec.native.js.map +0 -1
  664. package/dist/jsx/shiki/highlighter.mjs +0 -59
  665. package/dist/jsx/shiki/highlighter.mjs.map +0 -1
  666. package/dist/jsx/shiki/highlighter.native.js +0 -94
  667. package/dist/jsx/shiki/highlighter.native.js.map +0 -1
  668. package/dist/jsx/util/util.spec.mjs +0 -82
  669. package/dist/jsx/util/util.spec.mjs.map +0 -1
  670. package/dist/jsx/util/util.spec.native.js +0 -84
  671. package/dist/jsx/util/util.spec.native.js.map +0 -1
  672. package/src/shiki/highlighter.ts +0 -148
@@ -0,0 +1,121 @@
1
+ /**
2
+ * LC-16 wrapper specs — the markdown package renders code blocks, inline
3
+ * code, and doc tabs through the canonical `@multiplatform.one/components`
4
+ * implementations (census items #9 / #12); these tests pin the wrappers to
5
+ * the canonical anatomy.
6
+ */
7
+
8
+ import { fireEvent, screen, waitFor } from "@testing-library/react";
9
+ import { renderWithProviders } from "@multiplatform.one/test-utils";
10
+ import { Text } from "tamagui";
11
+ import { describe, expect, it } from "vitest";
12
+ import { CodeBlock } from "./CodeBlock";
13
+ import { InlineCode } from "./InlineCode";
14
+ import { MDXTab, MDXTabs } from "../Tabs";
15
+
16
+ describe("markdown CodeBlock (canonical code family)", () => {
17
+ it("renders code content inside a real <code> element", async () => {
18
+ const { container } = renderWithProviders(
19
+ <CodeBlock lang="typescript">{"const x = 1;"}</CodeBlock>,
20
+ );
21
+ expect(container.querySelector("code")).toBeTruthy();
22
+ expect(container.textContent).toContain("const x = 1;");
23
+ });
24
+
25
+ it("tokenizes through the shared shiki stack (colored tokens appear)", async () => {
26
+ const { container } = renderWithProviders(
27
+ <CodeBlock lang="typescript">{"const x = 1;"}</CodeBlock>,
28
+ );
29
+ await waitFor(
30
+ () => {
31
+ const colored = Array.from(container.querySelectorAll("span")).some(
32
+ (el) => el.style.color !== "",
33
+ );
34
+ expect(colored).toBe(true);
35
+ },
36
+ { timeout: 30000 },
37
+ );
38
+ expect(container.textContent).toContain("const x = 1;");
39
+ }, 35000);
40
+
41
+ it("falls back to plain text for unknown languages", async () => {
42
+ const { container } = renderWithProviders(
43
+ <CodeBlock lang="not-a-real-language">{"plain fallback"}</CodeBlock>,
44
+ );
45
+ await waitFor(() => {
46
+ expect(container.textContent).toContain("plain fallback");
47
+ });
48
+ });
49
+ });
50
+
51
+ describe("markdown InlineCode (canonical CodeInline)", () => {
52
+ it("renders a real <code> element with the content", () => {
53
+ const { container } = renderWithProviders(<InlineCode>npm install</InlineCode>);
54
+ const code = container.querySelector("code");
55
+ expect(code).toBeTruthy();
56
+ expect(code!.textContent).toBe("npm install");
57
+ });
58
+ });
59
+
60
+ describe("MDXTabs (canonical Tabs)", () => {
61
+ const renderTabs = (defaultValue?: string) =>
62
+ renderWithProviders(
63
+ <MDXTabs items={["npm", "pnpm"]} defaultValue={defaultValue}>
64
+ {[
65
+ <MDXTab key="npm">
66
+ <Text>npm panel</Text>
67
+ </MDXTab>,
68
+ <MDXTab key="pnpm">
69
+ <Text>pnpm panel</Text>
70
+ </MDXTab>,
71
+ ]}
72
+ </MDXTabs>,
73
+ );
74
+
75
+ it("renders a real tablist with aria-selected tabs", () => {
76
+ renderTabs();
77
+ expect(screen.getByRole("tablist")).toBeInTheDocument();
78
+ const tabs = screen.getAllByRole("tab");
79
+ expect(tabs).toHaveLength(2);
80
+ expect(tabs[0]).toHaveAttribute("aria-selected", "true");
81
+ expect(screen.getByText("npm panel")).toBeInTheDocument();
82
+ });
83
+
84
+ it("switches panels on click", () => {
85
+ renderTabs();
86
+ fireEvent.click(screen.getByText("pnpm"));
87
+ expect(screen.getByText("pnpm panel")).toBeInTheDocument();
88
+ const tabs = screen.getAllByRole("tab");
89
+ expect(tabs[1]).toHaveAttribute("aria-selected", "true");
90
+ });
91
+
92
+ it("respects defaultValue addressed by label", () => {
93
+ renderTabs("pnpm");
94
+ expect(screen.getByText("pnpm panel")).toBeInTheDocument();
95
+ });
96
+
97
+ it("handles duplicate labels via index-suffixed values", () => {
98
+ renderWithProviders(
99
+ <MDXTabs items={["same", "same"]}>
100
+ {[
101
+ <MDXTab key="a">
102
+ <Text>first panel</Text>
103
+ </MDXTab>,
104
+ <MDXTab key="b">
105
+ <Text>second panel</Text>
106
+ </MDXTab>,
107
+ ]}
108
+ </MDXTabs>,
109
+ );
110
+ const tabs = screen.getAllByRole("tab");
111
+ expect(tabs).toHaveLength(2);
112
+ fireEvent.click(tabs[1]!);
113
+ expect(screen.getByText("second panel")).toBeInTheDocument();
114
+ });
115
+
116
+ it("renders nothing dangerous for empty items", () => {
117
+ const { container } = renderWithProviders(<MDXTabs items={[]}>{[]}</MDXTabs>);
118
+ expect(container).toBeTruthy();
119
+ expect(screen.queryAllByRole("tab")).toHaveLength(0);
120
+ });
121
+ });
@@ -0,0 +1,85 @@
1
+ /**
2
+ * Doc building-block specs — the MDX-facing blocks docs compose directly:
3
+ * `Video` (web <video> anatomy + SB-M-1227 empty-src omission), `MDXAside`
4
+ * (cutoff + "Show more" expansion) and `MDXNote` (Alert-based note box).
5
+ */
6
+
7
+ import { fireEvent, screen } from "@testing-library/react";
8
+ import { renderWithProviders } from "@multiplatform.one/test-utils";
9
+ import { Text } from "tamagui";
10
+ import { describe, expect, it } from "vitest";
11
+ import { MDXAside, MDXNote } from "./Aside";
12
+ import { Video } from "./Video";
13
+
14
+ describe("Video (web)", () => {
15
+ it("renders a muted, autoplaying, looping inline <video> inside a figure", () => {
16
+ const { container } = renderWithProviders(<Video src="https://example.com/clip.mp4" />);
17
+ expect(container.querySelector("figure")).toBeTruthy();
18
+ const video = container.querySelector("video");
19
+ expect(video).toBeTruthy();
20
+ expect(video!.getAttribute("src")).toBe("https://example.com/clip.mp4");
21
+ // Boolean media attributes reflect the safe-autoplay defaults.
22
+ expect(video!.hasAttribute("autoplay")).toBe(true);
23
+ expect(video!.hasAttribute("loop")).toBe(true);
24
+ expect(video!.hasAttribute("playsinline")).toBe(true);
25
+ expect(video!.hasAttribute("controls")).toBe(false);
26
+ });
27
+
28
+ it("omits the <video> element entirely for an empty src (SB-M-1227)", () => {
29
+ const { container } = renderWithProviders(<Video src="" />);
30
+ expect(container.querySelector("video")).toBeNull();
31
+ expect(container.querySelector("figure")).toBeTruthy();
32
+ });
33
+
34
+ it("forwards controls/poster and renders children as a figcaption", () => {
35
+ const { container } = renderWithProviders(
36
+ <Video src="https://example.com/clip.mp4" controls poster="https://example.com/poster.png">
37
+ A demo caption
38
+ </Video>,
39
+ );
40
+ const video = container.querySelector("video");
41
+ expect(video!.hasAttribute("controls")).toBe(true);
42
+ expect(video!.getAttribute("poster")).toBe("https://example.com/poster.png");
43
+ const caption = container.querySelector("figcaption");
44
+ expect(caption).toBeTruthy();
45
+ expect(caption!.textContent).toBe("A demo caption");
46
+ });
47
+
48
+ it("renders no figcaption without children", () => {
49
+ const { container } = renderWithProviders(<Video src="https://example.com/clip.mp4" />);
50
+ expect(container.querySelector("figcaption")).toBeNull();
51
+ });
52
+ });
53
+
54
+ describe("MDXAside", () => {
55
+ it("renders string content as a plain aside without a cutoff", () => {
56
+ const { container } = renderWithProviders(<MDXAside>just a note</MDXAside>);
57
+ expect(container.querySelector("aside")).toBeTruthy();
58
+ expect(container.textContent).toContain("just a note");
59
+ expect(screen.queryByText("Show more")).toBeNull();
60
+ });
61
+
62
+ it("cuts off unmeasured element content and expands on Show more", () => {
63
+ renderWithProviders(
64
+ <MDXAside>
65
+ <Text>long embedded content</Text>
66
+ </MDXAside>,
67
+ );
68
+ // Content is still rendered inside the clipped container...
69
+ expect(screen.getByText("long embedded content")).toBeTruthy();
70
+ // ...with the expansion affordance visible.
71
+ const showMore = screen.getByText("Show more");
72
+ expect(showMore).toBeTruthy();
73
+ fireEvent.click(showMore);
74
+ expect(screen.queryByText("Show more")).toBeNull();
75
+ expect(screen.getByText("long embedded content")).toBeTruthy();
76
+ });
77
+ });
78
+
79
+ describe("MDXNote", () => {
80
+ it("renders note content inside an aside", () => {
81
+ const { container } = renderWithProviders(<MDXNote>remember this</MDXNote>);
82
+ expect(container.querySelector("aside")).toBeTruthy();
83
+ expect(container.textContent).toContain("remember this");
84
+ });
85
+ });
@@ -1,5 +1,35 @@
1
1
  import { useEffect, useState } from "react";
2
2
 
3
+ const logger = console;
4
+
5
+ const frontmatterRegex = /^---\r?\n([\s\S]*?)\r?\n---\r?\n?/;
6
+
7
+ /**
8
+ * Minimal browser-safe frontmatter parser (gray-matter depends on Buffer,
9
+ * which does not exist in the browser). Handles simple `key: value` YAML.
10
+ */
11
+ export function parseFrontmatter(source: string): {
12
+ content: string;
13
+ data: Record<string, any>;
14
+ } {
15
+ const match = source.match(frontmatterRegex);
16
+ if (!match) return { content: source, data: {} };
17
+ const data: Record<string, any> = {};
18
+ for (const line of match[1].split(/\r?\n/)) {
19
+ const separatorIndex = line.indexOf(":");
20
+ if (separatorIndex <= 0) continue;
21
+ const key = line.slice(0, separatorIndex).trim();
22
+ let value: any = line.slice(separatorIndex + 1).trim();
23
+ if (/^(["']).*\1$/.test(value)) value = value.slice(1, -1);
24
+ else if (value === "true") value = true;
25
+ else if (value === "false") value = false;
26
+ else if (value === "null") value = null;
27
+ else if (value !== "" && !Number.isNaN(Number(value))) value = Number(value);
28
+ data[key] = value;
29
+ }
30
+ return { content: source.slice(match[0].length), data };
31
+ }
32
+
3
33
  export function useCompileMdx(
4
34
  source: string,
5
35
  options?: Record<string, any>,
@@ -11,43 +41,53 @@ export function useCompileMdx(
11
41
  const [frontmatter, setFrontmatter] = useState<Record<string, any> | undefined>();
12
42
 
13
43
  useEffect(() => {
44
+ let cancelled = false;
14
45
  (async () => {
15
- const [
16
- { compile },
17
- { default: grayMatter },
18
- { default: rehypeAutolinkHeadings },
19
- { default: rehypeSlug },
20
- { default: remarkFrontmatter },
21
- { default: remarkMdxFrontmatter },
22
- { rehypeMetaAttributes },
23
- ] = await Promise.all([
24
- import("@mdx-js/mdx"),
25
- import("gray-matter"),
26
- import("rehype-autolink-headings"),
27
- import("rehype-slug"),
28
- import("remark-frontmatter"),
29
- import("remark-mdx-frontmatter"),
30
- import("../util/rehypeMetaAttributes"),
31
- ]);
32
- const { value } = await compile(source, {
33
- ...options,
34
- development: false,
35
- outputFormat: "function-body",
36
- remarkPlugins: [
37
- ...(options?.remarkPlugins || []),
38
- [remarkMdxFrontmatter, { name: "frontmatter" }],
39
- remarkFrontmatter,
40
- ],
41
- rehypePlugins: [
42
- ...(options?.rehypePlugins || []),
43
- rehypeAutolinkHeadings,
44
- rehypeMetaAttributes,
45
- rehypeSlug,
46
- ],
47
- });
48
- setCode(value.toString());
49
- setFrontmatter(grayMatter(source));
46
+ try {
47
+ const [
48
+ { compile },
49
+ { default: rehypeAutolinkHeadings },
50
+ { default: rehypeSlug },
51
+ { default: remarkFrontmatter },
52
+ { default: remarkMdxFrontmatter },
53
+ { rehypeMetaAttributes },
54
+ ] = await Promise.all([
55
+ import("@mdx-js/mdx"),
56
+ import("rehype-autolink-headings"),
57
+ import("rehype-slug"),
58
+ import("remark-frontmatter"),
59
+ import("remark-mdx-frontmatter"),
60
+ import("../util/rehypeMetaAttributes"),
61
+ ]);
62
+ const { value } = await compile(source, {
63
+ ...options,
64
+ development: false,
65
+ outputFormat: "function-body",
66
+ remarkPlugins: [
67
+ ...(options?.remarkPlugins || []),
68
+ [remarkMdxFrontmatter, { name: "frontmatter" }],
69
+ remarkFrontmatter,
70
+ ],
71
+ rehypePlugins: [
72
+ ...(options?.rehypePlugins || []),
73
+ rehypeAutolinkHeadings,
74
+ rehypeMetaAttributes,
75
+ rehypeSlug,
76
+ ],
77
+ });
78
+ if (cancelled) return;
79
+ setCode(value.toString());
80
+ setFrontmatter(parseFrontmatter(source));
81
+ } catch (err) {
82
+ if (cancelled) return;
83
+ logger.error("useCompileMdx: failed to compile MDX source", err);
84
+ setCode(undefined);
85
+ setFrontmatter(undefined);
86
+ }
50
87
  })();
88
+ return () => {
89
+ cancelled = true;
90
+ };
51
91
  }, [source, options]);
52
92
 
53
93
  if (!code || !frontmatter) return {};
@@ -8,7 +8,13 @@ export function useEvaluateMdx(code?: string, options?: Record<string, any>) {
8
8
 
9
9
  useEffect(() => {
10
10
  if (!code) return;
11
- setComponent(() => evaluateMdx(code, options));
11
+ try {
12
+ const Evaluated = evaluateMdx(code, options);
13
+ setComponent(() => Evaluated);
14
+ } catch (err) {
15
+ console.error("useEvaluateMdx: failed to evaluate compiled MDX", err);
16
+ setComponent(undefined);
17
+ }
12
18
  }, [code, options]);
13
19
 
14
20
  return Component;
@@ -1,4 +1,4 @@
1
- import { Circle, Line, Path, Polyline, Rect, Svg } from "@tamagui/react-native-svg";
1
+ import { Circle, Path, Rect, Svg } from "@tamagui/react-native-svg";
2
2
  import { useTheme } from "tamagui";
3
3
 
4
4
  interface IconProps {
@@ -6,9 +6,20 @@ interface IconProps {
6
6
  color?: string;
7
7
  }
8
8
 
9
- export function ClipboardIcon({ size = 16, color }: IconProps) {
9
+ /**
10
+ * Resolve theme tokens like "$color10" to concrete values — raw SVG stroke
11
+ * attributes cannot consume unresolved token strings (SB-M-1206).
12
+ */
13
+ function useIconColor(color?: string): string {
10
14
  const theme = useTheme();
11
- const fill = color ?? theme.color?.val ?? "currentColor";
15
+ if (color?.startsWith("$")) {
16
+ return (theme as any)[color.slice(1)]?.val ?? theme.color?.val ?? "currentColor";
17
+ }
18
+ return color ?? theme.color?.val ?? "currentColor";
19
+ }
20
+
21
+ export function ClipboardIcon({ size = 16, color }: IconProps) {
22
+ const fill = useIconColor(color);
12
23
  return (
13
24
  <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
14
25
  <Rect x="9" y="2" width="6" height="4" rx="1" stroke={fill} strokeWidth={2} />
@@ -21,16 +32,18 @@ export function ClipboardIcon({ size = 16, color }: IconProps) {
21
32
  );
22
33
  }
23
34
 
24
- export function CheckCircleIcon({ size = 16, color }: IconProps) {
25
- const theme = useTheme();
26
- const fill = color ?? theme.color?.val ?? "currentColor";
35
+ export function CheckIcon({
36
+ size = 16,
37
+ color,
38
+ strokeWidth = 2.5,
39
+ }: IconProps & { strokeWidth?: number }) {
40
+ const stroke = useIconColor(color);
27
41
  return (
28
42
  <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
29
- <Circle cx="12" cy="12" r="10" stroke={fill} strokeWidth={2} />
30
43
  <Path
31
- d="M9 12l2 2 4-4"
32
- stroke={fill}
33
- strokeWidth={2}
44
+ d="M4.5 12.75l5.25 5.25L19.5 7.5"
45
+ stroke={stroke}
46
+ strokeWidth={strokeWidth}
34
47
  strokeLinecap="round"
35
48
  strokeLinejoin="round"
36
49
  />
@@ -38,20 +51,13 @@ export function CheckCircleIcon({ size = 16, color }: IconProps) {
38
51
  );
39
52
  }
40
53
 
41
- export function LinkIcon({ size = 12, color }: IconProps) {
42
- const theme = useTheme();
43
- const fill = color ?? theme.color?.val ?? "currentColor";
54
+ export function CheckCircleIcon({ size = 16, color }: IconProps) {
55
+ const fill = useIconColor(color);
44
56
  return (
45
57
  <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
58
+ <Circle cx="12" cy="12" r="10" stroke={fill} strokeWidth={2} />
46
59
  <Path
47
- d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"
48
- stroke={fill}
49
- strokeWidth={2}
50
- strokeLinecap="round"
51
- strokeLinejoin="round"
52
- />
53
- <Path
54
- d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"
60
+ d="M9 12l2 2 4-4"
55
61
  stroke={fill}
56
62
  strokeWidth={2}
57
63
  strokeLinecap="round"
@@ -61,51 +67,19 @@ export function LinkIcon({ size = 12, color }: IconProps) {
61
67
  );
62
68
  }
63
69
 
64
- export function AlertTriangleIcon({ size = 16, color }: IconProps) {
65
- const theme = useTheme();
66
- const fill = color ?? theme.color?.val ?? "currentColor";
70
+ export function LinkIcon({ size = 12, color }: IconProps) {
71
+ const fill = useIconColor(color);
67
72
  return (
68
73
  <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
69
74
  <Path
70
- d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"
75
+ d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"
71
76
  stroke={fill}
72
77
  strokeWidth={2}
73
78
  strokeLinecap="round"
74
79
  strokeLinejoin="round"
75
80
  />
76
- <Line x1="12" y1="9" x2="12" y2="13" stroke={fill} strokeWidth={2} strokeLinecap="round" />
77
- <Line
78
- x1="12"
79
- y1="17"
80
- x2="12.01"
81
- y2="17"
82
- stroke={fill}
83
- strokeWidth={2}
84
- strokeLinecap="round"
85
- />
86
- </Svg>
87
- );
88
- }
89
-
90
- export function InfoIcon({ size = 16, color }: IconProps) {
91
- const theme = useTheme();
92
- const fill = color ?? theme.color?.val ?? "currentColor";
93
- return (
94
- <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
95
- <Circle cx="12" cy="12" r="10" stroke={fill} strokeWidth={2} />
96
- <Line x1="12" y1="16" x2="12" y2="12" stroke={fill} strokeWidth={2} strokeLinecap="round" />
97
- <Line x1="12" y1="8" x2="12.01" y2="8" stroke={fill} strokeWidth={2} strokeLinecap="round" />
98
- </Svg>
99
- );
100
- }
101
-
102
- export function ChevronRightIcon({ size = 16, color }: IconProps) {
103
- const theme = useTheme();
104
- const fill = color ?? theme.color?.val ?? "currentColor";
105
- return (
106
- <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
107
- <Polyline
108
- points="9,18 15,12 9,6"
81
+ <Path
82
+ d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"
109
83
  stroke={fill}
110
84
  strokeWidth={2}
111
85
  strokeLinecap="round"
@@ -114,3 +88,7 @@ export function ChevronRightIcon({ size = 16, color }: IconProps) {
114
88
  </Svg>
115
89
  );
116
90
  }
91
+
92
+ // AlertTriangleIcon / InfoIcon / ChevronRightIcon were removed in the
93
+ // duplication census: they duplicated the catalog's intent icons and were
94
+ // orphaned when markdown's Notice was replaced by the catalog Alert.
package/src/index.ts CHANGED
@@ -12,8 +12,20 @@ export type { MarkdownProps, CodeTheme } from "./types";
12
12
  export { parseMarkdown } from "./parser";
13
13
  export { renderMarkdown } from "./renderer";
14
14
 
15
- // Shiki syntax highlighting
16
- export { highlightCode, getHighlighter, type ThemedToken, type BundledTheme } from "./shiki";
15
+ // Mermaid diagrams — canonical lazy renderer (LC-16), shared with the
16
+ // rich-text editor's live code-block preview (which imports the
17
+ // dependency-free "./mermaid" subpath instead of this barrel)
18
+ export * from "./mermaid";
19
+ export { MermaidBlock, type MermaidBlockProps } from "./mermaid/MermaidBlock";
20
+
21
+ // Shiki syntax highlighting — canonical stack lives in
22
+ // @multiplatform.one/components (LC-16); re-exported for compatibility.
23
+ export {
24
+ highlightCode,
25
+ type HighlightLine,
26
+ type HighlightToken,
27
+ } from "@multiplatform.one/components";
28
+ export type { BundledLanguage, BundledTheme } from "shiki";
17
29
 
18
30
  // MDX components
19
31
  export * from "./Aside";
@@ -22,11 +34,11 @@ export * from "./hooks";
22
34
  export * from "./Hr";
23
35
  export * from "./icons";
24
36
  export * from "./Li";
37
+ export * from "./MarkdownSimpleTable";
25
38
  export * from "./Mdx";
26
39
  export * from "./MdxCodeBlock";
27
40
  export * from "./mdxComponents";
28
41
  export * from "./Notice";
29
- export * from "./SimpleTable";
30
42
  export * from "./Table";
31
43
  export * from "./Tabs";
32
44
  export * from "./Ul";
@@ -0,0 +1,58 @@
1
+ /**
2
+ * <Markdown> component specs — the string-in, UI-out entry point. Locks down:
3
+ * string children parse + render, non-string children render nothing instead
4
+ * of crashing, and custom components reach the renderer.
5
+ */
6
+
7
+ import { renderWithProviders } from "@multiplatform.one/test-utils";
8
+ import { Text, View } from "tamagui";
9
+ import { describe, expect, it } from "vitest";
10
+ import { Markdown } from "./Markdown";
11
+
12
+ describe("Markdown", () => {
13
+ it("parses and renders a markdown string", () => {
14
+ const { container } = renderWithProviders(
15
+ <Markdown>{"# Hello\n\nSome **bold** text."}</Markdown>,
16
+ );
17
+ expect(container.querySelector("h1")?.textContent).toBe("Hello");
18
+ expect(container.querySelector("strong")?.textContent).toBe("bold");
19
+ });
20
+
21
+ it("renders nothing (no crash) for non-string children", () => {
22
+ // Consumers sometimes pass elements by mistake; cast to exercise that path.
23
+ const notMarkdown = (
24
+ <View>
25
+ <Text>not markdown</Text>
26
+ </View>
27
+ ) as unknown as string;
28
+ const { container } = renderWithProviders(<Markdown>{notMarkdown}</Markdown>);
29
+ expect(container.textContent).not.toContain("not markdown");
30
+ });
31
+
32
+ it("renders nothing for empty children", () => {
33
+ const { container } = renderWithProviders(<Markdown>{""}</Markdown>);
34
+ expect(container.querySelector("h1")).toBeNull();
35
+ expect(container.querySelector("p")).toBeNull();
36
+ });
37
+
38
+ it("threads custom components through to the renderer", () => {
39
+ const { getByTestId } = renderWithProviders(
40
+ <Markdown
41
+ components={{
42
+ h1: ({ children }) => <Text data-testid="branded-h1">{children}</Text>,
43
+ }}
44
+ >
45
+ {"# Branded"}
46
+ </Markdown>,
47
+ );
48
+ expect(getByTestId("branded-h1").textContent).toBe("Branded");
49
+ });
50
+
51
+ it("spreads extra view props onto the wrapper", () => {
52
+ const { getByTestId } = renderWithProviders(
53
+ <Markdown data-testid="md-root">{"content"}</Markdown>,
54
+ );
55
+ expect(getByTestId("md-root")).toBeTruthy();
56
+ expect(getByTestId("md-root").textContent).toContain("content");
57
+ });
58
+ });
package/src/mdx.spec.tsx CHANGED
@@ -110,6 +110,10 @@ vi.mock("@tamagui/react-native-svg", () => ({
110
110
  Line: (props: any) => <line {...props} />,
111
111
  Rect: (props: any) => <rect {...props} />,
112
112
  Polyline: (props: any) => <polyline {...props} />,
113
+ // The components barrel (now in this spec's graph via the LC-16 code/tabs
114
+ // wrappers) pulls charts/svg.ts, which also needs G and Text.
115
+ G: ({ children, ...props }: any) => <g {...props}>{children}</g>,
116
+ Text: ({ children, ...props }: any) => <text {...props}>{children}</text>,
113
117
  }));
114
118
 
115
119
  describe("MDX Components", () => {