{"_id":"@a5omic/flowdown-react","_rev":"5-4bc0e2ab5ff413f7b9cc325d0328c73b","name":"@a5omic/flowdown-react","dist-tags":{"latest":"0.1.4"},"versions":{"0.1.0":{"name":"@a5omic/flowdown-react","version":"0.1.0","keywords":["markdown","streaming","react","llm","ai","chat","react-markdown","streaming-markdown"],"author":{"name":"Tom"},"license":"MIT","_id":"@a5omic/flowdown-react@0.1.0","maintainers":[{"name":"a5omic","email":"therekishianime@gmail.com"}],"homepage":"https://github.com/Atomics-hub/flowdown#readme","bugs":{"url":"https://github.com/Atomics-hub/flowdown/issues"},"dist":{"shasum":"f2afc78a9509d5f68fd3f5c8ab30fec7fcb25244","tarball":"https://registry.npmjs.org/@a5omic/flowdown-react/-/flowdown-react-0.1.0.tgz","fileCount":13,"integrity":"sha512-0hkaCYzK0lVqwHcG9U9ZhZfMtt+iXCWIxVUm2EOwwq9/2tHTd6LRqHOcb/rQPG+C9m9DhC2lCXANHjADGt/1Yg==","signatures":[{"sig":"MEUCIHBkoA8sfhqDfRaS/WJ6o7cUrfwIxZFF45wktSKBqj5aAiEAjVmVfI0dlb6iwvLaWindo6VcoE78PBFl/Qe44VIQOA8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9843},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"81c12d0f84fd1602096d2550334a8d4ac65ca7f9","scripts":{"dev":"tsc --watch","build":"tsc"},"_npmUser":{"name":"a5omic","email":"therekishianime@gmail.com"},"repository":{"url":"git+https://github.com/Atomics-hub/flowdown.git","type":"git"},"_npmVersion":"11.6.0","description":"React wrapper for Flowdown — O(1) streaming markdown renderer","directories":{},"sideEffects":false,"_nodeVersion":"24.8.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.7.0","@types/react":"^19.0.0"},"peerDependencies":{"react":">=18.0.0","@a5omic/flowdown":">=0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowdown-react_0.1.0_1775190166562_0.5764670045041984","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@a5omic/flowdown-react","version":"0.1.1","keywords":["markdown","streaming","react","llm","ai","chat","react-markdown","streaming-markdown"],"author":{"name":"Tom"},"license":"MIT","_id":"@a5omic/flowdown-react@0.1.1","maintainers":[{"name":"a5omic","email":"therekishianime@gmail.com"}],"homepage":"https://github.com/Atomics-hub/flowdown#readme","bugs":{"url":"https://github.com/Atomics-hub/flowdown/issues"},"dist":{"shasum":"1478f08023a3211264715e231409a24a9da42814","tarball":"https://registry.npmjs.org/@a5omic/flowdown-react/-/flowdown-react-0.1.1.tgz","fileCount":14,"integrity":"sha512-pyRxOyOXalLmgcztOlZeGGU55F7EfXuzJvLenAUPu2VtrWWvjle/MQIQmCdrDEXgjSfJWlNjO3SODY9mYiWvQg==","signatures":[{"sig":"MEUCIEP/TrLQ0CEHrScRQpqghKtk7wkCwC45/ca+KerZ2JQVAiEA4x6dWM9ziyZGQ+BK3YzLHkW/dmQiGzM8pV7+YRdUpgw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14521},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"81c12d0f84fd1602096d2550334a8d4ac65ca7f9","scripts":{"dev":"tsc --watch","build":"tsc"},"_npmUser":{"name":"a5omic","email":"therekishianime@gmail.com"},"repository":{"url":"git+https://github.com/Atomics-hub/flowdown.git","type":"git"},"_npmVersion":"11.6.0","description":"React wrapper for Flowdown — O(1) streaming markdown renderer","directories":{},"sideEffects":false,"_nodeVersion":"24.8.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.7.0","@types/react":"^19.0.0"},"peerDependencies":{"react":">=18.0.0","@a5omic/flowdown":">=0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowdown-react_0.1.1_1775190227880_0.6143487746753422","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@a5omic/flowdown-react","version":"0.1.2","keywords":["markdown","streaming","react","llm","ai","chat","react-markdown","streaming-markdown"],"author":{"name":"Tom"},"license":"MIT","_id":"@a5omic/flowdown-react@0.1.2","maintainers":[{"name":"a5omic","email":"therekishianime@gmail.com"}],"homepage":"https://github.com/Atomics-hub/flowdown#readme","bugs":{"url":"https://github.com/Atomics-hub/flowdown/issues"},"dist":{"shasum":"c6c44e3466176908a104bdfb74d6cb6d532fae7f","tarball":"https://registry.npmjs.org/@a5omic/flowdown-react/-/flowdown-react-0.1.2.tgz","fileCount":14,"integrity":"sha512-aqCq/fk6JUdgO/ogNexv5miV6qPMrN1viekAVA3XgL+lYA6d69tjUdywBbsP3dv14PDa/aaStLP1zuItuzdfsw==","signatures":[{"sig":"MEQCIFd3X0HZmPVPgpEcRYmTQKN1uUkH830oKW7Tdn6V0mIfAiBhJl8rO7aDOut/UP/CgtBQYmiA4pPfU8OMD8VngsCPsg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11807},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"7add02e16ae8188a58f279df7732f93fcd2adfce","scripts":{"dev":"tsc --watch","build":"tsc"},"_npmUser":{"name":"a5omic","email":"therekishianime@gmail.com"},"repository":{"url":"git+https://github.com/Atomics-hub/flowdown.git","type":"git"},"_npmVersion":"11.6.0","description":"React wrapper for Flowdown — O(1) streaming markdown renderer","directories":{},"sideEffects":false,"_nodeVersion":"24.8.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.7.0","@types/react":"^19.0.0"},"peerDependencies":{"react":">=18.0.0","@a5omic/flowdown":">=0.1.2"},"_npmOperationalInternal":{"tmp":"tmp/flowdown-react_0.1.2_1775625993081_0.43457658600052484","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@a5omic/flowdown-react","version":"0.1.3","keywords":["markdown","streaming","react","llm","ai","chat","react-markdown","streaming-markdown"],"author":{"name":"Tom"},"license":"MIT","_id":"@a5omic/flowdown-react@0.1.3","maintainers":[{"name":"a5omic","email":"therekishianime@gmail.com"}],"homepage":"https://github.com/Atomics-hub/flowdown#readme","bugs":{"url":"https://github.com/Atomics-hub/flowdown/issues"},"dist":{"shasum":"a48aeaf2a8eea2d69ba4504b7a9a2667130a2f06","tarball":"https://registry.npmjs.org/@a5omic/flowdown-react/-/flowdown-react-0.1.3.tgz","fileCount":14,"integrity":"sha512-IkVS0wYAeny+w5ti2R26J+zpTC3+d2G5zaSaURY9T9YzCpuALIqXTeDHJ1mVcNiY3cUSuEwcYZjYZpGeh78d8Q==","signatures":[{"sig":"MEQCIDTcIFEwejn+wXy8msVjGMHQU6yUQVAn32LdVwunFYmvAiAsj98ytFiTYTLS7hztkQQOmZ82UDUFwHx1l5OXnDzEbA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12078},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"4ccd53f6bd23032590b9957fee7b76f52f4c082c","scripts":{"dev":"tsc --watch","build":"tsc"},"_npmUser":{"name":"a5omic","email":"therekishianime@gmail.com"},"repository":{"url":"git+https://github.com/Atomics-hub/flowdown.git","type":"git"},"_npmVersion":"11.6.0","description":"React wrapper for Flowdown — O(1) streaming markdown renderer","directories":{},"sideEffects":false,"_nodeVersion":"24.8.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.7.0","@types/react":"^19.0.0"},"peerDependencies":{"react":">=18.0.0","@a5omic/flowdown":">=0.1.2"},"_npmOperationalInternal":{"tmp":"tmp/flowdown-react_0.1.3_1777826575731_0.18532899200345954","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@a5omic/flowdown-react","version":"0.1.4","description":"React wrapper for Flowdown — O(1) streaming markdown renderer","type":"module","main":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"import":"./dist/index.js","types":"./dist/index.d.ts"}},"sideEffects":false,"scripts":{"build":"tsc","dev":"tsc --watch"},"keywords":["markdown","streaming","react","llm","ai","chat","react-markdown","streaming-markdown"],"license":"MIT","author":{"name":"Tom"},"homepage":"https://github.com/Atomics-hub/flowdown#readme","repository":{"type":"git","url":"git+https://github.com/Atomics-hub/flowdown.git"},"bugs":{"url":"https://github.com/Atomics-hub/flowdown/issues"},"engines":{"node":">=18.0.0"},"peerDependencies":{"react":">=18.0.0","@a5omic/flowdown":">=0.1.2"},"devDependencies":{"@types/react":"^19.0.0","typescript":"^5.7.0"},"_id":"@a5omic/flowdown-react@0.1.4","gitHead":"58ef3eeefaf36dba4bbd7ac1d17e3b16b1e67a59","_nodeVersion":"24.8.0","_npmVersion":"11.6.0","dist":{"integrity":"sha512-OlxairSG/Cgj5tXIzeZZ7PHVRH+GXTsJki0cctBzuUsxJjHIeWZ5uj/btWXrY47DMsYWXHRiqkcs1DSyFVcVBA==","shasum":"bd686febdb622d4c4c1cd44a98eac2aa8cf4b224","tarball":"https://registry.npmjs.org/@a5omic/flowdown-react/-/flowdown-react-0.1.4.tgz","fileCount":14,"unpackedSize":12138,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIAW1zXA6+sGqJBhWbKiXXeOoM9lfQcWaBknXk4gpuKuNAiEArFIYQxclpgfvD0HCFkr+Qr4Z1V/ZmihOclhxx1UaBD4="}]},"_npmUser":{"name":"a5omic","email":"therekishianime@gmail.com"},"directories":{},"maintainers":[{"name":"a5omic","email":"therekishianime@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/flowdown-react_0.1.4_1777849496484_0.6148875798751423"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-03T04:22:46.496Z","modified":"2026-05-03T23:04:56.757Z","0.1.0":"2026-04-03T04:22:46.708Z","0.1.1":"2026-04-03T04:23:48.026Z","0.1.2":"2026-04-08T05:26:33.230Z","0.1.3":"2026-05-03T16:42:56.055Z","0.1.4":"2026-05-03T23:04:56.628Z"},"bugs":{"url":"https://github.com/Atomics-hub/flowdown/issues"},"author":{"name":"Tom"},"license":"MIT","homepage":"https://github.com/Atomics-hub/flowdown#readme","keywords":["markdown","streaming","react","llm","ai","chat","react-markdown","streaming-markdown"],"repository":{"type":"git","url":"git+https://github.com/Atomics-hub/flowdown.git"},"description":"React wrapper for Flowdown — O(1) streaming markdown renderer","maintainers":[{"name":"a5omic","email":"therekishianime@gmail.com"}],"readme":"# flowdown-react\n\nReact wrapper for [@a5omic/flowdown](https://www.npmjs.com/package/@a5omic/flowdown).\n\n`@a5omic/flowdown-react` keeps Flowdown's incremental parser path while still rendering the unfinished trailing line during React updates.\n\n## Hosted Flowdown\n\nFlowdown stays MIT and local-first. Hosted Flowdown adds early-access private model support at $49/mo and server-side chat rendering at $199/mo.\n\nStart hosted checkout at https://flowdown-hosted-gejo3xsy3a-uc.a.run.app/ or read [HOSTED.md](https://github.com/Atomics-hub/flowdown/blob/main/HOSTED.md).\n\n## Install\n\n```bash\nnpm install react react-dom @a5omic/flowdown @a5omic/flowdown-react\n```\n\n## Component\n\n```tsx\nimport { StreamMarkdown } from '@a5omic/flowdown-react'\n\nexport function ChatMessage({ content }: { content: string }) {\n  return <StreamMarkdown content={content} />\n}\n```\n\n## Hook\n\n```tsx\nimport { useEffect } from 'react'\nimport { useStreamMarkdown } from '@a5omic/flowdown-react'\n\nexport function LiveMessage({ chunks }: { chunks: string[] }) {\n  const { ref, push, flush, end } = useStreamMarkdown()\n\n  useEffect(() => {\n    for (const chunk of chunks) {\n      push(chunk)\n      flush()\n    }\n    end()\n  }, [chunks, push, flush, end])\n\n  return <div ref={ref} />\n}\n```\n\n## API\n\n### `StreamMarkdown`\n\nProps:\n\n- `content: string` — Full markdown content received so far\n- `className?: string`\n- `style?: CSSProperties`\n- `highlight?: (code, lang) => string | Promise<string>`\n- `onCodeBlock?: (code, lang) => void`\n- `sanitize?: boolean`\n- `virtualize?: boolean`\n\n### `useStreamMarkdown(options?)`\n\nReturns:\n\n- `ref` — Attach to the container element\n- `push(chunk)` — Append new markdown content\n- `flush()` — Materialize the unfinished trailing line without ending the stream\n- `end()` — Finalize the current stream\n- `reset()` — Clear all output and parser state\n\n## License\n\nMIT\n","readmeFilename":"README.md"}