{"_id":"@angadie/chittie-react","_rev":"21-b2d82abf8429369fa3f3aa5fae7829f2","name":"@angadie/chittie-react","dist-tags":{"latest":"0.17.0"},"versions":{"0.1.0":{"name":"@angadie/chittie-react","version":"0.1.0","license":"MIT","_id":"@angadie/chittie-react@0.1.0","maintainers":[{"name":"octalpixel","email":"mithushancj@gmail.com"}],"dist":{"shasum":"b42c7c205e9ad44991bc1dd35b8fc2ab345422ac","tarball":"https://registry.npmjs.org/@angadie/chittie-react/-/chittie-react-0.1.0.tgz","fileCount":5,"integrity":"sha512-k9x3aU2Im2t+ySOfgeAdOEbAdS1uEfagveKo+RLyNRTBz6h1j4ZdPTTWw94s0YprpdPmG4ZTnABga2WEio8Aaw==","signatures":[{"sig":"MEYCIQDB6uEVqNwkUbP422vcWrgHWxmODRqN6IQ5SMcwmXttMQIhAMdRmYU1zXE0JlXtQ/cME1E4+k4E3W03/5448HBy2HzR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16036},"type":"module","_from":"file:angadie-chittie-react-0.1.0.tgz","types":"./dist/index.d.mts","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs"}},"scripts":{"test":"tsx spikes/jsx.spike.tsx","build":"tsdown","typecheck":"tsc --noEmit"},"_npmUser":{"name":"octalpixel","email":"mithushancj@gmail.com"},"_resolved":"/private/var/folders/j5/7dkmn95d0_9b5fdnfsmpjs580000gn/T/a2fda1e52f45de81afcea5395e862ade/angadie-chittie-react-0.1.0.tgz","_integrity":"sha512-k9x3aU2Im2t+ySOfgeAdOEbAdS1uEfagveKo+RLyNRTBz6h1j4ZdPTTWw94s0YprpdPmG4ZTnABga2WEio8Aaw==","_npmVersion":"10.9.7","description":"Pure JSX receipt authoring → ESC/POS bytes. RN-safe (no react-dom, no HTML host elements). Renders onto chittie-core.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"@angadie/chittie-core":"0.1.0","@angadie/chittie-text":"0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@canvas/image-data":"^1.1.0"},"peerDependencies":{"react":"^18 || ^19"},"_npmOperationalInternal":{"tmp":"tmp/chittie-react_0.1.0_1782189726320_0.5172503936501549","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@angadie/chittie-react","version":"0.1.1","license":"MIT","_id":"@angadie/chittie-react@0.1.1","maintainers":[{"name":"octalpixel","email":"mithushancj@gmail.com"}],"dist":{"shasum":"73fcbfecb5be23877f86741a5890a9f8715d00ff","tarball":"https://registry.npmjs.org/@angadie/chittie-react/-/chittie-react-0.1.1.tgz","fileCount":5,"integrity":"sha512-h0+U1H46xdUUr1A1SkaSHyF1Ua/KfmlmNvmvWY4Zu52NiThY8Y2G1BWYOQMwSCWIFS+5YtUKUeo4qdxJneA0NQ==","signatures":[{"sig":"MEUCIQD48ATwtmpak/ghQlGCybgCqIg9JixGyLt6EEgu0WPtswIgMsZyYmbo7fbYWDm4725dniEPCYoW4kCoTLnRrBwyp+Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16036},"type":"module","_from":"file:angadie-chittie-react-0.1.1.tgz","types":"./dist/index.d.mts","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs"}},"scripts":{"test":"tsx spikes/jsx.spike.tsx","build":"tsdown","typecheck":"tsc --noEmit"},"_npmUser":{"name":"octalpixel","email":"mithushancj@gmail.com"},"_resolved":"/private/var/folders/j5/7dkmn95d0_9b5fdnfsmpjs580000gn/T/9c88d3e2bef37d7c56f0c737e6f74b64/angadie-chittie-react-0.1.1.tgz","_integrity":"sha512-h0+U1H46xdUUr1A1SkaSHyF1Ua/KfmlmNvmvWY4Zu52NiThY8Y2G1BWYOQMwSCWIFS+5YtUKUeo4qdxJneA0NQ==","_npmVersion":"10.9.7","description":"Pure JSX receipt authoring → ESC/POS bytes. RN-safe (no react-dom, no HTML host elements). Renders onto chittie-core.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"@angadie/chittie-core":"0.1.1","@angadie/chittie-text":"0.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@canvas/image-data":"^1.1.0"},"peerDependencies":{"react":"^18 || ^19"},"_npmOperationalInternal":{"tmp":"tmp/chittie-react_0.1.1_1782190370287_0.42924261810540787","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@angadie/chittie-react","version":"0.2.0","license":"MIT","_id":"@angadie/chittie-react@0.2.0","maintainers":[{"name":"octalpixel","email":"mithushancj@gmail.com"}],"dist":{"shasum":"54cc17d4fe4fb5b65fa6f8569df256eb339b7795","tarball":"https://registry.npmjs.org/@angadie/chittie-react/-/chittie-react-0.2.0.tgz","fileCount":5,"integrity":"sha512-UlC7ZXBTq0NKfcisoDUUv6bBfmePrLh6DwNQb2+L5NByfutHcB9+klTSVSRUGUzESpvQaWXSrOD54tpPo6AgFQ==","signatures":[{"sig":"MEUCIG5GqtpLxdOOYQ81BhQpTtsfjfciUAjQw8hwv3FYnQK2AiEAnTo4xP18wiKxBnStzo+Whq5R4LHSK7q8iu/3LXIJ5f8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16087},"type":"module","_from":"file:angadie-chittie-react-0.2.0.tgz","types":"./dist/index.d.mts","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs"}},"scripts":{"test":"tsx spikes/jsx.spike.tsx","build":"tsdown","typecheck":"tsc --noEmit"},"_npmUser":{"name":"octalpixel","email":"mithushancj@gmail.com"},"_resolved":"/private/var/folders/j5/7dkmn95d0_9b5fdnfsmpjs580000gn/T/a614ad119a84a8a96a9cf7476e5db049/angadie-chittie-react-0.2.0.tgz","_integrity":"sha512-UlC7ZXBTq0NKfcisoDUUv6bBfmePrLh6DwNQb2+L5NByfutHcB9+klTSVSRUGUzESpvQaWXSrOD54tpPo6AgFQ==","_npmVersion":"10.9.7","description":"Pure JSX receipt authoring → ESC/POS bytes. RN-safe (no react-dom, no HTML host elements). Renders onto chittie-core.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"@angadie/chittie-core":"0.2.0","@angadie/chittie-text":"0.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@canvas/image-data":"^1.1.0"},"peerDependencies":{"react":"^18 || ^19"},"_npmOperationalInternal":{"tmp":"tmp/chittie-react_0.2.0_1782192882816_0.03558751345544642","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@angadie/chittie-react","version":"0.3.0","license":"MIT","_id":"@angadie/chittie-react@0.3.0","maintainers":[{"name":"octalpixel","email":"mithushancj@gmail.com"}],"dist":{"shasum":"bed9a5b1eecd0da5c7d91082a035dde9ba1b5b8e","tarball":"https://registry.npmjs.org/@angadie/chittie-react/-/chittie-react-0.3.0.tgz","fileCount":5,"integrity":"sha512-BSnwSPCzl4+OApzoJIjtqv5zM8Cs6z0E9Jzbu5ofrU6wiHjwKe3wY9VPOVm341Zxj3qo43rsXfYrsy/pRNptYQ==","signatures":[{"sig":"MEUCIA9PXg8jmU65wdzyeaywHkI9ngDiaSfOCr7e5sVC4TCtAiEA36PGw4UejdYEoWZImV9Oep1IOmXS6E9OVmvo4rr+W+s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16482},"type":"module","_from":"file:angadie-chittie-react-0.3.0.tgz","types":"./dist/index.d.mts","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs"}},"scripts":{"test":"tsx spikes/jsx.spike.tsx","build":"tsdown","typecheck":"tsc --noEmit"},"_npmUser":{"name":"octalpixel","email":"mithushancj@gmail.com"},"_resolved":"/private/var/folders/j5/7dkmn95d0_9b5fdnfsmpjs580000gn/T/c97316d2f2b2ba56e5dd4915c9181d30/angadie-chittie-react-0.3.0.tgz","_integrity":"sha512-BSnwSPCzl4+OApzoJIjtqv5zM8Cs6z0E9Jzbu5ofrU6wiHjwKe3wY9VPOVm341Zxj3qo43rsXfYrsy/pRNptYQ==","_npmVersion":"10.9.7","description":"Pure JSX receipt authoring → ESC/POS bytes. RN-safe (no react-dom, no HTML host elements). Renders onto chittie-core.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"@angadie/chittie-core":"0.3.0","@angadie/chittie-text":"0.3.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@canvas/image-data":"^1.1.0"},"peerDependencies":{"react":"^18 || ^19"},"_npmOperationalInternal":{"tmp":"tmp/chittie-react_0.3.0_1782238398072_0.8486122737858617","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@angadie/chittie-react","version":"0.4.0","license":"MIT","_id":"@angadie/chittie-react@0.4.0","maintainers":[{"name":"octalpixel","email":"mithushancj@gmail.com"}],"dist":{"shasum":"f413c6bd8689d425150e2fb887e7bbc5b9721c4e","tarball":"https://registry.npmjs.org/@angadie/chittie-react/-/chittie-react-0.4.0.tgz","fileCount":5,"integrity":"sha512-fxOQslWpR0LXLC+0Hq8qjN/d/6TafTmaDuC4L+M0kdB8ieI2Is16ZEs0oWPjKZftP/TOGEgWm5XDKbMq+t2f+A==","signatures":[{"sig":"MEUCIH1+Zameq9k8J2PWgkQPoX0w9kNAQpSa5fu+JMn0Q4HhAiEA5XxspZ33Uo3ywvOnUXC0Rqvh1v6CHWkIIRI1UsIW+Pw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16482},"type":"module","_from":"file:angadie-chittie-react-0.4.0.tgz","types":"./dist/index.d.mts","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs"}},"scripts":{"test":"tsx spikes/jsx.spike.tsx","build":"tsdown","typecheck":"tsc --noEmit"},"_npmUser":{"name":"octalpixel","email":"mithushancj@gmail.com"},"_resolved":"/private/var/folders/j5/7dkmn95d0_9b5fdnfsmpjs580000gn/T/ae3f4906ea898e33acdcf5e91e36dedd/angadie-chittie-react-0.4.0.tgz","_integrity":"sha512-fxOQslWpR0LXLC+0Hq8qjN/d/6TafTmaDuC4L+M0kdB8ieI2Is16ZEs0oWPjKZftP/TOGEgWm5XDKbMq+t2f+A==","_npmVersion":"10.9.7","description":"Pure JSX receipt authoring → ESC/POS bytes. RN-safe (no react-dom, no HTML host elements). Renders onto chittie-core.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"@angadie/chittie-core":"0.4.0","@angadie/chittie-text":"0.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@canvas/image-data":"^1.1.0"},"peerDependencies":{"react":"^18 || ^19"},"_npmOperationalInternal":{"tmp":"tmp/chittie-react_0.4.0_1782239457988_0.9642231583776228","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@angadie/chittie-react","version":"0.5.0","license":"MIT","_id":"@angadie/chittie-react@0.5.0","maintainers":[{"name":"octalpixel","email":"mithushancj@gmail.com"}],"dist":{"shasum":"e4beda276c683541990e900958cef162d9a40fc9","tarball":"https://registry.npmjs.org/@angadie/chittie-react/-/chittie-react-0.5.0.tgz","fileCount":5,"integrity":"sha512-IW/omq4+zkbip6F1JelXJ34nCY3x3KT7ZZsoYE9Es/d4IxFUxFQeSXY8uxElLPihAAJqsUTBu41J8I0UQp+XFg==","signatures":[{"sig":"MEYCIQDtDVLx5hN/4RCGb2VzU1sRyzcAJjtUyLhGahQW7ZyheQIhAKsLCqR6GlWtPIJUgK7+Gtywi3V8ovnqJAcvh/faV8L7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16482},"type":"module","_from":"file:angadie-chittie-react-0.5.0.tgz","types":"./dist/index.d.mts","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs"}},"scripts":{"test":"tsx spikes/jsx.spike.tsx","build":"tsdown","typecheck":"tsc --noEmit"},"_npmUser":{"name":"octalpixel","email":"mithushancj@gmail.com"},"_resolved":"/private/var/folders/j5/7dkmn95d0_9b5fdnfsmpjs580000gn/T/02af73ce454139cfaf86aa757eff7958/angadie-chittie-react-0.5.0.tgz","_integrity":"sha512-IW/omq4+zkbip6F1JelXJ34nCY3x3KT7ZZsoYE9Es/d4IxFUxFQeSXY8uxElLPihAAJqsUTBu41J8I0UQp+XFg==","_npmVersion":"10.9.7","description":"Pure JSX receipt authoring → ESC/POS bytes. RN-safe (no react-dom, no HTML host elements). Renders onto chittie-core.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"@angadie/chittie-core":"0.5.0","@angadie/chittie-text":"0.5.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@canvas/image-data":"^1.1.0"},"peerDependencies":{"react":"^18 || ^19"},"_npmOperationalInternal":{"tmp":"tmp/chittie-react_0.5.0_1782240876013_0.0047666189657487035","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@angadie/chittie-react","version":"0.6.0","license":"MIT","_id":"@angadie/chittie-react@0.6.0","maintainers":[{"name":"octalpixel","email":"mithushancj@gmail.com"}],"dist":{"shasum":"7bd281a7d1bb061182928d30444b4cdc809a54d4","tarball":"https://registry.npmjs.org/@angadie/chittie-react/-/chittie-react-0.6.0.tgz","fileCount":5,"integrity":"sha512-ZyCGuLl8Dc4hYRJC6YbjccLsw6eejfrX8k1WIBGM8A0Ui+STlrzJveo9YCOVparS2kOzlPoiur9yF7Ib6z6pZg==","signatures":[{"sig":"MEQCIDVCPUXHbU+sjfEkkT3TpRRAMrhYGYSRJaHpCD9hCkq0AiBt4kt3dLjGPOm9BvU/soBFsV/cHNHhh3Q2IMJHdC+akw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17704},"type":"module","_from":"file:angadie-chittie-react-0.6.0.tgz","types":"./dist/index.d.mts","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs"}},"scripts":{"test":"tsx spikes/jsx.spike.tsx","build":"tsdown","typecheck":"tsc --noEmit"},"_npmUser":{"name":"octalpixel","email":"mithushancj@gmail.com"},"_resolved":"/private/var/folders/j5/7dkmn95d0_9b5fdnfsmpjs580000gn/T/f7a4aa60605f2803d9a0e7a51dbde305/angadie-chittie-react-0.6.0.tgz","_integrity":"sha512-ZyCGuLl8Dc4hYRJC6YbjccLsw6eejfrX8k1WIBGM8A0Ui+STlrzJveo9YCOVparS2kOzlPoiur9yF7Ib6z6pZg==","_npmVersion":"10.9.7","description":"Pure JSX receipt authoring → ESC/POS bytes. RN-safe (no react-dom, no HTML host elements). Renders onto chittie-core.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"@angadie/chittie-core":"0.5.0","@angadie/chittie-text":"0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@canvas/image-data":"^1.1.0"},"peerDependencies":{"react":"^18 || ^19"},"_npmOperationalInternal":{"tmp":"tmp/chittie-react_0.6.0_1782302956342_0.09058315817908658","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@angadie/chittie-react","version":"0.7.0","license":"MIT","_id":"@angadie/chittie-react@0.7.0","maintainers":[{"name":"octalpixel","email":"mithushancj@gmail.com"}],"dist":{"shasum":"9eaec09661c972ea14ad88c8550514f7c027ebb3","tarball":"https://registry.npmjs.org/@angadie/chittie-react/-/chittie-react-0.7.0.tgz","fileCount":5,"integrity":"sha512-cSL0hlHuLcmMUHYmJi2QthM35WfAZ81quc73bH+pjw9cUvpByvYDQKtbroTM6qEK4qw7bhcP3k/QJYdeLii4TA==","signatures":[{"sig":"MEUCIQDQAKL6xj4hIj9xQT175ShNmVr/MOCKgGUfi6l/9i+JUQIgNRQpXKJIcmwOohtAnmxmcqPdH2BqLwC9845QbdSfi2g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17734},"type":"module","_from":"file:angadie-chittie-react-0.7.0.tgz","types":"./dist/index.d.mts","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs"}},"scripts":{"test":"tsx spikes/jsx.spike.tsx","build":"tsdown","typecheck":"tsc --noEmit"},"_npmUser":{"name":"octalpixel","email":"mithushancj@gmail.com"},"_resolved":"/private/var/folders/j5/7dkmn95d0_9b5fdnfsmpjs580000gn/T/b83cee4f98f0c3641febb575a6f995ed/angadie-chittie-react-0.7.0.tgz","_integrity":"sha512-cSL0hlHuLcmMUHYmJi2QthM35WfAZ81quc73bH+pjw9cUvpByvYDQKtbroTM6qEK4qw7bhcP3k/QJYdeLii4TA==","_npmVersion":"10.9.7","description":"Pure JSX receipt authoring → ESC/POS bytes. RN-safe (no react-dom, no HTML host elements). Renders onto chittie-core.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"@angadie/chittie-core":"0.5.0","@angadie/chittie-text":"0.7.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@canvas/image-data":"^1.1.0"},"peerDependencies":{"react":"^18 || ^19"},"_npmOperationalInternal":{"tmp":"tmp/chittie-react_0.7.0_1782323112206_0.2743427899202524","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@angadie/chittie-react","version":"0.8.0","license":"MIT","_id":"@angadie/chittie-react@0.8.0","maintainers":[{"name":"octalpixel","email":"mithushancj@gmail.com"}],"dist":{"shasum":"ce7ddfe246e8abe957be9b19060efc17bc0dc64c","tarball":"https://registry.npmjs.org/@angadie/chittie-react/-/chittie-react-0.8.0.tgz","fileCount":5,"integrity":"sha512-rNitT9DU9xTljZum6nP986ta1WDrTrlgVaLGzCnVyvKsvxjt/ADG3gBqtgZRvoiiqtlqAmtXyjWZWISJhbVrPA==","signatures":[{"sig":"MEQCIGLrY5grMtO6YyNheUOHgNDKCXFqGbD/pFFtcKqrd6VlAiAUKWiYcXor/Adc54FzxbZlCMg4hI9zB7UGYreMnkpDIQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17943},"type":"module","_from":"file:angadie-chittie-react-0.8.0.tgz","types":"./dist/index.d.mts","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs"}},"scripts":{"test":"tsx spikes/jsx.spike.tsx","build":"tsdown","typecheck":"tsc --noEmit"},"_npmUser":{"name":"octalpixel","email":"mithushancj@gmail.com"},"_resolved":"/private/var/folders/j5/7dkmn95d0_9b5fdnfsmpjs580000gn/T/4a1730448d34f45b38908206e6bbd556/angadie-chittie-react-0.8.0.tgz","_integrity":"sha512-rNitT9DU9xTljZum6nP986ta1WDrTrlgVaLGzCnVyvKsvxjt/ADG3gBqtgZRvoiiqtlqAmtXyjWZWISJhbVrPA==","_npmVersion":"10.9.7","description":"Pure JSX receipt authoring → ESC/POS bytes. RN-safe (no react-dom, no HTML host elements). Renders onto chittie-core.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"@angadie/chittie-core":"0.5.0","@angadie/chittie-text":"0.8.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@canvas/image-data":"^1.1.0"},"peerDependencies":{"react":"^18 || ^19"},"_npmOperationalInternal":{"tmp":"tmp/chittie-react_0.8.0_1782372107461_0.2663586323553133","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"@angadie/chittie-react","version":"0.9.0","license":"MIT","_id":"@angadie/chittie-react@0.9.0","maintainers":[{"name":"octalpixel","email":"mithushancj@gmail.com"}],"dist":{"shasum":"1c15a2b5fe3c3ddbdbf642c7bf3b775eea5f411c","tarball":"https://registry.npmjs.org/@angadie/chittie-react/-/chittie-react-0.9.0.tgz","fileCount":5,"integrity":"sha512-biV8y16n3pZ04bbN0rZ9pfKg+IhrTsjPlxD80+eBpo0i/sERLPQgmhdlW0lAZ1e0uHTCi+nqNMZP3H1NW6KmhA==","signatures":[{"sig":"MEUCIQDzqFWsDJ9QZ6yCQcoj7GVsrFK9p7D5aMWPNBzeMrO3hQIgVjyNjx/oAAUfr6/mXO2BJQKkiL2DxIUUqnXekYYw8i4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":18805},"type":"module","_from":"file:angadie-chittie-react-0.9.0.tgz","types":"./dist/index.d.mts","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs"}},"scripts":{"test":"tsx spikes/jsx.spike.tsx","build":"tsdown","typecheck":"tsc --noEmit"},"_npmUser":{"name":"octalpixel","email":"mithushancj@gmail.com"},"_resolved":"/private/var/folders/j5/7dkmn95d0_9b5fdnfsmpjs580000gn/T/342ecdd330171e0e0c7c9f774f33165d/angadie-chittie-react-0.9.0.tgz","_integrity":"sha512-biV8y16n3pZ04bbN0rZ9pfKg+IhrTsjPlxD80+eBpo0i/sERLPQgmhdlW0lAZ1e0uHTCi+nqNMZP3H1NW6KmhA==","_npmVersion":"10.9.7","description":"Pure JSX receipt authoring → ESC/POS bytes. RN-safe (no react-dom, no HTML host elements). Renders onto chittie-core.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"@angadie/chittie-core":"0.5.0","@angadie/chittie-text":"0.8.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@canvas/image-data":"^1.1.0"},"peerDependencies":{"react":"^18 || ^19"},"_npmOperationalInternal":{"tmp":"tmp/chittie-react_0.9.0_1782392271526_0.6820873950062636","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"@angadie/chittie-react","version":"0.10.0","license":"MIT","_id":"@angadie/chittie-react@0.10.0","maintainers":[{"name":"octalpixel","email":"mithushancj@gmail.com"}],"dist":{"shasum":"12bde6205d8ef667fc794ab1477056034fd837cc","tarball":"https://registry.npmjs.org/@angadie/chittie-react/-/chittie-react-0.10.0.tgz","fileCount":5,"integrity":"sha512-vx23m2bjRSW223gktb8GJrB7W58JRxBkRTd3/BPRdISMFPqd0puGNioSKfaiSANc/sYWyTMMg4Ty7e4+Ou4EMA==","signatures":[{"sig":"MEQCIE2Tn+0D32kZuIwjEWduMjbpSwwDCZ1COFCXB43yhYj8AiB+5Q2fVWBSrL8gtSQUKm+j4E3s9BtSwZE+x4NqGvBv/w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19040},"type":"module","_from":"file:angadie-chittie-react-0.10.0.tgz","types":"./dist/index.d.mts","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs"}},"scripts":{"test":"tsx spikes/jsx.spike.tsx","build":"tsdown","typecheck":"tsc --noEmit"},"_npmUser":{"name":"octalpixel","email":"mithushancj@gmail.com"},"_resolved":"/private/var/folders/j5/7dkmn95d0_9b5fdnfsmpjs580000gn/T/2d118305e9e7be7214b3a013c547a2b0/angadie-chittie-react-0.10.0.tgz","_integrity":"sha512-vx23m2bjRSW223gktb8GJrB7W58JRxBkRTd3/BPRdISMFPqd0puGNioSKfaiSANc/sYWyTMMg4Ty7e4+Ou4EMA==","_npmVersion":"10.9.7","description":"Pure JSX receipt authoring → ESC/POS bytes. RN-safe (no react-dom, no HTML host elements). Renders onto chittie-core.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"@angadie/chittie-core":"0.5.0","@angadie/chittie-text":"0.8.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@canvas/image-data":"^1.1.0"},"peerDependencies":{"react":"^18 || ^19"},"_npmOperationalInternal":{"tmp":"tmp/chittie-react_0.10.0_1782412175131_0.5238619209947986","host":"s3://npm-registry-packages-npm-production"}},"0.10.1":{"name":"@angadie/chittie-react","version":"0.10.1","license":"MIT","_id":"@angadie/chittie-react@0.10.1","maintainers":[{"name":"octalpixel","email":"mithushancj@gmail.com"}],"dist":{"shasum":"be2f3213840b5e2eb0cd61615b9f8eb83eed2e8e","tarball":"https://registry.npmjs.org/@angadie/chittie-react/-/chittie-react-0.10.1.tgz","fileCount":5,"integrity":"sha512-6xucUd6U8sgPTs6R8zgZmgvI6y3wmof1Nkdn3ExqzZ39AgBv9Xqn43D5ulyl1xpd2sHAzjEvy3bb9CEpavyOnA==","signatures":[{"sig":"MEQCIDp+++cx6u8bxT82WkwgYM/Na1IPGwMSADyjjM9lBzZRAiAxY81Ptax79yCGvLKyZ0OvCMzpbmufknt27jfu8+Bjsw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19521},"type":"module","_from":"file:angadie-chittie-react-0.10.1.tgz","types":"./dist/index.d.mts","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs","default":"./dist/index.mjs"}},"scripts":{"test":"tsx spikes/jsx.spike.tsx","build":"tsdown","typecheck":"tsc --noEmit"},"_npmUser":{"name":"octalpixel","email":"mithushancj@gmail.com"},"_resolved":"/private/var/folders/j5/7dkmn95d0_9b5fdnfsmpjs580000gn/T/0da93750bb102ae1b2e4c697dd5e10c2/angadie-chittie-react-0.10.1.tgz","_integrity":"sha512-6xucUd6U8sgPTs6R8zgZmgvI6y3wmof1Nkdn3ExqzZ39AgBv9Xqn43D5ulyl1xpd2sHAzjEvy3bb9CEpavyOnA==","_npmVersion":"10.9.7","description":"Pure JSX receipt authoring → ESC/POS bytes. RN-safe (no react-dom, no HTML host elements). Renders onto chittie-core.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"@angadie/chittie-core":"0.5.1","@angadie/chittie-text":"0.8.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@canvas/image-data":"^1.1.0"},"peerDependencies":{"react":"^18 || ^19"},"_npmOperationalInternal":{"tmp":"tmp/chittie-react_0.10.1_1782463012361_0.5735672249124408","host":"s3://npm-registry-packages-npm-production"}},"0.10.2":{"name":"@angadie/chittie-react","version":"0.10.2","license":"MIT","_id":"@angadie/chittie-react@0.10.2","maintainers":[{"name":"octalpixel","email":"mithushancj@gmail.com"}],"dist":{"shasum":"9703304bfa36f166aab2a8b94cfaff4564bf77b8","tarball":"https://registry.npmjs.org/@angadie/chittie-react/-/chittie-react-0.10.2.tgz","fileCount":5,"integrity":"sha512-HmfBK+OODdR0Kx1XpaEZyGbefX771hVo1+RPsWrQ9t2Dx+CLtKF55lxF+Vh42ydhQj+996ZcPXLQIKMNZ7W9Gg==","signatures":[{"sig":"MEUCIQDWRYSJ0y/Hz0I+p539lm1hmpW33csc6hKYpOf8xSWFMwIgTEnRup1Wdu2yd2XKcOc5AhoouER6gUSqDk47qswnc6A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19521},"type":"module","_from":"file:angadie-chittie-react-0.10.2.tgz","types":"./dist/index.d.mts","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs","default":"./dist/index.mjs"}},"scripts":{"test":"tsx spikes/jsx.spike.tsx","build":"tsdown","typecheck":"tsc --noEmit"},"_npmUser":{"name":"octalpixel","email":"mithushancj@gmail.com"},"_resolved":"/private/var/folders/j5/7dkmn95d0_9b5fdnfsmpjs580000gn/T/80f365bf075723c788eaaa18107e84dd/angadie-chittie-react-0.10.2.tgz","_integrity":"sha512-HmfBK+OODdR0Kx1XpaEZyGbefX771hVo1+RPsWrQ9t2Dx+CLtKF55lxF+Vh42ydhQj+996ZcPXLQIKMNZ7W9Gg==","_npmVersion":"10.9.7","description":"Pure JSX receipt authoring → ESC/POS bytes. RN-safe (no react-dom, no HTML host elements). Renders onto chittie-core.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"@angadie/chittie-core":"0.5.2","@angadie/chittie-text":"0.8.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@canvas/image-data":"^1.1.0"},"peerDependencies":{"react":"^18 || ^19"},"_npmOperationalInternal":{"tmp":"tmp/chittie-react_0.10.2_1787123970715_0.2796080321468142","host":"s3://npm-registry-packages-npm-production"}},"0.11.0":{"name":"@angadie/chittie-react","version":"0.11.0","license":"MIT","_id":"@angadie/chittie-react@0.11.0","maintainers":[{"name":"octalpixel","email":"mithushancj@gmail.com"}],"dist":{"shasum":"b60ca4b25bd8e5502f41b86fd0015942c485b231","tarball":"https://registry.npmjs.org/@angadie/chittie-react/-/chittie-react-0.11.0.tgz","fileCount":5,"integrity":"sha512-G40RCPsVpCBSilYcggldzxUoqL9AZDjT7gBzwoF402IPqdOS8Gi+aLN9C5RYAJunH509WgEeqZVJ9xLRpr3SzQ==","signatures":[{"sig":"MEUCIQC8fkU1d+jdP0R2F6PCwe/JpMGzulOfWO2l561sSQq1zwIgcTrehppwOMkGDXaEs4vUKPAeruUQeykf4R/a2ocIrlc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29210},"type":"module","_from":"file:angadie-chittie-react-0.11.0.tgz","types":"./dist/index.d.mts","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs","default":"./dist/index.mjs"}},"scripts":{"test":"tsx spikes/jsx.spike.tsx && tsx spikes/layout.spike.tsx","build":"tsdown","typecheck":"tsc --noEmit"},"_npmUser":{"name":"octalpixel","email":"mithushancj@gmail.com"},"_resolved":"/private/var/folders/j5/7dkmn95d0_9b5fdnfsmpjs580000gn/T/93466af67c42dad6178cf3be16f50227/angadie-chittie-react-0.11.0.tgz","_integrity":"sha512-G40RCPsVpCBSilYcggldzxUoqL9AZDjT7gBzwoF402IPqdOS8Gi+aLN9C5RYAJunH509WgEeqZVJ9xLRpr3SzQ==","_npmVersion":"10.9.7","description":"Pure JSX receipt authoring → ESC/POS bytes. RN-safe (no react-dom, no HTML host elements). Renders onto chittie-core.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"@angadie/chittie-core":"0.5.3","@angadie/chittie-text":"0.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@canvas/image-data":"^1.1.0"},"peerDependencies":{"react":"^18 || ^19"},"_npmOperationalInternal":{"tmp":"tmp/chittie-react_0.11.0_1787125176406_0.011067104930716054","host":"s3://npm-registry-packages-npm-production"}},"0.12.0":{"name":"@angadie/chittie-react","version":"0.12.0","license":"MIT","_id":"@angadie/chittie-react@0.12.0","maintainers":[{"name":"octalpixel","email":"mithushancj@gmail.com"}],"dist":{"shasum":"58eab6bf70f6b8418f45f0f54182d616d8793466","tarball":"https://registry.npmjs.org/@angadie/chittie-react/-/chittie-react-0.12.0.tgz","fileCount":5,"integrity":"sha512-YsZEx7jojGpuKUBYg8bs6Oqb+CRzRuwtHoocGvga2GLKzR5DPnVA3+TI3ZQNWkQMKnS9YP5zQ1bvgh1BsV9i1A==","signatures":[{"sig":"MEUCIQDh5cKRZubBo3gqlsdKVcq6MYZPpP3Vxcg2tSxRHFBPNwIgXt4XwERyULVZfqderkq5sg+AWpLm6HQ6vqrDHexKbIs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34705},"type":"module","_from":"file:angadie-chittie-react-0.12.0.tgz","types":"./dist/index.d.mts","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs","default":"./dist/index.mjs"}},"scripts":{"test":"tsx spikes/jsx.spike.tsx && tsx spikes/layout.spike.tsx && tsx spikes/table.spike.tsx","build":"tsdown","typecheck":"tsc --noEmit"},"_npmUser":{"name":"octalpixel","email":"mithushancj@gmail.com"},"_resolved":"/private/var/folders/j5/7dkmn95d0_9b5fdnfsmpjs580000gn/T/28b3e312782bcb62a7f148f371188798/angadie-chittie-react-0.12.0.tgz","_integrity":"sha512-YsZEx7jojGpuKUBYg8bs6Oqb+CRzRuwtHoocGvga2GLKzR5DPnVA3+TI3ZQNWkQMKnS9YP5zQ1bvgh1BsV9i1A==","_npmVersion":"10.9.7","description":"Pure JSX receipt authoring → ESC/POS bytes. RN-safe (no react-dom, no HTML host elements). Renders onto chittie-core.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"@angadie/chittie-core":"0.5.3","@angadie/chittie-text":"0.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@canvas/image-data":"^1.1.0"},"peerDependencies":{"react":"^18 || ^19"},"_npmOperationalInternal":{"tmp":"tmp/chittie-react_0.12.0_1787126190441_0.7724584448568654","host":"s3://npm-registry-packages-npm-production"}},"0.13.0":{"name":"@angadie/chittie-react","version":"0.13.0","license":"MIT","_id":"@angadie/chittie-react@0.13.0","maintainers":[{"name":"octalpixel","email":"mithushancj@gmail.com"}],"dist":{"shasum":"6bbfc198fc73b218f3010d37facbb02e36d5c8e5","tarball":"https://registry.npmjs.org/@angadie/chittie-react/-/chittie-react-0.13.0.tgz","fileCount":5,"integrity":"sha512-nfHp/wCZCC75U4hSxAYJPoO7I6yno5WvHfiCK55i6RpbjdovN/EMzMLGR7osnQwEDHDHwpToECBV0ir6AwjmzA==","signatures":[{"sig":"MEYCIQDYVk+ZeGwbRGkaTLSy6zj+7pYEDBVCITepn3nC4uxIQAIhAKw2UUBWe2ELZ8iOjC6asEFww3YobbkU3pjGB7nZgjJo","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIHsMIrFou86zD5Rzy1hUH6FpRlgrbERb/Z7e8tCuS3ASAiAtPWluNrMYlsuBmg6Q4p+z4HKFDhjab5PUxE9yaJiEZQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":43605},"type":"module","_from":"file:angadie-chittie-react-0.13.0.tgz","types":"./dist/index.d.mts","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs","default":"./dist/index.mjs"}},"scripts":{"test":"tsx spikes/jsx.spike.tsx && tsx spikes/layout.spike.tsx && tsx spikes/table.spike.tsx","build":"tsdown","typecheck":"tsc --noEmit"},"_npmUser":{"name":"octalpixel","email":"mithushancj@gmail.com"},"_resolved":"/private/var/folders/j5/7dkmn95d0_9b5fdnfsmpjs580000gn/T/46a4d1367bb13dfdd5925f34890498bd/angadie-chittie-react-0.13.0.tgz","_integrity":"sha512-nfHp/wCZCC75U4hSxAYJPoO7I6yno5WvHfiCK55i6RpbjdovN/EMzMLGR7osnQwEDHDHwpToECBV0ir6AwjmzA==","_npmVersion":"10.9.7","description":"Pure JSX receipt authoring → ESC/POS bytes. RN-safe (no react-dom, no HTML host elements). Renders onto chittie-core.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"@angadie/chittie-core":"0.6.0","@angadie/chittie-text":"0.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@canvas/image-data":"^1.1.0"},"peerDependencies":{"react":"^18 || ^19"},"_npmOperationalInternal":{"tmp":"tmp/chittie-react_0.13.0_1789021749396_0.31287869230708565","host":"s3://npm-registry-packages-npm-production"}},"0.14.0":{"name":"@angadie/chittie-react","version":"0.14.0","license":"MIT","_id":"@angadie/chittie-react@0.14.0","maintainers":[{"name":"octalpixel","email":"mithushancj@gmail.com"}],"dist":{"shasum":"43f2c4447a9f0e392752b63f293494d7fa499f4f","tarball":"https://registry.npmjs.org/@angadie/chittie-react/-/chittie-react-0.14.0.tgz","fileCount":5,"integrity":"sha512-Yw7tNu7kP4ikh5z7qVgKRR1ugaE6pikiU9RN1UCzIQaE8aJ1WPFpcrNxWaBl13ucHJvdCsYtH1BfUZNuHPtDfg==","signatures":[{"sig":"MEUCIQDqKtcwFL+nAY7aSrkG4Az8YuwdSSGobyObyIXNs8yGhwIgVqGUEsyq0vvgbrd+2HAr/a+IhHxo5s8u/lYnXL7vrpU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIGkiXwc9yKmZqmqokCMwfLGrnAd7zeVGdKZB9qd19pCWAiBrqUoPm9ntbjBMvFU9W7oYurVB5dGHYEScfXe7s2V88g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":44096},"type":"module","_from":"file:angadie-chittie-react-0.14.0.tgz","types":"./dist/index.d.mts","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs","default":"./dist/index.mjs"}},"scripts":{"test":"tsx spikes/jsx.spike.tsx && tsx spikes/layout.spike.tsx && tsx spikes/table.spike.tsx","build":"tsdown","typecheck":"tsc --noEmit"},"_npmUser":{"name":"octalpixel","email":"mithushancj@gmail.com"},"_resolved":"/private/var/folders/j5/7dkmn95d0_9b5fdnfsmpjs580000gn/T/0e0a09977fb2803e99d96d1d51d3e142/angadie-chittie-react-0.14.0.tgz","_integrity":"sha512-Yw7tNu7kP4ikh5z7qVgKRR1ugaE6pikiU9RN1UCzIQaE8aJ1WPFpcrNxWaBl13ucHJvdCsYtH1BfUZNuHPtDfg==","_npmVersion":"10.9.7","description":"Pure JSX receipt authoring → ESC/POS bytes. RN-safe (no react-dom, no HTML host elements). Renders onto chittie-core.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"@angadie/chittie-core":"0.6.1","@angadie/chittie-text":"0.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@canvas/image-data":"^1.1.0"},"peerDependencies":{"react":"^18 || ^19"},"_npmOperationalInternal":{"tmp":"tmp/chittie-react_0.14.0_1789023311695_0.13549450399904117","host":"s3://npm-registry-packages-npm-production"}},"0.14.1":{"name":"@angadie/chittie-react","version":"0.14.1","license":"MIT","_id":"@angadie/chittie-react@0.14.1","maintainers":[{"name":"octalpixel","email":"mithushancj@gmail.com"}],"dist":{"shasum":"834ee1d7eb2d3d205e2d274b6f3bd26957200653","tarball":"https://registry.npmjs.org/@angadie/chittie-react/-/chittie-react-0.14.1.tgz","fileCount":5,"integrity":"sha512-dTNma/NuTiLPKn8tF8xo7EjBD/ThYQvhLEcYzYzlF0PF7aUpmfH28/qw5bbb+ipr/oGaFgZ/LboQ4LHsBvJ50A==","signatures":[{"sig":"MEQCIBDwmVHbb3XEu5zuKH3u/Pcc12Auu8f++ebAHigKJJTBAiArs0Chlqd+dM/Dmrkzhb0mE0jgyvhidnqtlJLUOVAFIg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCeUIp1osyek/38Q1aUaiBqeXctanXXDY/TmPPQNnRkqgIgEbgwTRl3N1bamIH/lQ9hJrmETztvSrR312d0LzPinIc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":44096},"type":"module","_from":"file:angadie-chittie-react-0.14.1.tgz","types":"./dist/index.d.mts","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs","default":"./dist/index.mjs"}},"scripts":{"test":"tsx spikes/jsx.spike.tsx && tsx spikes/layout.spike.tsx && tsx spikes/table.spike.tsx","build":"tsdown","typecheck":"tsc --noEmit"},"_npmUser":{"name":"octalpixel","email":"mithushancj@gmail.com"},"_resolved":"/private/var/folders/j5/7dkmn95d0_9b5fdnfsmpjs580000gn/T/2b1ee892ee7217f1d1c07b65aec44f14/angadie-chittie-react-0.14.1.tgz","_integrity":"sha512-dTNma/NuTiLPKn8tF8xo7EjBD/ThYQvhLEcYzYzlF0PF7aUpmfH28/qw5bbb+ipr/oGaFgZ/LboQ4LHsBvJ50A==","_npmVersion":"10.9.7","description":"Pure JSX receipt authoring → ESC/POS bytes. RN-safe (no react-dom, no HTML host elements). Renders onto chittie-core.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"@angadie/chittie-core":"0.6.2","@angadie/chittie-text":"0.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@canvas/image-data":"^1.1.0"},"peerDependencies":{"react":"^18 || ^19"},"_npmOperationalInternal":{"tmp":"tmp/chittie-react_0.14.1_1789023758281_0.6081177935307436","host":"s3://npm-registry-packages-npm-production"}},"0.15.0":{"name":"@angadie/chittie-react","version":"0.15.0","license":"MIT","_id":"@angadie/chittie-react@0.15.0","maintainers":[{"name":"octalpixel","email":"mithushancj@gmail.com"}],"dist":{"shasum":"b61c045a3d9321ae2b12b0f3b54c87646e168250","tarball":"https://registry.npmjs.org/@angadie/chittie-react/-/chittie-react-0.15.0.tgz","fileCount":5,"integrity":"sha512-7eQM21F4R9Km3/nOVnh8uHaOh012YqN2I0iwfGjLJsADra4BkQ8QW6fxgyQUI5viX/nC9+NnDO3rd7BijEdcIw==","signatures":[{"sig":"MEUCIQCVhShjb938kqoFZXsEqCqDZFJjolcirHzFfAa5ASD8BQIgNKDn8e2BnWfwvyITW1Cwz+Vx732D38nyFCIFvO5oBDU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQC1NcH9VZ/pymX8MflCkNOzgPnpoSBnFHkQB3G4X6kGawIhAOyH0/ra0g2vOrkt87+WMhODQJlRPpU/Oml2hUPy5V7H","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":44356},"type":"module","_from":"file:angadie-chittie-react-0.15.0.tgz","types":"./dist/index.d.mts","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs","default":"./dist/index.mjs"}},"scripts":{"test":"tsx spikes/jsx.spike.tsx && tsx spikes/layout.spike.tsx && tsx spikes/table.spike.tsx","build":"tsdown","typecheck":"tsc --noEmit"},"_npmUser":{"name":"octalpixel","email":"mithushancj@gmail.com"},"_resolved":"/private/var/folders/j5/7dkmn95d0_9b5fdnfsmpjs580000gn/T/3206c153b07496a716b108cdb3a504c5/angadie-chittie-react-0.15.0.tgz","_integrity":"sha512-7eQM21F4R9Km3/nOVnh8uHaOh012YqN2I0iwfGjLJsADra4BkQ8QW6fxgyQUI5viX/nC9+NnDO3rd7BijEdcIw==","_npmVersion":"10.9.7","description":"Pure JSX receipt authoring → ESC/POS bytes. RN-safe (no react-dom, no HTML host elements). Renders onto chittie-core.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"@angadie/chittie-core":"0.6.2","@angadie/chittie-text":"0.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@canvas/image-data":"^1.1.0"},"peerDependencies":{"react":"^18 || ^19"},"_npmOperationalInternal":{"tmp":"tmp/chittie-react_0.15.0_1790763849374_0.9264467626517605","host":"s3://npm-registry-packages-npm-production"}},"0.16.0":{"name":"@angadie/chittie-react","version":"0.16.0","license":"MIT","_id":"@angadie/chittie-react@0.16.0","maintainers":[{"name":"octalpixel","email":"mithushancj@gmail.com"}],"dist":{"shasum":"6d88763d21f02af01a9e5d5cae72ef9e4bc1863f","tarball":"https://registry.npmjs.org/@angadie/chittie-react/-/chittie-react-0.16.0.tgz","fileCount":5,"integrity":"sha512-20h9fOCxbKmdzWfRTaUejUW/sxgs41gqvw8pAPAPtj3taE4WWbfYC+/Y1qCI/8qiN9qrD4aIg4Tyt4/J3ClPhQ==","signatures":[{"sig":"MEQCIDY0jXnuDDuQzfG8O9s/KlmPv9iyc59MiSbhGtbgBoBNAiAJRzDGTs2olExH2YoWRun6f9akeqGWSSi7lAhzm1fdtA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDg+lB4ftwHWVLCDkfaLZN43+tj8pwJbtTHd56XpMZ74AIgF1NSj3J5vvioWGNkC0pnjCe+EarIKsXuZEKXgynsyPw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":44663},"type":"module","_from":"file:angadie-chittie-react-0.16.0.tgz","types":"./dist/index.d.mts","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs","default":"./dist/index.mjs"}},"scripts":{"test":"tsx spikes/jsx.spike.tsx && tsx spikes/layout.spike.tsx && tsx spikes/table.spike.tsx","build":"tsdown","typecheck":"tsc --noEmit"},"_npmUser":{"name":"octalpixel","email":"mithushancj@gmail.com"},"_resolved":"/private/var/folders/j5/7dkmn95d0_9b5fdnfsmpjs580000gn/T/ad5e3a4d196b84f0378c66b153527569/angadie-chittie-react-0.16.0.tgz","_integrity":"sha512-20h9fOCxbKmdzWfRTaUejUW/sxgs41gqvw8pAPAPtj3taE4WWbfYC+/Y1qCI/8qiN9qrD4aIg4Tyt4/J3ClPhQ==","_npmVersion":"10.9.7","description":"Pure JSX receipt authoring → ESC/POS bytes. RN-safe (no react-dom, no HTML host elements). Renders onto chittie-core.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"@angadie/chittie-core":"0.6.2","@angadie/chittie-text":"0.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@canvas/image-data":"^1.1.0"},"peerDependencies":{"react":"^18 || ^19"},"_npmOperationalInternal":{"tmp":"tmp/chittie-react_0.16.0_1790771135117_0.46319155266626066","host":"s3://npm-registry-packages-npm-production"}},"0.17.0":{"_id":"@angadie/chittie-react@0.17.0","dist":{"shasum":"cc835edef8c2cb06e0d5cacaf75a8964ac7f1489","tarball":"https://registry.npmjs.org/@angadie/chittie-react/-/chittie-react-0.17.0.tgz","fileCount":5,"integrity":"sha512-CSWSw5S4BHsCwom60HfKHfaV6gHt/cYMNDQ/vF8SBYwkFLBbq24n07u5R2JRVKovZh+T1rUkj1HwMitjAk/O9g==","signatures":[{"sig":"MEUCIQD7vEUak+kv0SD9bqrtB+5DWSSIaj3RhNK+hMflEJtsqAIgXRpSA2oJBxRBTEDesUoyfV/pIoBzy43m3kS1t9RSMok=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCIKHLkcw8lRJDUm0syM8yxiJYyDznbdJ/5Qx2fJQ2RIgIhAIarLBtRZMSPlK03VaxvED2+L0GF1QMfRXAwvR3I0uOe"}],"unpackedSize":44887},"name":"@angadie/chittie-react","type":"module","_from":"file:angadie-chittie-react-0.17.0.tgz","types":"./dist/index.d.mts","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs","default":"./dist/index.mjs"}},"license":"MIT","scripts":{"test":"tsx spikes/jsx.spike.tsx && tsx spikes/layout.spike.tsx && tsx spikes/table.spike.tsx","build":"tsdown","typecheck":"tsc --noEmit"},"version":"0.17.0","_npmUser":{"name":"octalpixel","email":"mithushancj@gmail.com"},"_resolved":"/private/var/folders/j5/7dkmn95d0_9b5fdnfsmpjs580000gn/T/21adb9069e13bcc79095b60008af2b4e/angadie-chittie-react-0.17.0.tgz","_integrity":"sha512-CSWSw5S4BHsCwom60HfKHfaV6gHt/cYMNDQ/vF8SBYwkFLBbq24n07u5R2JRVKovZh+T1rUkj1HwMitjAk/O9g==","_npmVersion":"10.9.7","description":"Pure JSX receipt authoring → ESC/POS bytes. RN-safe (no react-dom, no HTML host elements). Renders onto chittie-core.","directories":{},"maintainers":[{"name":"octalpixel","email":"mithushancj@gmail.com"}],"_nodeVersion":"22.22.2","dependencies":{"@angadie/chittie-core":"0.6.2","@angadie/chittie-text":"0.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@canvas/image-data":"^1.1.0"},"peerDependencies":{"react":"^18 || ^19"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/chittie-react_0.17.0_1790771413589_0.5180298747625114"}}},"time":{"created":"2026-06-23T04:42:06.119Z","modified":"2026-09-30T12:30:13.860Z","0.1.0":"2026-06-23T04:42:06.474Z","0.1.1":"2026-06-23T04:52:50.438Z","0.2.0":"2026-06-23T05:34:42.970Z","0.3.0":"2026-06-23T18:13:18.209Z","0.4.0":"2026-06-23T18:30:58.146Z","0.5.0":"2026-06-23T18:54:36.173Z","0.6.0":"2026-06-24T12:09:16.508Z","0.7.0":"2026-06-24T17:45:12.356Z","0.8.0":"2026-06-25T07:21:47.608Z","0.9.0":"2026-06-25T12:57:51.672Z","0.10.0":"2026-06-25T18:29:35.265Z","0.10.1":"2026-06-26T08:36:52.499Z","0.10.2":"2026-08-19T07:19:30.860Z","0.11.0":"2026-08-19T07:39:36.561Z","0.12.0":"2026-08-19T07:56:30.657Z","0.13.0":"2026-09-10T06:29:09.470Z","0.14.0":"2026-09-10T06:55:11.785Z","0.14.1":"2026-09-10T07:02:38.391Z","0.15.0":"2026-09-30T10:24:09.468Z","0.16.0":"2026-09-30T12:25:35.205Z","0.17.0":"2026-09-30T12:30:13.680Z"},"license":"MIT","description":"Pure JSX receipt authoring → ESC/POS bytes. RN-safe (no react-dom, no HTML host elements). Renders onto chittie-core.","maintainers":[{"name":"octalpixel","email":"mithushancj@gmail.com"}],"readme":"# @angadie/chittie-react\n\nPure JSX receipt authoring → ESC/POS bytes. **RN-safe**: no `react-dom`, no HTML host elements — components render straight onto the [`chittie-core`](../chittie-core) builder, so the same `<Printer>` tree works on web and React Native.\n\n> Most apps install [`@angadie/chittie`](../chittie) (which re-exports this). Install this directly only if you don't want the builder re-export.\n\n## Install\n\n```bash\npnpm add @angadie/chittie-react react\n```\n\n## Usage\n\n```tsx\nimport { Printer, Text, Row, Line, Cut, render } from '@angadie/chittie-react';\n\nconst bytes = render(\n  <Printer width={48}>\n    <Text align=\"center\" bold size={{ width: 2, height: 2 }}>SHOP</Text>\n    <Line />\n    <Row left=\"Item\" right=\"Rs. 100\" />\n    <Cut />\n  </Printer>\n);\n// bytes: Uint8Array — hand to any transport\n```\n\n`render(element, options?)` returns a `Uint8Array`. It is synchronous and pure.\n\n### `render` options\n\n| Option | Default | What it does |\n|---|---|---|\n| `columns` | `48` | Characters per line. **Overridden by `<Printer width>`** if that is set. |\n| `lineSpacing` | printer default | Line-feed pitch in dots. **Overridden by `<Printer lineSpacing>`.** See [Vertical spacing](#vertical-spacing--how-much-paper-a-receipt-uses). |\n| `dotWidth` | `columns × 12` | Printable width in dots. Only used when rasterizing — it is the width non-Latin text and rows are laid out against. |\n| `dpi` | `203` | Printer resolution. Keeps rasterized text the same *physical* size on a 203- and a 300-DPI printer. |\n| `fontFamilies` | — | Ordered font fallback chain handed to the rasterizer, e.g. `['Noto Sans Sinhala']`. |\n| `rasterizer` | — | Supply to print non-encodable scripts as images. Without it, such text **throws**. |\n| `codepage` | `'cp437'` | What counts as \"encodable as text\"; everything else is rasterized. |\n\n`PRINTER_PROFILES` carries the three that must agree for a given paper size — pass one\ninstead of hand-computing `dotWidth`:\n\n```tsx\nimport { render, PRINTER_PROFILES } from '@angadie/chittie-react';\n\nrender(<Receipt />, { ...PRINTER_PROFILES['58mm'], rasterizer });\n```\n\n| Profile | columns | dotWidth | dpi |\n|---|---|---|---|\n| `'58mm'` | 32 | 384 | 203 |\n| `'80mm'` | 48 | 576 | 203 |\n| `'58mm-300'` | 48 | 576 | 300 |\n| `'80mm-300'` | 72 | 864 | 300 |\n\n### Also exported\n\nReceipt-content helpers, re-exported from [`@angadie/chittie-text`](../chittie-text) so one\nimport covers authoring:\n\n| Export | Use |\n|---|---|\n| `formatMoney(amount, options?)` | RN-safe money formatting — **no `Intl`**, so it behaves the same on Hermes |\n| `foldTypographic(text)` | `×` `–` `'` `\"` `…` → receipt-safe ASCII |\n| `sanitizeControl(text)` | strips control characters that would corrupt the byte stream |\n| `needsRaster(text, codepage?)` | `true` if the code page can't represent the text (i.e. it must be rasterized) |\n| `dotsPerMm(dpi?)` | dots-per-mm for a resolution, for sizing images |\n| `toText(node)` | the same pure text extraction `<Text>` uses on its children |\n\n## Components\n\n| Component | Props | Emits |\n|---|---|---|\n| `<Printer>` | `width` (columns, default 48), `lineSpacing` (line-feed pitch in dots) | the root; sets line width and paper pitch |\n| `<Text>` | `align`, `bold`, `underline` (`true` or a thickness `1`/`2`), `invert`, `size` ({width,height} multipliers), `small`, `inline` | text (or image — see below) + newline |\n| `<Row>` | `left`, `right`, `rtl`, `gap`, `marginLeft`, `marginRight` | a two-column justified row (`rtl`: label flush-right, value flush-left) |\n| `<Table>` | `columns` (**required**, `TableColumn[]`), `rows` (**required**, `ReactNode[][]`), `gap` | rows sharing one set of columns |\n| `<Columns>` | `gap` | a one-off row of `<Column>` cells |\n| `<Column>` | `width`, `align`, `verticalAlign`, `marginLeft`, `marginRight` | one cell; omit `width` on one column to take the remainder |\n| `<Box>` | `style` (default `none`), `width`, `align`, `marginLeft`, `marginRight`, `paddingLeft`, `paddingRight` | an indented block, optionally bordered |\n| `<Line>` | `style` (`single`/`double`), `width` | a horizontal rule |\n| `<Br>` | `lines` (default 1) | blank line(s) |\n| `<Feed>` | `dots` (**required**, clamped 0–255) | precise vertical space (ESC J) — finer than `<Br>` |\n| `<Cut>` | `partial` | paper cut |\n| `<Cashdraw>` | `device` | cash-drawer kick pulse |\n| `<Barcode>` | `value` (**required**), `symbology` (default `code128`), `height` | a barcode |\n| `<QRCode>` | `value` (**required**), `size`, `model` | a QR code |\n| `<Image>` | `image` (**required**, ImageData), `align`, `dither`, `threshold`, `width`, `height` | a raster image (logo, etc.) |\n\nA `TableColumn` (each entry of `<Table columns>`) takes:\n\n| Field | Meaning |\n|---|---|\n| `width` | `number` — exactly that many characters. `'auto'` — fit the widest cell in this column, across every row. Omitted — flexible: takes whatever the other columns leave (at most one column may be flexible). |\n| `align` | `left` \\| `center` \\| `right` |\n| `verticalAlign` | `top` (default) \\| `bottom` — where a short cell sits when a sibling wraps to several lines |\n| `marginLeft` / `marginRight` | blank characters kept outside the column |\n\n**Spacing & fine print:** `<Br lines>` adds blank lines; `<Feed dots>` adds dot-precise space (ESC J);\n`<Text small>` prints in the smaller **Font B** (~9×17 vs A 12×24) for footers / \"Powered by…\" lines —\nand `chittie-preview` renders it smaller too. For RTL rows (Arabic/Hebrew) pass `<Row rtl>`.\nSee [Vertical spacing](#vertical-spacing--how-much-paper-a-receipt-uses) for why a receipt runs long\nand which knob shortens it.\n\n### Layout — columns, gaps, indentation\n\nReceipt layout is a character grid, not a pixel canvas: text is positioned to\nthe character, never to the dot. Within that grid you get columns, margins,\npadding, indentation and borders.\n\n**`<Row gap>` — never let a value touch its label.** `<Row>` gives the right\ncell its natural width and the left cell whatever remains, so a label that\nexactly fills the line ends up flush against the value:\n\n```tsx\n<Row left=\"1x Raththi milk powder\" right=\"Rs. 120.00\" />\n// 1x Raththi milk powderRs. 120.00     ← 22 + 10 == 32 exactly\n\n<Row left=\"1x Raththi milk powder\" right=\"Rs. 120.00\" gap={1} />\n// 1x Raththi milk       Rs. 120.00\n// powder\n```\n\n**`<Table>` — repeated rows, columns declared once.** Use it wherever a receipt\nrepeats a line shape. `width: 'auto'` sizes a column to its widest cell across\nevery row, which `<Columns>` cannot do — it only ever sees one row:\n\n```tsx\n<Table\n  gap={1}\n  columns={[{ width: 3 }, {}, { width: 'auto', align: 'right' }]}\n  rows={items.map((it) => [`${it.qty}x`, it.name, money(it.total)])}\n/>\n// 1x  Raththi milk powder                 Rs. 120.00\n// 2x  Almond croissant with salted      Rs. 1,300.00\n//     caramel\n```\n\nCells take plain strings or any printable node. Only one column may omit\n`width`; it absorbs the remainder. A row whose text needs rasterizing becomes a\nsingle image while the other rows stay as text, and the row order is preserved.\n\n**`<Columns>` — a one-off row.** Same column options, spelled as children, for\na line that does not repeat:\n\n```tsx\n<Columns gap={1}>\n  <Column width={3}>2x</Column>\n  <Column>Flat White</Column>\n  <Column width={12} align=\"right\">Rs. 1,700.00</Column>\n</Columns>\n```\n\nA bare string child prints as its own line, so a cell needs no `<Text>` wrapper\nunless you want to style it.\n\n**`<Box>` — the only way to indent.** Leading whitespace is stripped from\n`<Text>` and `<Row>`, so spaces cannot indent anything. A box can:\n\n```tsx\n<Box marginLeft={3}>\n  <Row left=\"+ Hand embroidery on neckline and cuffs\" right=\"Rs. 8,000.00\" gap={1} />\n</Box>\n```\n\nIt defaults to `style=\"none\"` — a layout element, with a border you opt into.\n(The builder's `box()` defaults to `single`.) Give it `style=\"single\"`,\n`paddingLeft` and `paddingRight` for a bordered notice.\n\n**Non-Latin inside a cell.** The engine refuses an image inside a table cell,\nso a row carrying Sinhala, Tamil or Arabic cannot be assembled per-cell.\n`<Columns>` detects it and rasterizes the whole row through the rasterizer you\npassed to `render()`, exactly as `<Row>` does — per-cell styling does not\nsurvive that path, and the cell text does. `<Box>` has no such fallback:\nnon-Latin text inside a `<Box>` throws.\n\n### Vertical spacing — how much paper a receipt uses\n\n**chittie never inserts blank space between rows.** A `<Row>`, a `<Columns>`, and each\nrow of a `<Table>` cost exactly as many printed lines as their *tallest cell after\nwrapping* — nothing is added in between. So if a receipt looks loosely spaced, the\npaper is going to one of four places, and only the first is under your control per-row:\n\n| Where the paper goes | Cost | Knob |\n|---|---|---|\n| A cell **wrapped** onto a second/third line | +1 line each | column widths, `gap`, shorter text |\n| `<Br lines>` / `<Feed dots>` you wrote | 1 line / *n* dots | remove them |\n| `<Box style=\"single\">` borders | +2 lines | `style=\"none\"` (the default) |\n| The printer's own **line pitch** | 30 dots @ 203 DPI per line, vs a 24-dot glyph | `<Printer lineSpacing>` |\n\n**Wrapping is almost always the answer.** A column narrower than its content silently\nbecomes a two- or three-line row, and a table of 20 items pays that 20 times:\n\n```tsx\n// 32 columns (58mm). \"Almond croissant\" is 16 chars, the price 11 — plus gap 1 = 28.\n// Give the name only 12 and every long item wraps:\n<Table columns={[{ width: 3 }, { width: 12 }, { width: 'auto', align: 'right' }]} rows={rows} gap={1} />\n// 1x  Almond            Rs. 1,300.00\n//     croissant                        ← 2 lines per item\n\n// Let the name column flex into whatever is left — one line per item:\n<Table columns={[{ width: 3 }, {}, { width: 'auto', align: 'right' }]} rows={rows} gap={1} />\n// 1x  Almond croissant  Rs. 1,300.00\n```\n\nRules of thumb for keeping rows to one line:\n\n- **Leave exactly one column without a `width`** so it absorbs the remainder instead of\n  wrapping at a width you guessed.\n- **`width: 'auto'`** on the price column sizes it to the widest price across every row —\n  no character is wasted on a column that never needs it.\n- **`gap` costs a character and makes wrapping likelier.** It exists so a full-width label\n  can't touch its value; on a 32-column receipt `gap={1}` is often the character that pushes\n  a long item onto a second line. Drop it where the columns already separate cleanly.\n- **`<Row>` gives the right cell its natural width and the left cell whatever remains** —\n  so a long right-hand value (`Rs. 1,300.00`, 12 chars) is what wraps the label. Shorten the\n  value (`1,300.00`) before you shorten the label.\n\n**What does *not* save vertical space:** `<Text small>` (Font B) makes glyphs *narrower and\nshorter*, but the printer still advances one full line — it buys horizontal room, not paper\nlength. Wrapping is decided in characters, and the column count doesn't change with the font,\nso `small` won't unwrap a row either.\n\n**Rasterized (non-Latin) rows cost more than text rows — keep the image inside its box.**\nA Sinhala/Tamil line prints as an image, and ESC/POS sends an image as **24-dot bands**. chittie\nasks your rasterizer for a `fontSize` of about **3 mm** (24 dots at 203 DPI, scaled by\n`size.height` and by 0.72 for `small`) precisely so one line fits one band. A rasterizer that\nreturns anything *taller* than the `fontSize` it was given spills into a second band, and a\nsecond band is a second line feed — so a 25-dot image costs twice the paper of a 24-dot one:\n\n```ts\n// ✗ ascent + descent + padding routinely exceeds 24 for Sinhala/Tamil, which have\n//   tall ascenders and deep descenders — every line silently becomes two bands.\nconst h = ascent + descent + 2;\n\n// ✓ fit the glyph box to the height chittie budgeted for it.\nconst h = Math.min(ascent + descent + 2, fontSize);\n```\n\nIf a non-Latin receipt runs long, log `img.height` from your rasterizer first — anything over\n`options.fontSize` is doubling your paper. Note also that each image is followed by one line\nfeed of its own, so a fully rasterized receipt still benefits from `lineSpacing` even though\nthe glyphs themselves are images.\n\n**`<Printer lineSpacing>` — the setting that shortens every line at once.** `initialize()`\nsends `ESC @`, which leaves the printer on its own default pitch — 30 dots on a 203-DPI TM\nprinter — while font A is only 24 dots tall. That is 6 dots of leading on *every* line that\nno layout asks for. Set the pitch in dots and it applies to the whole receipt:\n\n```tsx\n<Printer width={48} lineSpacing={24}>   {/* 24 = flush against a font-A glyph */}\n```\n\nMeasured on a 5-item receipt at 48 columns (`packages/chittie-preview/spikes/spacing.spike.ts`):\n\n| | default pitch | `lineSpacing={24}` |\n|---|---|---|\n| Latin receipt | 52.8 mm | **37.8 mm** (−28%) |\n| Sinhala receipt (every line rasterized) | 54.1 mm | **37.8 mm** (−30%) |\n\nBelow about 22 dots consecutive lines start to touch; 24 is flush, 26–28 stays comfortable.\nDouble-height text (`size={{ height: 2 }}`) still advances two pitches, so it is not clipped.\n`render({ lineSpacing })` sets the same thing, and `<Printer lineSpacing>` wins over it.\n\n### `<Image>` — logos and bitmaps\n\nPass `ImageData` (from a `<canvas>`, a decoded PNG, or a rasterizer). Dimensions are auto-padded to multiples of 8 (the ESC/POS raster requirement), so any size works. Use `dither=\"threshold\"` for crisp line-art/logos, or `floydsteinberg`/`atkinson` for photos.\n\n```tsx\nconst logo = canvas.getContext('2d')!.getImageData(0, 0, canvas.width, canvas.height);\nrender(\n  <Printer width={48}>\n    <Image image={logo} align=\"center\" dither=\"threshold\" />\n    <Text align=\"center\" bold>ARTISAN HAUS</Text>\n  </Printer>\n);\n```\n\nUser-defined wrapper components are supported — `render` walks function components and fragments.\n\n## Custom components\n\nCompose your own components — they're plain functions returning chittie elements. `render` invokes them and walks their output, so `.map()`, fragments, and conditionals all work:\n\n```tsx\nconst LineItem = ({ name, qty, price }: Item) => (\n  <Row left={`${qty}x ${name}`} right={`Rs. ${qty * price}`} />\n);\n\nfunction Receipt({ items }: { items: Item[] }) {\n  return (\n    <Printer width={48}>\n      <Text align=\"center\" bold>MY SHOP</Text>\n      <Line />\n      {items.map((it) => <LineItem key={it.id} {...it} />)}\n      {items.length === 0 && <Text align=\"center\">No items</Text>}\n      <Cut />\n    </Printer>\n  );\n}\n\n// a whole receipt can be ONE component — render resolves it down to <Printer>\nrender(<Receipt items={cart} />);\n```\n\n**Constraints** (it's a pure renderer, not the React reconciler):\n- Components must be pure `props → elements`. **No hooks** (`useState`/`useEffect`/`useContext`) and no `react-dom` — there's no component tree, state, or lifecycle, by design (a receipt is a one-shot render).\n- `<Text>` accepts only **text** (strings/numbers). Nesting a component (`<Text><Row/></Text>`) **throws a clear error** — put `<Row>`, `<Image>`, etc. as siblings. (Fragments wrapping text are fine.)\n\n## Non-Latin scripts (Sinhala / Tamil / …)\n\n`<Text>` content that a code page can't represent is auto-rasterized **when you pass a rasterizer**; otherwise `render` throws (never a silent `?`). See [`@angadie/chittie-text`](../chittie-text).\n\n```tsx\nrender(<Printer><Text>ආයුබෝවන්</Text></Printer>, {\n  ...PRINTER_PROFILES['58mm'],           // columns + dotWidth + dpi, kept in agreement\n  rasterizer: myRasterizer,              // TextRasterizer\n  fontFamilies: ['Noto Sans Sinhala'],   // fallback chain for the rasterizer\n  codepage: 'cp437',                     // what counts as \"encodable as text\"\n});\n```\n\n`dotWidth` and `dpi` matter here: they are what keeps rasterized text the same physical\nsize across 58/80mm and 203/300-DPI printers. Get them from `PRINTER_PROFILES` rather\nthan by hand — a `dotWidth` that disagrees with `columns` lays non-Latin rows out against\nthe wrong paper width.\n\n## License\n\nMIT.\n","readmeFilename":"README.md"}