@multiplatform.one/markdown 6.0.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 (640) hide show
  1. package/LICENSE +201 -0
  2. package/dist/cjs/Aside/index.cjs +112 -0
  3. package/dist/cjs/Aside/index.native.js +119 -0
  4. package/dist/cjs/Aside/index.native.js.map +1 -0
  5. package/dist/cjs/ExternalIcon/ExternalIcon.spec.cjs +37 -0
  6. package/dist/cjs/ExternalIcon/ExternalIcon.spec.native.js +40 -0
  7. package/dist/cjs/ExternalIcon/ExternalIcon.spec.native.js.map +1 -0
  8. package/dist/cjs/ExternalIcon/index.cjs +46 -0
  9. package/dist/cjs/ExternalIcon/index.native.js +51 -0
  10. package/dist/cjs/ExternalIcon/index.native.js.map +1 -0
  11. package/dist/cjs/Hr/hr.spec.cjs +21 -0
  12. package/dist/cjs/Hr/hr.spec.native.js +24 -0
  13. package/dist/cjs/Hr/hr.spec.native.js.map +1 -0
  14. package/dist/cjs/Hr/index.cjs +41 -0
  15. package/dist/cjs/Hr/index.native.js +46 -0
  16. package/dist/cjs/Hr/index.native.js.map +1 -0
  17. package/dist/cjs/Li/index.cjs +38 -0
  18. package/dist/cjs/Li/index.native.js +41 -0
  19. package/dist/cjs/Li/index.native.js.map +1 -0
  20. package/dist/cjs/Li/li.spec.cjs +45 -0
  21. package/dist/cjs/Li/li.spec.native.js +50 -0
  22. package/dist/cjs/Li/li.spec.native.js.map +1 -0
  23. package/dist/cjs/Markdown.cjs +66 -0
  24. package/dist/cjs/Markdown.native.js +71 -0
  25. package/dist/cjs/Markdown.native.js.map +1 -0
  26. package/dist/cjs/Markdown.stories.cjs +153 -0
  27. package/dist/cjs/Markdown.stories.native.js +162 -0
  28. package/dist/cjs/Markdown.stories.native.js.map +1 -0
  29. package/dist/cjs/Mdx/index.cjs +58 -0
  30. package/dist/cjs/Mdx/index.native.js +62 -0
  31. package/dist/cjs/Mdx/index.native.js.map +1 -0
  32. package/dist/cjs/Mdx/mdx.spec.cjs +139 -0
  33. package/dist/cjs/Mdx/mdx.spec.native.js +158 -0
  34. package/dist/cjs/Mdx/mdx.spec.native.js.map +1 -0
  35. package/dist/cjs/MdxCodeBlock/index.cjs +185 -0
  36. package/dist/cjs/MdxCodeBlock/index.native.js +205 -0
  37. package/dist/cjs/MdxCodeBlock/index.native.js.map +1 -0
  38. package/dist/cjs/MdxCodeBlock/mdxCodeBlock.spec.cjs +90 -0
  39. package/dist/cjs/MdxCodeBlock/mdxCodeBlock.spec.native.js +122 -0
  40. package/dist/cjs/MdxCodeBlock/mdxCodeBlock.spec.native.js.map +1 -0
  41. package/dist/cjs/MdxCodeBlock/mdxCodeBlockContext.cjs +29 -0
  42. package/dist/cjs/MdxCodeBlock/mdxCodeBlockContext.native.js +32 -0
  43. package/dist/cjs/MdxCodeBlock/mdxCodeBlockContext.native.js.map +1 -0
  44. package/dist/cjs/Notice/index.cjs +94 -0
  45. package/dist/cjs/Notice/index.native.js +98 -0
  46. package/dist/cjs/Notice/index.native.js.map +1 -0
  47. package/dist/cjs/SimpleTable/index.cjs +132 -0
  48. package/dist/cjs/SimpleTable/index.native.js +162 -0
  49. package/dist/cjs/SimpleTable/index.native.js.map +1 -0
  50. package/dist/cjs/Table/index.cjs +121 -0
  51. package/dist/cjs/Table/index.native.js +130 -0
  52. package/dist/cjs/Table/index.native.js.map +1 -0
  53. package/dist/cjs/Tabs/index.cjs +93 -0
  54. package/dist/cjs/Tabs/index.native.js +103 -0
  55. package/dist/cjs/Tabs/index.native.js.map +1 -0
  56. package/dist/cjs/Ul/index.cjs +35 -0
  57. package/dist/cjs/Ul/index.native.js +38 -0
  58. package/dist/cjs/Ul/index.native.js.map +1 -0
  59. package/dist/cjs/Ul/ul.spec.cjs +150 -0
  60. package/dist/cjs/Ul/ul.spec.native.js +153 -0
  61. package/dist/cjs/Ul/ul.spec.native.js.map +1 -0
  62. package/dist/cjs/Video/index.cjs +84 -0
  63. package/dist/cjs/Video/index.native.js +89 -0
  64. package/dist/cjs/Video/index.native.js.map +1 -0
  65. package/dist/cjs/components/Blockquote.cjs +47 -0
  66. package/dist/cjs/components/Blockquote.native.js +51 -0
  67. package/dist/cjs/components/Blockquote.native.js.map +1 -0
  68. package/dist/cjs/components/Break.cjs +34 -0
  69. package/dist/cjs/components/Break.native.js +37 -0
  70. package/dist/cjs/components/Break.native.js.map +1 -0
  71. package/dist/cjs/components/CodeBlock.cjs +109 -0
  72. package/dist/cjs/components/CodeBlock.native.js +119 -0
  73. package/dist/cjs/components/CodeBlock.native.js.map +1 -0
  74. package/dist/cjs/components/Heading.cjs +48 -0
  75. package/dist/cjs/components/Heading.native.js +52 -0
  76. package/dist/cjs/components/Heading.native.js.map +1 -0
  77. package/dist/cjs/components/HorizontalRule.cjs +34 -0
  78. package/dist/cjs/components/HorizontalRule.native.js +37 -0
  79. package/dist/cjs/components/HorizontalRule.native.js.map +1 -0
  80. package/dist/cjs/components/Image.cjs +53 -0
  81. package/dist/cjs/components/Image.native.js +57 -0
  82. package/dist/cjs/components/Image.native.js.map +1 -0
  83. package/dist/cjs/components/InlineCode.cjs +48 -0
  84. package/dist/cjs/components/InlineCode.native.js +52 -0
  85. package/dist/cjs/components/InlineCode.native.js.map +1 -0
  86. package/dist/cjs/components/InlineStyles.cjs +55 -0
  87. package/dist/cjs/components/InlineStyles.native.js +61 -0
  88. package/dist/cjs/components/InlineStyles.native.js.map +1 -0
  89. package/dist/cjs/components/Link.cjs +54 -0
  90. package/dist/cjs/components/Link.native.js +58 -0
  91. package/dist/cjs/components/Link.native.js.map +1 -0
  92. package/dist/cjs/components/List.cjs +74 -0
  93. package/dist/cjs/components/List.native.js +79 -0
  94. package/dist/cjs/components/List.native.js.map +1 -0
  95. package/dist/cjs/components/Paragraph.cjs +38 -0
  96. package/dist/cjs/components/Paragraph.native.js +42 -0
  97. package/dist/cjs/components/Paragraph.native.js.map +1 -0
  98. package/dist/cjs/components/Table.cjs +86 -0
  99. package/dist/cjs/components/Table.native.js +92 -0
  100. package/dist/cjs/components/Table.native.js.map +1 -0
  101. package/dist/cjs/components/index.cjs +55 -0
  102. package/dist/cjs/components/index.native.js +58 -0
  103. package/dist/cjs/components/index.native.js.map +1 -0
  104. package/dist/cjs/hooks/index.cjs +22 -0
  105. package/dist/cjs/hooks/index.native.js +25 -0
  106. package/dist/cjs/hooks/index.native.js.map +1 -0
  107. package/dist/cjs/hooks/useCompileAndEvaluateMdx.cjs +42 -0
  108. package/dist/cjs/hooks/useCompileAndEvaluateMdx.native.js +45 -0
  109. package/dist/cjs/hooks/useCompileAndEvaluateMdx.native.js.map +1 -0
  110. package/dist/cjs/hooks/useCompileAndEvaluateMdx.spec.cjs +34 -0
  111. package/dist/cjs/hooks/useCompileAndEvaluateMdx.spec.native.js +49 -0
  112. package/dist/cjs/hooks/useCompileAndEvaluateMdx.spec.native.js.map +1 -0
  113. package/dist/cjs/hooks/useCompileMdx.cjs +80 -0
  114. package/dist/cjs/hooks/useCompileMdx.native.js +83 -0
  115. package/dist/cjs/hooks/useCompileMdx.native.js.map +1 -0
  116. package/dist/cjs/hooks/useEvaluateMdx.cjs +58 -0
  117. package/dist/cjs/hooks/useEvaluateMdx.native.js +63 -0
  118. package/dist/cjs/hooks/useEvaluateMdx.native.js.map +1 -0
  119. package/dist/cjs/icons/index.cjs +205 -0
  120. package/dist/cjs/icons/index.native.js +226 -0
  121. package/dist/cjs/icons/index.native.js.map +1 -0
  122. package/dist/cjs/index.cjs +51 -0
  123. package/dist/cjs/index.native.js +54 -0
  124. package/dist/cjs/index.native.js.map +1 -0
  125. package/dist/cjs/mdx.spec.cjs +400 -0
  126. package/dist/cjs/mdx.spec.native.js +465 -0
  127. package/dist/cjs/mdx.spec.native.js.map +1 -0
  128. package/dist/cjs/mdxComponents.cjs +317 -0
  129. package/dist/cjs/mdxComponents.native.js +376 -0
  130. package/dist/cjs/mdxComponents.native.js.map +1 -0
  131. package/dist/cjs/parser.cjs +49 -0
  132. package/dist/cjs/parser.native.js +52 -0
  133. package/dist/cjs/parser.native.js.map +1 -0
  134. package/dist/cjs/parser.spec.cjs +109 -0
  135. package/dist/cjs/parser.spec.native.js +114 -0
  136. package/dist/cjs/parser.spec.native.js.map +1 -0
  137. package/dist/cjs/renderer.cjs +326 -0
  138. package/dist/cjs/renderer.native.js +348 -0
  139. package/dist/cjs/renderer.native.js.map +1 -0
  140. package/dist/cjs/shared/colorRamps.cjs +74 -0
  141. package/dist/cjs/shared/colorRamps.native.js +77 -0
  142. package/dist/cjs/shared/colorRamps.native.js.map +1 -0
  143. package/dist/cjs/shared/index.cjs +20 -0
  144. package/dist/cjs/shared/index.native.js +23 -0
  145. package/dist/cjs/shared/index.native.js.map +1 -0
  146. package/dist/cjs/shiki/highlighter.cjs +89 -0
  147. package/dist/cjs/shiki/highlighter.native.js +94 -0
  148. package/dist/cjs/shiki/highlighter.native.js.map +1 -0
  149. package/dist/cjs/shiki/index.cjs +33 -0
  150. package/dist/cjs/shiki/index.native.js +36 -0
  151. package/dist/cjs/shiki/index.native.js.map +1 -0
  152. package/dist/cjs/types.cjs +18 -0
  153. package/dist/cjs/types.native.js +21 -0
  154. package/dist/cjs/types.native.js.map +1 -0
  155. package/dist/cjs/util/rehypeMetaAttributes.cjs +45 -0
  156. package/dist/cjs/util/rehypeMetaAttributes.native.js +49 -0
  157. package/dist/cjs/util/rehypeMetaAttributes.native.js.map +1 -0
  158. package/dist/cjs/util/util.spec.cjs +81 -0
  159. package/dist/cjs/util/util.spec.native.js +84 -0
  160. package/dist/cjs/util/util.spec.native.js.map +1 -0
  161. package/dist/esm/Aside/index.mjs +86 -0
  162. package/dist/esm/Aside/index.mjs.map +1 -0
  163. package/dist/esm/Aside/index.native.js +90 -0
  164. package/dist/esm/Aside/index.native.js.map +1 -0
  165. package/dist/esm/ExternalIcon/ExternalIcon.spec.mjs +38 -0
  166. package/dist/esm/ExternalIcon/ExternalIcon.spec.mjs.map +1 -0
  167. package/dist/esm/ExternalIcon/ExternalIcon.spec.native.js +38 -0
  168. package/dist/esm/ExternalIcon/ExternalIcon.spec.native.js.map +1 -0
  169. package/dist/esm/ExternalIcon/index.mjs +21 -0
  170. package/dist/esm/ExternalIcon/index.mjs.map +1 -0
  171. package/dist/esm/ExternalIcon/index.native.js +23 -0
  172. package/dist/esm/ExternalIcon/index.native.js.map +1 -0
  173. package/dist/esm/Hr/hr.spec.mjs +22 -0
  174. package/dist/esm/Hr/hr.spec.mjs.map +1 -0
  175. package/dist/esm/Hr/hr.spec.native.js +22 -0
  176. package/dist/esm/Hr/hr.spec.native.js.map +1 -0
  177. package/dist/esm/Hr/index.mjs +16 -0
  178. package/dist/esm/Hr/index.mjs.map +1 -0
  179. package/dist/esm/Hr/index.native.js +18 -0
  180. package/dist/esm/Hr/index.native.js.map +1 -0
  181. package/dist/esm/Li/index.mjs +13 -0
  182. package/dist/esm/Li/index.mjs.map +1 -0
  183. package/dist/esm/Li/index.native.js +13 -0
  184. package/dist/esm/Li/index.native.js.map +1 -0
  185. package/dist/esm/Li/li.spec.mjs +46 -0
  186. package/dist/esm/Li/li.spec.mjs.map +1 -0
  187. package/dist/esm/Li/li.spec.native.js +48 -0
  188. package/dist/esm/Li/li.spec.native.js.map +1 -0
  189. package/dist/esm/Markdown.mjs +41 -0
  190. package/dist/esm/Markdown.mjs.map +1 -0
  191. package/dist/esm/Markdown.native.js +43 -0
  192. package/dist/esm/Markdown.native.js.map +1 -0
  193. package/dist/esm/Markdown.stories.mjs +125 -0
  194. package/dist/esm/Markdown.stories.mjs.map +1 -0
  195. package/dist/esm/Markdown.stories.native.js +131 -0
  196. package/dist/esm/Markdown.stories.native.js.map +1 -0
  197. package/dist/esm/Mdx/index.mjs +33 -0
  198. package/dist/esm/Mdx/index.mjs.map +1 -0
  199. package/dist/esm/Mdx/index.native.js +34 -0
  200. package/dist/esm/Mdx/index.native.js.map +1 -0
  201. package/dist/esm/Mdx/mdx.spec.mjs +140 -0
  202. package/dist/esm/Mdx/mdx.spec.mjs.map +1 -0
  203. package/dist/esm/Mdx/mdx.spec.native.js +156 -0
  204. package/dist/esm/Mdx/mdx.spec.native.js.map +1 -0
  205. package/dist/esm/MdxCodeBlock/index.mjs +149 -0
  206. package/dist/esm/MdxCodeBlock/index.mjs.map +1 -0
  207. package/dist/esm/MdxCodeBlock/index.native.js +166 -0
  208. package/dist/esm/MdxCodeBlock/index.native.js.map +1 -0
  209. package/dist/esm/MdxCodeBlock/mdxCodeBlock.spec.mjs +91 -0
  210. package/dist/esm/MdxCodeBlock/mdxCodeBlock.spec.mjs.map +1 -0
  211. package/dist/esm/MdxCodeBlock/mdxCodeBlock.spec.native.js +96 -0
  212. package/dist/esm/MdxCodeBlock/mdxCodeBlock.spec.native.js.map +1 -0
  213. package/dist/esm/MdxCodeBlock/mdxCodeBlockContext.mjs +4 -0
  214. package/dist/esm/MdxCodeBlock/mdxCodeBlockContext.mjs.map +1 -0
  215. package/dist/esm/MdxCodeBlock/mdxCodeBlockContext.native.js +4 -0
  216. package/dist/esm/MdxCodeBlock/mdxCodeBlockContext.native.js.map +1 -0
  217. package/dist/esm/Notice/index.mjs +68 -0
  218. package/dist/esm/Notice/index.mjs.map +1 -0
  219. package/dist/esm/Notice/index.native.js +69 -0
  220. package/dist/esm/Notice/index.native.js.map +1 -0
  221. package/dist/esm/SimpleTable/index.mjs +107 -0
  222. package/dist/esm/SimpleTable/index.mjs.map +1 -0
  223. package/dist/esm/SimpleTable/index.native.js +134 -0
  224. package/dist/esm/SimpleTable/index.native.js.map +1 -0
  225. package/dist/esm/Table/index.mjs +91 -0
  226. package/dist/esm/Table/index.mjs.map +1 -0
  227. package/dist/esm/Table/index.native.js +97 -0
  228. package/dist/esm/Table/index.native.js.map +1 -0
  229. package/dist/esm/Tabs/index.mjs +67 -0
  230. package/dist/esm/Tabs/index.mjs.map +1 -0
  231. package/dist/esm/Tabs/index.native.js +74 -0
  232. package/dist/esm/Tabs/index.native.js.map +1 -0
  233. package/dist/esm/Ul/index.mjs +10 -0
  234. package/dist/esm/Ul/index.mjs.map +1 -0
  235. package/dist/esm/Ul/index.native.js +10 -0
  236. package/dist/esm/Ul/index.native.js.map +1 -0
  237. package/dist/esm/Ul/ul.spec.mjs +151 -0
  238. package/dist/esm/Ul/ul.spec.mjs.map +1 -0
  239. package/dist/esm/Ul/ul.spec.native.js +151 -0
  240. package/dist/esm/Ul/ul.spec.native.js.map +1 -0
  241. package/dist/esm/Video/index.mjs +59 -0
  242. package/dist/esm/Video/index.mjs.map +1 -0
  243. package/dist/esm/Video/index.native.js +61 -0
  244. package/dist/esm/Video/index.native.js.map +1 -0
  245. package/dist/esm/components/Blockquote.mjs +22 -0
  246. package/dist/esm/components/Blockquote.mjs.map +1 -0
  247. package/dist/esm/components/Blockquote.native.js +23 -0
  248. package/dist/esm/components/Blockquote.native.js.map +1 -0
  249. package/dist/esm/components/Break.mjs +9 -0
  250. package/dist/esm/components/Break.mjs.map +1 -0
  251. package/dist/esm/components/Break.native.js +9 -0
  252. package/dist/esm/components/Break.native.js.map +1 -0
  253. package/dist/esm/components/CodeBlock.mjs +84 -0
  254. package/dist/esm/components/CodeBlock.mjs.map +1 -0
  255. package/dist/esm/components/CodeBlock.native.js +91 -0
  256. package/dist/esm/components/CodeBlock.native.js.map +1 -0
  257. package/dist/esm/components/Heading.mjs +23 -0
  258. package/dist/esm/components/Heading.mjs.map +1 -0
  259. package/dist/esm/components/Heading.native.js +24 -0
  260. package/dist/esm/components/Heading.native.js.map +1 -0
  261. package/dist/esm/components/HorizontalRule.mjs +9 -0
  262. package/dist/esm/components/HorizontalRule.mjs.map +1 -0
  263. package/dist/esm/components/HorizontalRule.native.js +9 -0
  264. package/dist/esm/components/HorizontalRule.native.js.map +1 -0
  265. package/dist/esm/components/Image.mjs +28 -0
  266. package/dist/esm/components/Image.mjs.map +1 -0
  267. package/dist/esm/components/Image.native.js +29 -0
  268. package/dist/esm/components/Image.native.js.map +1 -0
  269. package/dist/esm/components/InlineCode.mjs +23 -0
  270. package/dist/esm/components/InlineCode.mjs.map +1 -0
  271. package/dist/esm/components/InlineCode.native.js +24 -0
  272. package/dist/esm/components/InlineCode.native.js.map +1 -0
  273. package/dist/esm/components/InlineStyles.mjs +28 -0
  274. package/dist/esm/components/InlineStyles.mjs.map +1 -0
  275. package/dist/esm/components/InlineStyles.native.js +31 -0
  276. package/dist/esm/components/InlineStyles.native.js.map +1 -0
  277. package/dist/esm/components/Link.mjs +29 -0
  278. package/dist/esm/components/Link.mjs.map +1 -0
  279. package/dist/esm/components/Link.native.js +30 -0
  280. package/dist/esm/components/Link.native.js.map +1 -0
  281. package/dist/esm/components/List.mjs +48 -0
  282. package/dist/esm/components/List.mjs.map +1 -0
  283. package/dist/esm/components/List.native.js +50 -0
  284. package/dist/esm/components/List.native.js.map +1 -0
  285. package/dist/esm/components/Paragraph.mjs +13 -0
  286. package/dist/esm/components/Paragraph.mjs.map +1 -0
  287. package/dist/esm/components/Paragraph.native.js +14 -0
  288. package/dist/esm/components/Paragraph.native.js.map +1 -0
  289. package/dist/esm/components/Table.mjs +59 -0
  290. package/dist/esm/components/Table.mjs.map +1 -0
  291. package/dist/esm/components/Table.native.js +62 -0
  292. package/dist/esm/components/Table.native.js.map +1 -0
  293. package/dist/esm/components/index.mjs +14 -0
  294. package/dist/esm/components/index.mjs.map +1 -0
  295. package/dist/esm/components/index.native.js +14 -0
  296. package/dist/esm/components/index.native.js.map +1 -0
  297. package/dist/esm/hooks/index.mjs +4 -0
  298. package/dist/esm/hooks/index.mjs.map +1 -0
  299. package/dist/esm/hooks/index.native.js +4 -0
  300. package/dist/esm/hooks/index.native.js.map +1 -0
  301. package/dist/esm/hooks/useCompileAndEvaluateMdx.mjs +17 -0
  302. package/dist/esm/hooks/useCompileAndEvaluateMdx.mjs.map +1 -0
  303. package/dist/esm/hooks/useCompileAndEvaluateMdx.native.js +17 -0
  304. package/dist/esm/hooks/useCompileAndEvaluateMdx.native.js.map +1 -0
  305. package/dist/esm/hooks/useCompileAndEvaluateMdx.spec.mjs +35 -0
  306. package/dist/esm/hooks/useCompileAndEvaluateMdx.spec.mjs.map +1 -0
  307. package/dist/esm/hooks/useCompileAndEvaluateMdx.spec.native.js +47 -0
  308. package/dist/esm/hooks/useCompileAndEvaluateMdx.spec.native.js.map +1 -0
  309. package/dist/esm/hooks/useCompileMdx.mjs +44 -0
  310. package/dist/esm/hooks/useCompileMdx.mjs.map +1 -0
  311. package/dist/esm/hooks/useCompileMdx.native.js +44 -0
  312. package/dist/esm/hooks/useCompileMdx.native.js.map +1 -0
  313. package/dist/esm/hooks/useEvaluateMdx.mjs +22 -0
  314. package/dist/esm/hooks/useEvaluateMdx.mjs.map +1 -0
  315. package/dist/esm/hooks/useEvaluateMdx.native.js +24 -0
  316. package/dist/esm/hooks/useEvaluateMdx.native.js.map +1 -0
  317. package/dist/esm/icons/index.mjs +175 -0
  318. package/dist/esm/icons/index.mjs.map +1 -0
  319. package/dist/esm/icons/index.native.js +193 -0
  320. package/dist/esm/icons/index.native.js.map +1 -0
  321. package/dist/esm/index.mjs +21 -0
  322. package/dist/esm/index.mjs.map +1 -0
  323. package/dist/esm/index.native.js +21 -0
  324. package/dist/esm/index.native.js.map +1 -0
  325. package/dist/esm/mdx.spec.mjs +377 -0
  326. package/dist/esm/mdx.spec.mjs.map +1 -0
  327. package/dist/esm/mdx.spec.native.js +439 -0
  328. package/dist/esm/mdx.spec.native.js.map +1 -0
  329. package/dist/esm/mdxComponents.mjs +291 -0
  330. package/dist/esm/mdxComponents.mjs.map +1 -0
  331. package/dist/esm/mdxComponents.native.js +347 -0
  332. package/dist/esm/mdxComponents.native.js.map +1 -0
  333. package/dist/esm/parser.mjs +12 -0
  334. package/dist/esm/parser.mjs.map +1 -0
  335. package/dist/esm/parser.native.js +12 -0
  336. package/dist/esm/parser.native.js.map +1 -0
  337. package/dist/esm/parser.spec.mjs +110 -0
  338. package/dist/esm/parser.spec.mjs.map +1 -0
  339. package/dist/esm/parser.spec.native.js +112 -0
  340. package/dist/esm/parser.spec.native.js.map +1 -0
  341. package/dist/esm/renderer.mjs +300 -0
  342. package/dist/esm/renderer.mjs.map +1 -0
  343. package/dist/esm/renderer.native.js +319 -0
  344. package/dist/esm/renderer.native.js.map +1 -0
  345. package/dist/esm/shared/colorRamps.mjs +45 -0
  346. package/dist/esm/shared/colorRamps.mjs.map +1 -0
  347. package/dist/esm/shared/colorRamps.native.js +45 -0
  348. package/dist/esm/shared/colorRamps.native.js.map +1 -0
  349. package/dist/esm/shared/index.mjs +2 -0
  350. package/dist/esm/shared/index.mjs.map +1 -0
  351. package/dist/esm/shared/index.native.js +2 -0
  352. package/dist/esm/shared/index.native.js.map +1 -0
  353. package/dist/esm/shiki/highlighter.mjs +59 -0
  354. package/dist/esm/shiki/highlighter.mjs.map +1 -0
  355. package/dist/esm/shiki/highlighter.native.js +61 -0
  356. package/dist/esm/shiki/highlighter.native.js.map +1 -0
  357. package/dist/esm/shiki/index.mjs +3 -0
  358. package/dist/esm/shiki/index.mjs.map +1 -0
  359. package/dist/esm/shiki/index.native.js +3 -0
  360. package/dist/esm/shiki/index.native.js.map +1 -0
  361. package/dist/esm/types.mjs +2 -0
  362. package/dist/esm/types.mjs.map +1 -0
  363. package/dist/esm/types.native.js +2 -0
  364. package/dist/esm/types.native.js.map +1 -0
  365. package/dist/esm/util/rehypeMetaAttributes.mjs +20 -0
  366. package/dist/esm/util/rehypeMetaAttributes.mjs.map +1 -0
  367. package/dist/esm/util/rehypeMetaAttributes.native.js +21 -0
  368. package/dist/esm/util/rehypeMetaAttributes.native.js.map +1 -0
  369. package/dist/esm/util/util.spec.mjs +82 -0
  370. package/dist/esm/util/util.spec.mjs.map +1 -0
  371. package/dist/esm/util/util.spec.native.js +82 -0
  372. package/dist/esm/util/util.spec.native.js.map +1 -0
  373. package/dist/jsx/Aside/index.mjs +86 -0
  374. package/dist/jsx/Aside/index.mjs.map +1 -0
  375. package/dist/jsx/Aside/index.native.js +119 -0
  376. package/dist/jsx/Aside/index.native.js.map +1 -0
  377. package/dist/jsx/ExternalIcon/ExternalIcon.spec.mjs +38 -0
  378. package/dist/jsx/ExternalIcon/ExternalIcon.spec.mjs.map +1 -0
  379. package/dist/jsx/ExternalIcon/ExternalIcon.spec.native.js +40 -0
  380. package/dist/jsx/ExternalIcon/ExternalIcon.spec.native.js.map +1 -0
  381. package/dist/jsx/ExternalIcon/index.mjs +21 -0
  382. package/dist/jsx/ExternalIcon/index.mjs.map +1 -0
  383. package/dist/jsx/ExternalIcon/index.native.js +51 -0
  384. package/dist/jsx/ExternalIcon/index.native.js.map +1 -0
  385. package/dist/jsx/Hr/hr.spec.mjs +22 -0
  386. package/dist/jsx/Hr/hr.spec.mjs.map +1 -0
  387. package/dist/jsx/Hr/hr.spec.native.js +24 -0
  388. package/dist/jsx/Hr/hr.spec.native.js.map +1 -0
  389. package/dist/jsx/Hr/index.mjs +16 -0
  390. package/dist/jsx/Hr/index.mjs.map +1 -0
  391. package/dist/jsx/Hr/index.native.js +46 -0
  392. package/dist/jsx/Hr/index.native.js.map +1 -0
  393. package/dist/jsx/Li/index.mjs +13 -0
  394. package/dist/jsx/Li/index.mjs.map +1 -0
  395. package/dist/jsx/Li/index.native.js +41 -0
  396. package/dist/jsx/Li/index.native.js.map +1 -0
  397. package/dist/jsx/Li/li.spec.mjs +46 -0
  398. package/dist/jsx/Li/li.spec.mjs.map +1 -0
  399. package/dist/jsx/Li/li.spec.native.js +50 -0
  400. package/dist/jsx/Li/li.spec.native.js.map +1 -0
  401. package/dist/jsx/Markdown.mjs +41 -0
  402. package/dist/jsx/Markdown.mjs.map +1 -0
  403. package/dist/jsx/Markdown.native.js +71 -0
  404. package/dist/jsx/Markdown.native.js.map +1 -0
  405. package/dist/jsx/Markdown.stories.mjs +125 -0
  406. package/dist/jsx/Markdown.stories.mjs.map +1 -0
  407. package/dist/jsx/Markdown.stories.native.js +162 -0
  408. package/dist/jsx/Markdown.stories.native.js.map +1 -0
  409. package/dist/jsx/Mdx/index.mjs +33 -0
  410. package/dist/jsx/Mdx/index.mjs.map +1 -0
  411. package/dist/jsx/Mdx/index.native.js +62 -0
  412. package/dist/jsx/Mdx/index.native.js.map +1 -0
  413. package/dist/jsx/Mdx/mdx.spec.mjs +140 -0
  414. package/dist/jsx/Mdx/mdx.spec.mjs.map +1 -0
  415. package/dist/jsx/Mdx/mdx.spec.native.js +158 -0
  416. package/dist/jsx/Mdx/mdx.spec.native.js.map +1 -0
  417. package/dist/jsx/MdxCodeBlock/index.mjs +149 -0
  418. package/dist/jsx/MdxCodeBlock/index.mjs.map +1 -0
  419. package/dist/jsx/MdxCodeBlock/index.native.js +205 -0
  420. package/dist/jsx/MdxCodeBlock/index.native.js.map +1 -0
  421. package/dist/jsx/MdxCodeBlock/mdxCodeBlock.spec.mjs +91 -0
  422. package/dist/jsx/MdxCodeBlock/mdxCodeBlock.spec.mjs.map +1 -0
  423. package/dist/jsx/MdxCodeBlock/mdxCodeBlock.spec.native.js +122 -0
  424. package/dist/jsx/MdxCodeBlock/mdxCodeBlock.spec.native.js.map +1 -0
  425. package/dist/jsx/MdxCodeBlock/mdxCodeBlockContext.mjs +4 -0
  426. package/dist/jsx/MdxCodeBlock/mdxCodeBlockContext.mjs.map +1 -0
  427. package/dist/jsx/MdxCodeBlock/mdxCodeBlockContext.native.js +32 -0
  428. package/dist/jsx/MdxCodeBlock/mdxCodeBlockContext.native.js.map +1 -0
  429. package/dist/jsx/Notice/index.mjs +68 -0
  430. package/dist/jsx/Notice/index.mjs.map +1 -0
  431. package/dist/jsx/Notice/index.native.js +98 -0
  432. package/dist/jsx/Notice/index.native.js.map +1 -0
  433. package/dist/jsx/SimpleTable/index.mjs +107 -0
  434. package/dist/jsx/SimpleTable/index.mjs.map +1 -0
  435. package/dist/jsx/SimpleTable/index.native.js +162 -0
  436. package/dist/jsx/SimpleTable/index.native.js.map +1 -0
  437. package/dist/jsx/Table/index.mjs +91 -0
  438. package/dist/jsx/Table/index.mjs.map +1 -0
  439. package/dist/jsx/Table/index.native.js +130 -0
  440. package/dist/jsx/Table/index.native.js.map +1 -0
  441. package/dist/jsx/Tabs/index.mjs +67 -0
  442. package/dist/jsx/Tabs/index.mjs.map +1 -0
  443. package/dist/jsx/Tabs/index.native.js +103 -0
  444. package/dist/jsx/Tabs/index.native.js.map +1 -0
  445. package/dist/jsx/Ul/index.mjs +10 -0
  446. package/dist/jsx/Ul/index.mjs.map +1 -0
  447. package/dist/jsx/Ul/index.native.js +38 -0
  448. package/dist/jsx/Ul/index.native.js.map +1 -0
  449. package/dist/jsx/Ul/ul.spec.mjs +151 -0
  450. package/dist/jsx/Ul/ul.spec.mjs.map +1 -0
  451. package/dist/jsx/Ul/ul.spec.native.js +153 -0
  452. package/dist/jsx/Ul/ul.spec.native.js.map +1 -0
  453. package/dist/jsx/Video/index.mjs +59 -0
  454. package/dist/jsx/Video/index.mjs.map +1 -0
  455. package/dist/jsx/Video/index.native.js +89 -0
  456. package/dist/jsx/Video/index.native.js.map +1 -0
  457. package/dist/jsx/components/Blockquote.mjs +22 -0
  458. package/dist/jsx/components/Blockquote.mjs.map +1 -0
  459. package/dist/jsx/components/Blockquote.native.js +51 -0
  460. package/dist/jsx/components/Blockquote.native.js.map +1 -0
  461. package/dist/jsx/components/Break.mjs +9 -0
  462. package/dist/jsx/components/Break.mjs.map +1 -0
  463. package/dist/jsx/components/Break.native.js +37 -0
  464. package/dist/jsx/components/Break.native.js.map +1 -0
  465. package/dist/jsx/components/CodeBlock.mjs +84 -0
  466. package/dist/jsx/components/CodeBlock.mjs.map +1 -0
  467. package/dist/jsx/components/CodeBlock.native.js +119 -0
  468. package/dist/jsx/components/CodeBlock.native.js.map +1 -0
  469. package/dist/jsx/components/Heading.mjs +23 -0
  470. package/dist/jsx/components/Heading.mjs.map +1 -0
  471. package/dist/jsx/components/Heading.native.js +52 -0
  472. package/dist/jsx/components/Heading.native.js.map +1 -0
  473. package/dist/jsx/components/HorizontalRule.mjs +9 -0
  474. package/dist/jsx/components/HorizontalRule.mjs.map +1 -0
  475. package/dist/jsx/components/HorizontalRule.native.js +37 -0
  476. package/dist/jsx/components/HorizontalRule.native.js.map +1 -0
  477. package/dist/jsx/components/Image.mjs +28 -0
  478. package/dist/jsx/components/Image.mjs.map +1 -0
  479. package/dist/jsx/components/Image.native.js +57 -0
  480. package/dist/jsx/components/Image.native.js.map +1 -0
  481. package/dist/jsx/components/InlineCode.mjs +23 -0
  482. package/dist/jsx/components/InlineCode.mjs.map +1 -0
  483. package/dist/jsx/components/InlineCode.native.js +52 -0
  484. package/dist/jsx/components/InlineCode.native.js.map +1 -0
  485. package/dist/jsx/components/InlineStyles.mjs +28 -0
  486. package/dist/jsx/components/InlineStyles.mjs.map +1 -0
  487. package/dist/jsx/components/InlineStyles.native.js +61 -0
  488. package/dist/jsx/components/InlineStyles.native.js.map +1 -0
  489. package/dist/jsx/components/Link.mjs +29 -0
  490. package/dist/jsx/components/Link.mjs.map +1 -0
  491. package/dist/jsx/components/Link.native.js +58 -0
  492. package/dist/jsx/components/Link.native.js.map +1 -0
  493. package/dist/jsx/components/List.mjs +48 -0
  494. package/dist/jsx/components/List.mjs.map +1 -0
  495. package/dist/jsx/components/List.native.js +79 -0
  496. package/dist/jsx/components/List.native.js.map +1 -0
  497. package/dist/jsx/components/Paragraph.mjs +13 -0
  498. package/dist/jsx/components/Paragraph.mjs.map +1 -0
  499. package/dist/jsx/components/Paragraph.native.js +42 -0
  500. package/dist/jsx/components/Paragraph.native.js.map +1 -0
  501. package/dist/jsx/components/Table.mjs +59 -0
  502. package/dist/jsx/components/Table.mjs.map +1 -0
  503. package/dist/jsx/components/Table.native.js +92 -0
  504. package/dist/jsx/components/Table.native.js.map +1 -0
  505. package/dist/jsx/components/index.mjs +14 -0
  506. package/dist/jsx/components/index.mjs.map +1 -0
  507. package/dist/jsx/components/index.native.js +58 -0
  508. package/dist/jsx/components/index.native.js.map +1 -0
  509. package/dist/jsx/hooks/index.mjs +4 -0
  510. package/dist/jsx/hooks/index.mjs.map +1 -0
  511. package/dist/jsx/hooks/index.native.js +25 -0
  512. package/dist/jsx/hooks/index.native.js.map +1 -0
  513. package/dist/jsx/hooks/useCompileAndEvaluateMdx.mjs +17 -0
  514. package/dist/jsx/hooks/useCompileAndEvaluateMdx.mjs.map +1 -0
  515. package/dist/jsx/hooks/useCompileAndEvaluateMdx.native.js +45 -0
  516. package/dist/jsx/hooks/useCompileAndEvaluateMdx.native.js.map +1 -0
  517. package/dist/jsx/hooks/useCompileAndEvaluateMdx.spec.mjs +35 -0
  518. package/dist/jsx/hooks/useCompileAndEvaluateMdx.spec.mjs.map +1 -0
  519. package/dist/jsx/hooks/useCompileAndEvaluateMdx.spec.native.js +49 -0
  520. package/dist/jsx/hooks/useCompileAndEvaluateMdx.spec.native.js.map +1 -0
  521. package/dist/jsx/hooks/useCompileMdx.mjs +44 -0
  522. package/dist/jsx/hooks/useCompileMdx.mjs.map +1 -0
  523. package/dist/jsx/hooks/useCompileMdx.native.js +83 -0
  524. package/dist/jsx/hooks/useCompileMdx.native.js.map +1 -0
  525. package/dist/jsx/hooks/useEvaluateMdx.mjs +22 -0
  526. package/dist/jsx/hooks/useEvaluateMdx.mjs.map +1 -0
  527. package/dist/jsx/hooks/useEvaluateMdx.native.js +63 -0
  528. package/dist/jsx/hooks/useEvaluateMdx.native.js.map +1 -0
  529. package/dist/jsx/icons/index.mjs +175 -0
  530. package/dist/jsx/icons/index.mjs.map +1 -0
  531. package/dist/jsx/icons/index.native.js +226 -0
  532. package/dist/jsx/icons/index.native.js.map +1 -0
  533. package/dist/jsx/index.js +21 -0
  534. package/dist/jsx/index.js.map +1 -0
  535. package/dist/jsx/index.mjs +21 -0
  536. package/dist/jsx/index.mjs.map +1 -0
  537. package/dist/jsx/index.native.js +54 -0
  538. package/dist/jsx/index.native.js.map +1 -0
  539. package/dist/jsx/mdx.spec.mjs +377 -0
  540. package/dist/jsx/mdx.spec.mjs.map +1 -0
  541. package/dist/jsx/mdx.spec.native.js +465 -0
  542. package/dist/jsx/mdx.spec.native.js.map +1 -0
  543. package/dist/jsx/mdxComponents.mjs +291 -0
  544. package/dist/jsx/mdxComponents.mjs.map +1 -0
  545. package/dist/jsx/mdxComponents.native.js +376 -0
  546. package/dist/jsx/mdxComponents.native.js.map +1 -0
  547. package/dist/jsx/parser.mjs +12 -0
  548. package/dist/jsx/parser.mjs.map +1 -0
  549. package/dist/jsx/parser.native.js +52 -0
  550. package/dist/jsx/parser.native.js.map +1 -0
  551. package/dist/jsx/parser.spec.mjs +110 -0
  552. package/dist/jsx/parser.spec.mjs.map +1 -0
  553. package/dist/jsx/parser.spec.native.js +114 -0
  554. package/dist/jsx/parser.spec.native.js.map +1 -0
  555. package/dist/jsx/renderer.mjs +300 -0
  556. package/dist/jsx/renderer.mjs.map +1 -0
  557. package/dist/jsx/renderer.native.js +348 -0
  558. package/dist/jsx/renderer.native.js.map +1 -0
  559. package/dist/jsx/shared/colorRamps.mjs +45 -0
  560. package/dist/jsx/shared/colorRamps.mjs.map +1 -0
  561. package/dist/jsx/shared/colorRamps.native.js +77 -0
  562. package/dist/jsx/shared/colorRamps.native.js.map +1 -0
  563. package/dist/jsx/shared/index.mjs +2 -0
  564. package/dist/jsx/shared/index.mjs.map +1 -0
  565. package/dist/jsx/shared/index.native.js +23 -0
  566. package/dist/jsx/shared/index.native.js.map +1 -0
  567. package/dist/jsx/shiki/highlighter.mjs +59 -0
  568. package/dist/jsx/shiki/highlighter.mjs.map +1 -0
  569. package/dist/jsx/shiki/highlighter.native.js +94 -0
  570. package/dist/jsx/shiki/highlighter.native.js.map +1 -0
  571. package/dist/jsx/shiki/index.mjs +3 -0
  572. package/dist/jsx/shiki/index.mjs.map +1 -0
  573. package/dist/jsx/shiki/index.native.js +36 -0
  574. package/dist/jsx/shiki/index.native.js.map +1 -0
  575. package/dist/jsx/types.mjs +2 -0
  576. package/dist/jsx/types.mjs.map +1 -0
  577. package/dist/jsx/types.native.js +21 -0
  578. package/dist/jsx/types.native.js.map +1 -0
  579. package/dist/jsx/util/rehypeMetaAttributes.mjs +20 -0
  580. package/dist/jsx/util/rehypeMetaAttributes.mjs.map +1 -0
  581. package/dist/jsx/util/rehypeMetaAttributes.native.js +49 -0
  582. package/dist/jsx/util/rehypeMetaAttributes.native.js.map +1 -0
  583. package/dist/jsx/util/util.spec.mjs +82 -0
  584. package/dist/jsx/util/util.spec.mjs.map +1 -0
  585. package/dist/jsx/util/util.spec.native.js +84 -0
  586. package/dist/jsx/util/util.spec.native.js.map +1 -0
  587. package/package.json +94 -0
  588. package/src/Aside/index.tsx +89 -0
  589. package/src/ExternalIcon/ExternalIcon.spec.tsx +33 -0
  590. package/src/ExternalIcon/index.tsx +15 -0
  591. package/src/Hr/hr.spec.tsx +18 -0
  592. package/src/Hr/index.tsx +7 -0
  593. package/src/Li/index.tsx +14 -0
  594. package/src/Li/li.spec.tsx +33 -0
  595. package/src/Markdown.stories.tsx +127 -0
  596. package/src/Markdown.tsx +62 -0
  597. package/src/Mdx/index.tsx +32 -0
  598. package/src/Mdx/mdx.spec.tsx +118 -0
  599. package/src/MdxCodeBlock/index.tsx +168 -0
  600. package/src/MdxCodeBlock/mdxCodeBlock.spec.tsx +66 -0
  601. package/src/MdxCodeBlock/mdxCodeBlockContext.ts +15 -0
  602. package/src/Notice/index.tsx +76 -0
  603. package/src/SimpleTable/index.tsx +125 -0
  604. package/src/Table/index.tsx +80 -0
  605. package/src/Tabs/index.tsx +76 -0
  606. package/src/Ul/index.ts +11 -0
  607. package/src/Ul/ul.spec.tsx +131 -0
  608. package/src/Video/index.tsx +62 -0
  609. package/src/components/Blockquote.tsx +20 -0
  610. package/src/components/Break.tsx +6 -0
  611. package/src/components/CodeBlock.tsx +94 -0
  612. package/src/components/Heading.tsx +20 -0
  613. package/src/components/HorizontalRule.tsx +6 -0
  614. package/src/components/Image.tsx +20 -0
  615. package/src/components/InlineCode.tsx +21 -0
  616. package/src/components/InlineStyles.tsx +14 -0
  617. package/src/components/Link.tsx +26 -0
  618. package/src/components/List.tsx +41 -0
  619. package/src/components/Paragraph.tsx +10 -0
  620. package/src/components/Table.tsx +56 -0
  621. package/src/components/index.ts +12 -0
  622. package/src/hooks/index.ts +3 -0
  623. package/src/hooks/useCompileAndEvaluateMdx.spec.tsx +31 -0
  624. package/src/hooks/useCompileAndEvaluateMdx.ts +22 -0
  625. package/src/hooks/useCompileMdx.ts +55 -0
  626. package/src/hooks/useEvaluateMdx.ts +27 -0
  627. package/src/icons/index.tsx +116 -0
  628. package/src/index.ts +33 -0
  629. package/src/mdx.spec.tsx +347 -0
  630. package/src/mdxComponents.tsx +225 -0
  631. package/src/parser.spec.ts +126 -0
  632. package/src/parser.ts +27 -0
  633. package/src/renderer.tsx +391 -0
  634. package/src/shared/colorRamps.ts +52 -0
  635. package/src/shared/index.ts +1 -0
  636. package/src/shiki/highlighter.ts +148 -0
  637. package/src/shiki/index.ts +11 -0
  638. package/src/types.ts +225 -0
  639. package/src/util/rehypeMetaAttributes.ts +21 -0
  640. package/src/util/util.spec.tsx +90 -0
package/src/parser.ts ADDED
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Markdown parser using unified/remark ecosystem
3
+ * Parses markdown string to mdast (Markdown Abstract Syntax Tree)
4
+ */
5
+ import { unified } from "unified";
6
+ import remarkParse from "remark-parse";
7
+ import remarkGfm from "remark-gfm";
8
+ import type { Root } from "mdast";
9
+
10
+ // Create a reusable processor
11
+ const processor = unified().use(remarkParse).use(remarkGfm);
12
+
13
+ /**
14
+ * Parse markdown string to AST
15
+ */
16
+ export function parseMarkdown(markdown: string): Root {
17
+ return processor.parse(markdown);
18
+ }
19
+
20
+ /**
21
+ * Parse markdown string to AST (async version for consistency)
22
+ */
23
+ export async function parseMarkdownAsync(markdown: string): Promise<Root> {
24
+ return processor.parse(markdown);
25
+ }
26
+
27
+ export type { Root };
@@ -0,0 +1,391 @@
1
+ /**
2
+ * Markdown AST Renderer
3
+ * Walks the mdast tree and renders React components
4
+ */
5
+ import type { ReactNode } from "react";
6
+ import { Text, View, isWeb } from "tamagui";
7
+ import type {
8
+ Root,
9
+ Heading as HeadingNode,
10
+ Paragraph as ParagraphNode,
11
+ Text as TextNode,
12
+ Emphasis as EmphasisNode,
13
+ Strong as StrongNode,
14
+ Delete as DeleteNode,
15
+ InlineCode as InlineCodeNode,
16
+ Code as CodeNode,
17
+ Link as LinkNode,
18
+ Image as ImageNode,
19
+ List as ListNode,
20
+ ListItem as ListItemNode,
21
+ Blockquote as BlockquoteNode,
22
+ ThematicBreak,
23
+ Table as TableNode,
24
+ TableRow as TableRowNode,
25
+ TableCell as TableCellNode,
26
+ Html as HtmlNode,
27
+ Break as BreakNode,
28
+ } from "mdast";
29
+ import type { MarkdownComponents } from "./types";
30
+ import type { BundledTheme } from "./shiki";
31
+ import {
32
+ Heading,
33
+ Paragraph,
34
+ Strong,
35
+ Emphasis,
36
+ Strikethrough,
37
+ InlineCode,
38
+ CodeBlock,
39
+ Link,
40
+ MarkdownImage,
41
+ MarkdownList,
42
+ MarkdownListItem,
43
+ Blockquote,
44
+ HorizontalRule,
45
+ MarkdownTable,
46
+ MarkdownTableRow,
47
+ MarkdownTableCell,
48
+ Break,
49
+ } from "./components";
50
+
51
+ type AnyNode =
52
+ | Root
53
+ | HeadingNode
54
+ | ParagraphNode
55
+ | TextNode
56
+ | EmphasisNode
57
+ | StrongNode
58
+ | DeleteNode
59
+ | InlineCodeNode
60
+ | CodeNode
61
+ | LinkNode
62
+ | ImageNode
63
+ | ListNode
64
+ | ListItemNode
65
+ | BlockquoteNode
66
+ | ThematicBreak
67
+ | TableNode
68
+ | TableRowNode
69
+ | TableCellNode
70
+ | HtmlNode
71
+ | BreakNode
72
+ | { type: string; children?: AnyNode[]; value?: string };
73
+
74
+ interface RenderOptions {
75
+ components?: Partial<MarkdownComponents>;
76
+ codeTheme?: BundledTheme;
77
+ listContext?: {
78
+ ordered: boolean;
79
+ index: number;
80
+ };
81
+ }
82
+
83
+ /**
84
+ * Render a single AST node to React elements
85
+ */
86
+ export function renderNode(
87
+ node: AnyNode,
88
+ key: number | string,
89
+ options: RenderOptions = {},
90
+ ): ReactNode {
91
+ const { components = {}, codeTheme = "github-dark", listContext } = options;
92
+
93
+ switch (node.type) {
94
+ case "root":
95
+ return renderChildren(node as Root, options);
96
+
97
+ case "heading": {
98
+ const heading = node as HeadingNode;
99
+ const CustomHeading = components[`h${heading.depth}` as keyof MarkdownComponents] as
100
+ | React.ComponentType<import("./types").HeadingProps>
101
+ | undefined;
102
+ if (CustomHeading) {
103
+ return (
104
+ <CustomHeading key={key} level={heading.depth as 1 | 2 | 3 | 4 | 5 | 6}>
105
+ {renderChildren(heading, options)}
106
+ </CustomHeading>
107
+ );
108
+ }
109
+ return (
110
+ <Heading key={key} level={heading.depth as 1 | 2 | 3 | 4 | 5 | 6}>
111
+ {renderChildren(heading, options)}
112
+ </Heading>
113
+ );
114
+ }
115
+
116
+ case "paragraph": {
117
+ const para = node as ParagraphNode;
118
+ const CustomP = components.p;
119
+ if (CustomP) {
120
+ return <CustomP key={key}>{renderChildren(para, options)}</CustomP>;
121
+ }
122
+ return <Paragraph key={key}>{renderChildren(para, options)}</Paragraph>;
123
+ }
124
+
125
+ case "text": {
126
+ const textNode = node as TextNode;
127
+ return textNode.value;
128
+ }
129
+
130
+ case "strong": {
131
+ const strongNode = node as StrongNode;
132
+ const CustomStrong = components.strong;
133
+ if (CustomStrong) {
134
+ return <CustomStrong key={key}>{renderChildren(strongNode, options)}</CustomStrong>;
135
+ }
136
+ return <Strong key={key}>{renderChildren(strongNode, options)}</Strong>;
137
+ }
138
+
139
+ case "emphasis": {
140
+ const emNode = node as EmphasisNode;
141
+ const CustomEm = components.em;
142
+ if (CustomEm) {
143
+ return <CustomEm key={key}>{renderChildren(emNode, options)}</CustomEm>;
144
+ }
145
+ return <Emphasis key={key}>{renderChildren(emNode, options)}</Emphasis>;
146
+ }
147
+
148
+ case "delete": {
149
+ const delNode = node as DeleteNode;
150
+ const CustomDel = components.del;
151
+ if (CustomDel) {
152
+ return <CustomDel key={key}>{renderChildren(delNode, options)}</CustomDel>;
153
+ }
154
+ return <Strikethrough key={key}>{renderChildren(delNode, options)}</Strikethrough>;
155
+ }
156
+
157
+ case "inlineCode": {
158
+ const inlineCodeNode = node as InlineCodeNode;
159
+ const CustomInlineCode = components.inlineCode;
160
+ if (CustomInlineCode) {
161
+ return <CustomInlineCode key={key}>{inlineCodeNode.value}</CustomInlineCode>;
162
+ }
163
+ return <InlineCode key={key}>{inlineCodeNode.value}</InlineCode>;
164
+ }
165
+
166
+ case "code": {
167
+ const codeNode = node as CodeNode;
168
+ const CustomCode = components.code;
169
+ if (CustomCode) {
170
+ return (
171
+ <CustomCode key={key} lang={codeNode.lang} meta={codeNode.meta}>
172
+ {codeNode.value}
173
+ </CustomCode>
174
+ );
175
+ }
176
+ return (
177
+ <CodeBlock key={key} lang={codeNode.lang} theme={codeTheme}>
178
+ {codeNode.value}
179
+ </CodeBlock>
180
+ );
181
+ }
182
+
183
+ case "link": {
184
+ const linkNode = node as LinkNode;
185
+ const CustomLink = components.a;
186
+ if (CustomLink) {
187
+ return (
188
+ <CustomLink key={key} href={linkNode.url} title={linkNode.title}>
189
+ {renderChildren(linkNode, options)}
190
+ </CustomLink>
191
+ );
192
+ }
193
+ return (
194
+ <Link key={key} href={linkNode.url} title={linkNode.title}>
195
+ {renderChildren(linkNode, options)}
196
+ </Link>
197
+ );
198
+ }
199
+
200
+ case "image": {
201
+ const imgNode = node as ImageNode;
202
+ const CustomImg = components.img;
203
+ if (CustomImg) {
204
+ return <CustomImg key={key} src={imgNode.url} alt={imgNode.alt} title={imgNode.title} />;
205
+ }
206
+ return <MarkdownImage key={key} src={imgNode.url} alt={imgNode.alt} title={imgNode.title} />;
207
+ }
208
+
209
+ case "list": {
210
+ const listNode = node as ListNode;
211
+ const CustomList = listNode.ordered ? components.ol : components.ul;
212
+ const listChildren = listNode.children.map((child, i) =>
213
+ renderNode(child, i, {
214
+ ...options,
215
+ listContext: { ordered: listNode.ordered ?? false, index: i },
216
+ }),
217
+ );
218
+ if (CustomList) {
219
+ return (
220
+ <CustomList key={key} ordered={listNode.ordered ?? false} start={listNode.start}>
221
+ {listChildren}
222
+ </CustomList>
223
+ );
224
+ }
225
+ return (
226
+ <MarkdownList key={key} ordered={listNode.ordered ?? false} start={listNode.start}>
227
+ {listChildren}
228
+ </MarkdownList>
229
+ );
230
+ }
231
+
232
+ case "listItem": {
233
+ const liNode = node as ListItemNode;
234
+ const CustomLi = components.li;
235
+ if (CustomLi) {
236
+ return (
237
+ <CustomLi key={key} checked={liNode.checked}>
238
+ {renderChildren(liNode, options)}
239
+ </CustomLi>
240
+ );
241
+ }
242
+ return (
243
+ <MarkdownListItem
244
+ key={key}
245
+ checked={liNode.checked}
246
+ index={listContext?.index}
247
+ ordered={listContext?.ordered}
248
+ >
249
+ {renderChildren(liNode, options)}
250
+ </MarkdownListItem>
251
+ );
252
+ }
253
+
254
+ case "blockquote": {
255
+ const bqNode = node as BlockquoteNode;
256
+ const CustomBq = components.blockquote;
257
+ if (CustomBq) {
258
+ return <CustomBq key={key}>{renderChildren(bqNode, options)}</CustomBq>;
259
+ }
260
+ return <Blockquote key={key}>{renderChildren(bqNode, options)}</Blockquote>;
261
+ }
262
+
263
+ case "thematicBreak": {
264
+ const CustomHr = components.hr;
265
+ if (CustomHr) {
266
+ return <CustomHr key={key} />;
267
+ }
268
+ return <HorizontalRule key={key} />;
269
+ }
270
+
271
+ case "table": {
272
+ const tableNode = node as TableNode;
273
+ const CustomTable = components.table;
274
+ const tableChildren = tableNode.children.map((row, i) =>
275
+ renderTableRow(row, i, i === 0, tableNode.align, options),
276
+ );
277
+ if (CustomTable) {
278
+ return <CustomTable key={key}>{tableChildren}</CustomTable>;
279
+ }
280
+ return <MarkdownTable key={key}>{tableChildren}</MarkdownTable>;
281
+ }
282
+
283
+ case "html": {
284
+ const htmlNode = node as HtmlNode;
285
+ // Render HTML on web, drop on native
286
+ if (isWeb) {
287
+ return <div key={key} dangerouslySetInnerHTML={{ __html: htmlNode.value }} />;
288
+ }
289
+ // On native, skip HTML nodes
290
+ return null;
291
+ }
292
+
293
+ case "break": {
294
+ const CustomBr = components.br;
295
+ if (CustomBr) {
296
+ return <CustomBr key={key} />;
297
+ }
298
+ return <Break key={key} />;
299
+ }
300
+
301
+ default:
302
+ // Handle unknown nodes - try to render children if they exist
303
+ if ("children" in node && Array.isArray(node.children)) {
304
+ return (
305
+ <View key={key}>
306
+ {node.children.map((child: AnyNode, i: number) => renderNode(child, i, options))}
307
+ </View>
308
+ );
309
+ }
310
+ // Unknown leaf node
311
+ if ("value" in node && typeof node.value === "string") {
312
+ return <Text key={key}>{node.value}</Text>;
313
+ }
314
+ return null;
315
+ }
316
+ }
317
+
318
+ /**
319
+ * Render table row with header detection
320
+ */
321
+ function renderTableRow(
322
+ row: TableRowNode,
323
+ key: number,
324
+ isHeader: boolean,
325
+ align: ("left" | "center" | "right" | null)[] | null | undefined,
326
+ options: RenderOptions,
327
+ ): ReactNode {
328
+ const CustomTr = options.components?.tr;
329
+ const cells = row.children.map((cell, i) =>
330
+ renderTableCell(cell, i, isHeader, align?.[i] || null, options),
331
+ );
332
+
333
+ if (CustomTr) {
334
+ return (
335
+ <CustomTr key={key} isHeader={isHeader}>
336
+ {cells}
337
+ </CustomTr>
338
+ );
339
+ }
340
+ return (
341
+ <MarkdownTableRow key={key} isHeader={isHeader}>
342
+ {cells}
343
+ </MarkdownTableRow>
344
+ );
345
+ }
346
+
347
+ /**
348
+ * Render table cell
349
+ */
350
+ function renderTableCell(
351
+ cell: TableCellNode,
352
+ key: number,
353
+ isHeader: boolean,
354
+ align: "left" | "center" | "right" | null,
355
+ options: RenderOptions,
356
+ ): ReactNode {
357
+ const CustomTd = isHeader ? options.components?.th : options.components?.td;
358
+ const children = renderChildren(cell, options);
359
+
360
+ if (CustomTd) {
361
+ return (
362
+ <CustomTd key={key} isHeader={isHeader} align={align}>
363
+ {children}
364
+ </CustomTd>
365
+ );
366
+ }
367
+ return (
368
+ <MarkdownTableCell key={key} isHeader={isHeader} align={align}>
369
+ {children}
370
+ </MarkdownTableCell>
371
+ );
372
+ }
373
+
374
+ /**
375
+ * Render all children of a parent node
376
+ */
377
+ function renderChildren(node: { children?: AnyNode[] }, options: RenderOptions): ReactNode[] {
378
+ if (!node.children) return [];
379
+ return node.children.map((child, i) => renderNode(child, i, options));
380
+ }
381
+
382
+ /**
383
+ * Render a complete markdown AST to React elements
384
+ */
385
+ export function renderMarkdown(root: Root, options: RenderOptions = {}): ReactNode {
386
+ return (
387
+ <View gap="$1">
388
+ {root.children.map((child, i) => renderNode(child as AnyNode, i, options))}
389
+ </View>
390
+ );
391
+ }
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Color ramps for markdown components.
3
+ * Uses Tamagui color tokens for consistent theming.
4
+ */
5
+
6
+ export const markdownCodeColors = {
7
+ background: {
8
+ base: "$color3",
9
+ },
10
+ border: {
11
+ base: "$color6",
12
+ },
13
+ text: {
14
+ base: "$color12",
15
+ muted: "$color11",
16
+ },
17
+ } as const;
18
+
19
+ export const markdownBlockquoteColors = {
20
+ background: {
21
+ base: "$color2",
22
+ },
23
+ border: {
24
+ base: "$color8",
25
+ },
26
+ text: {
27
+ base: "$color11",
28
+ },
29
+ } as const;
30
+
31
+ export const markdownTableColors = {
32
+ background: {
33
+ base: "transparent",
34
+ header: "$color3",
35
+ },
36
+ border: {
37
+ base: "$borderColor",
38
+ },
39
+ } as const;
40
+
41
+ export const markdownLinkColors = {
42
+ text: {
43
+ base: "$blue10",
44
+ hover: "$blue11",
45
+ },
46
+ } as const;
47
+
48
+ export const markdownCommonColors = {
49
+ text: "$color12",
50
+ muted: "$color11",
51
+ divider: "$color6",
52
+ } as const;
@@ -0,0 +1 @@
1
+ export * from "./colorRamps";
@@ -0,0 +1,148 @@
1
+ /**
2
+ * Shiki syntax highlighter using the pure JavaScript engine
3
+ * Works on web, Expo Go, and native without WASM or native modules
4
+ */
5
+ import {
6
+ createHighlighter,
7
+ type Highlighter,
8
+ type ThemedToken,
9
+ type BundledLanguage,
10
+ type BundledTheme,
11
+ } from "shiki";
12
+ import { createJavaScriptRegexEngine } from "shiki/engine/javascript";
13
+
14
+ export type { ThemedToken, BundledLanguage, BundledTheme };
15
+
16
+ // Common languages to preload
17
+ const DEFAULT_LANGS: BundledLanguage[] = [
18
+ "javascript",
19
+ "typescript",
20
+ "tsx",
21
+ "jsx",
22
+ "python",
23
+ "bash",
24
+ "shell",
25
+ "json",
26
+ "html",
27
+ "css",
28
+ "markdown",
29
+ "yaml",
30
+ "sql",
31
+ "graphql",
32
+ "rust",
33
+ "go",
34
+ "java",
35
+ "c",
36
+ "cpp",
37
+ ];
38
+
39
+ // Supported themes
40
+ const DEFAULT_THEMES: BundledTheme[] = [
41
+ "github-dark",
42
+ "github-light",
43
+ "dracula",
44
+ "nord",
45
+ "one-dark-pro",
46
+ ];
47
+
48
+ let highlighterPromise: Promise<Highlighter> | null = null;
49
+ let highlighterInstance: Highlighter | null = null;
50
+
51
+ /**
52
+ * Get the shared highlighter instance
53
+ * Lazily initializes on first call
54
+ */
55
+ export async function getHighlighter(): Promise<Highlighter> {
56
+ if (highlighterInstance) {
57
+ return highlighterInstance;
58
+ }
59
+
60
+ if (!highlighterPromise) {
61
+ highlighterPromise = createHighlighter({
62
+ themes: DEFAULT_THEMES,
63
+ langs: DEFAULT_LANGS,
64
+ engine: createJavaScriptRegexEngine(),
65
+ }).then((h) => {
66
+ highlighterInstance = h;
67
+ return h;
68
+ });
69
+ }
70
+
71
+ return highlighterPromise;
72
+ }
73
+
74
+ /**
75
+ * Highlight code and return themed tokens
76
+ */
77
+ export async function highlightCode(
78
+ code: string,
79
+ lang: string,
80
+ theme: BundledTheme = "github-dark",
81
+ ): Promise<ThemedToken[][]> {
82
+ const highlighter = await getHighlighter();
83
+
84
+ // Check if language is supported, fallback to plaintext
85
+ const loadedLangs = highlighter.getLoadedLanguages();
86
+ const resolvedLang = (
87
+ loadedLangs.includes(lang as BundledLanguage) ? lang : "text"
88
+ ) as BundledLanguage;
89
+
90
+ const result = highlighter.codeToTokens(code, {
91
+ lang: resolvedLang,
92
+ theme,
93
+ });
94
+
95
+ return result.tokens;
96
+ }
97
+
98
+ /**
99
+ * Highlight code synchronously (requires highlighter to be pre-loaded)
100
+ * Returns null if highlighter is not ready
101
+ */
102
+ export function highlightCodeSync(
103
+ code: string,
104
+ lang: string,
105
+ theme: BundledTheme = "github-dark",
106
+ ): ThemedToken[][] | null {
107
+ if (!highlighterInstance) {
108
+ return null;
109
+ }
110
+
111
+ const loadedLangs = highlighterInstance.getLoadedLanguages();
112
+ const resolvedLang = (
113
+ loadedLangs.includes(lang as BundledLanguage) ? lang : "text"
114
+ ) as BundledLanguage;
115
+
116
+ const result = highlighterInstance.codeToTokens(code, {
117
+ lang: resolvedLang,
118
+ theme,
119
+ });
120
+
121
+ return result.tokens;
122
+ }
123
+
124
+ /**
125
+ * Preload the highlighter (call on app startup for better UX)
126
+ */
127
+ export function preloadHighlighter(): Promise<void> {
128
+ return getHighlighter().then(() => {});
129
+ }
130
+
131
+ /**
132
+ * Load an additional language on demand
133
+ */
134
+ export async function loadLanguage(lang: BundledLanguage): Promise<void> {
135
+ const highlighter = await getHighlighter();
136
+ const loadedLangs = highlighter.getLoadedLanguages();
137
+
138
+ if (!loadedLangs.includes(lang)) {
139
+ await highlighter.loadLanguage(lang);
140
+ }
141
+ }
142
+
143
+ /**
144
+ * Check if highlighter is ready
145
+ */
146
+ export function isHighlighterReady(): boolean {
147
+ return highlighterInstance !== null;
148
+ }
@@ -0,0 +1,11 @@
1
+ export {
2
+ getHighlighter,
3
+ highlightCode,
4
+ highlightCodeSync,
5
+ preloadHighlighter,
6
+ loadLanguage,
7
+ isHighlighterReady,
8
+ type ThemedToken,
9
+ type BundledLanguage,
10
+ type BundledTheme,
11
+ } from "./highlighter";