{"_id":"@8bitscript/ui","_rev":"19-bcb59191c870761664e82ee0d010c2e9","name":"@8bitscript/ui","dist-tags":{"latest":"0.7.0"},"versions":{"0.1.0":{"name":"@8bitscript/ui","version":"0.1.0","license":"MIT","_id":"@8bitscript/ui@0.1.0","maintainers":[{"name":"muncherelli","email":"james.muncherelli@gmail.com"}],"dist":{"shasum":"4d24cf6f8e8351242cab51bfd91374c38fb1906c","tarball":"https://registry.npmjs.org/@8bitscript/ui/-/ui-0.1.0.tgz","fileCount":4,"integrity":"sha512-sUZIRjnzynf2Ru/je1WJBcfqfIa3mlnu1QpsaXJ6CwLogDRtojK1gz+r5Fxg4Rn+mKs5Q49YZKYIZSofBnrboA==","signatures":[{"sig":"MEYCIQCzfivzhqTo5qL1odYMsfD1goUf5+EZ+u27IIr+N7gj2gIhANmaP8feOl3YTo1Nk52Tl/lcx/LePPA3bWG8nSURs7vb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29999},"type":"module","scripts":{"test":"node --test"},"_npmUser":{"name":"muncherelli","email":"james.muncherelli@gmail.com"},"8bitscript":{"exports":{"./menubar":"./src/menubar.8bs"}},"description":"Reusable interface components for 8BitScript programs: a menu bar today, drawn on the character grid through @8bitscript/text, so one component works on every target.","directories":{},"dependencies":{"@8bitscript/text":"0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ui_0.1.0_1788872423695_0.4081460248783917","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@8bitscript/ui","version":"0.1.1","license":"MIT","_id":"@8bitscript/ui@0.1.1","maintainers":[{"name":"muncherelli","email":"james.muncherelli@gmail.com"}],"dist":{"shasum":"9d02bac51f034850e9381fe17a4aebf8eeb58a34","tarball":"https://registry.npmjs.org/@8bitscript/ui/-/ui-0.1.1.tgz","fileCount":4,"integrity":"sha512-JVc2npO9eTa0ETmLweanmsLDOu6uv2T/KL4yhWTReR7Fhyw1jJV9cBrQgHUxg/+glFgYWujhIjRK+yuGXSe2kA==","signatures":[{"sig":"MEUCIQDpv9AfAQr0YYX6fKB3ayicTWcc/jUPPz8jiWG/ZElBBAIgfL389flulbId7GUGjuoYpEpxczeLjkX2CuO1CVCwvT0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCBCCNBcwCtyih3RLzox+y1jiRriBv4Ke4DwHO+Q18umgIhAIM6eIIro3HA/fhL/RMsIweNpJZQBPgjhOZPSb2SPk/m","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@8bitscript%2fui@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":30131},"type":"module","scripts":{"test":"node --test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9c1bc911-def1-4326-ab01-a83866c486d0"}},"8bitscript":{"exports":{"./menubar":"./src/menubar.8bs"}},"repository":{"url":"https://github.com/8BitScript/8bitscript.git","type":"git","directory":"packages/ui"},"description":"Reusable interface components for 8BitScript programs: a menu bar today, drawn on the character grid through @8bitscript/text, so one component works on every target.","directories":{},"dependencies":{"@8bitscript/text":"0.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ui_0.1.1_1788886468739_0.03953193269325639","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@8bitscript/ui","version":"0.1.2","license":"MIT","_id":"@8bitscript/ui@0.1.2","maintainers":[{"name":"muncherelli","email":"james.muncherelli@gmail.com"}],"dist":{"shasum":"3d2eb4ad58e792ca6bcebbeec7ba3a9489af2049","tarball":"https://registry.npmjs.org/@8bitscript/ui/-/ui-0.1.2.tgz","fileCount":4,"integrity":"sha512-CZyMH7UI5YxECKbvqsSMe3CbVRqLNmCNQS0lq5/HHOkjH1BjRZNkBFcnTqikGxYKGbcoVKZ7Mb8QKNM2UUmjew==","signatures":[{"sig":"MEUCIGV2ZTs3qeli38GgLbxu20maM6u71lOiW4SVRSu/bsYvAiEAhmg0FLftxiJU+gzAAtduZcaci4AGq3ptDbjw31Xdiag=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCHFNZatDcJFEyO1I49Uf1E/0YmKVpd3xY2kGS99aWN8AIhAI/l9lggjmr3GgfNMIP7TvkFEo//BqFlI1FnKmKkjf4t","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@8bitscript%2fui@0.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":30131},"type":"module","scripts":{"test":"node --test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9c1bc911-def1-4326-ab01-a83866c486d0"}},"8bitscript":{"exports":{"./menubar":"./src/menubar.8bs"}},"repository":{"url":"https://github.com/8BitScript/8bitscript.git","type":"git","directory":"packages/ui"},"description":"Reusable interface components for 8BitScript programs: a menu bar today, drawn on the character grid through @8bitscript/text, so one component works on every target.","directories":{},"dependencies":{"@8bitscript/text":"0.1.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ui_0.1.2_1788891355398_0.8552660080341536","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@8bitscript/ui","version":"0.1.3","license":"MIT","_id":"@8bitscript/ui@0.1.3","maintainers":[{"name":"muncherelli","email":"james.muncherelli@gmail.com"}],"dist":{"shasum":"810fd37ffc9e959af22f77c277f359c1cf5a8d00","tarball":"https://registry.npmjs.org/@8bitscript/ui/-/ui-0.1.3.tgz","fileCount":4,"integrity":"sha512-FZgPw1JAFnsIff0k28MlWPeKHcqJzpFxGAws/HxmKne5wNlk0B7+spHMV0aP8m6Q/wEQISgA4ifagtSizxhHFA==","signatures":[{"sig":"MEUCIFXBopEIbYuXyKYtqtUTSN/xG/9//KioW+BeMmY29kE9AiEAnJZQJyakhVX1A+tBBghRoiFfQtQIg4j+i15Ddw8Lvco=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDgZyA3sayskyNpQGGK/z9iD7LmIKburlWQ7QysHnHI4QIgaERMHlgwO4DW4sn2YCuc1Hjt4maoTd4GmPUNls7fwYg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@8bitscript%2fui@0.1.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":30131},"type":"module","scripts":{"test":"node --test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9c1bc911-def1-4326-ab01-a83866c486d0"}},"8bitscript":{"exports":{"./menubar":"./src/menubar.8bs"}},"repository":{"url":"https://github.com/8BitScript/8bitscript.git","type":"git","directory":"packages/ui"},"description":"Reusable interface components for 8BitScript programs: a menu bar today, drawn on the character grid through @8bitscript/text, so one component works on every target.","directories":{},"dependencies":{"@8bitscript/text":"0.1.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ui_0.1.3_1788916420595_0.9119411169832006","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@8bitscript/ui","version":"0.2.0","license":"MIT","_id":"@8bitscript/ui@0.2.0","maintainers":[{"name":"muncherelli","email":"james.muncherelli@gmail.com"}],"dist":{"shasum":"7af2634780795912add9c8457d6ac288712d08ec","tarball":"https://registry.npmjs.org/@8bitscript/ui/-/ui-0.2.0.tgz","fileCount":4,"integrity":"sha512-1B0wzfWcaHQIz9fUBMF5kHi5qtOIR2DiTpIFaSCwdO5vqItBWIInRTwCyfGV0eNyMwsMyujgYKoWFEowhjXT1g==","signatures":[{"sig":"MEYCIQCE+FQa5Uyy8d5OUvCRrPp1bBuxmeGhRzonskxetGV2yAIhALzbzH+aww52HR+CWPogYN6EuIN1bTqaefcrmd2g54r+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDYqeW7URSbsMSdm6Yyrr2qdVD5EcqBcW3VFRjYHU9LhgIhAMpNniEeuJS8UVLEvr9lOvFHNAGBI3dzMpCDTxb3CJGf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@8bitscript%2fui@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":30132},"type":"module","scripts":{"test":"node --test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9c1bc911-def1-4326-ab01-a83866c486d0"}},"8bitscript":{"exports":{"./menubar":"./src/menubar.8bs"}},"repository":{"url":"https://github.com/8BitScript/8bitscript.git","type":"git","directory":"packages/ui"},"description":"Reusable interface components for 8BitScript programs: a menu bar today, drawn on the character grid through @8bitscript/text, so one component works on every target.","directories":{},"dependencies":{"@8bitscript/text":"0.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ui_0.2.0_1789067640999_0.7270322325564391","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@8bitscript/ui","version":"0.2.1","license":"MIT","_id":"@8bitscript/ui@0.2.1","maintainers":[{"name":"muncherelli","email":"james.muncherelli@gmail.com"}],"dist":{"shasum":"d73241c35b86ebab5f89397bbddbc148678d077f","tarball":"https://registry.npmjs.org/@8bitscript/ui/-/ui-0.2.1.tgz","fileCount":4,"integrity":"sha512-gVwAXW5fIlZgjpWyJtVgAAy6uXmWAojVZ7XWRpnrc5fIw/LTggp7w71rkYBQ7dSoXYbzNyiPqtj3iJY/KFe2HQ==","signatures":[{"sig":"MEUCIQDJrS4HyH8D0PpuoGR1yaVSf/NNgnt9WNoldhpr3Bo23AIgX70hvNoBup3daB3ObK3LuPW3JHesHO65NGUTx8dMrk4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDgiAgdq5w/+dUBXiTWDuIfuJtevu6NMKV4ka+JQeHE2QIhAPA3zjoqsCbKsK3kLXQephcpgj5o1G+vjdPZl/EHG7MF","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@8bitscript%2fui@0.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":30132},"type":"module","scripts":{"test":"node --test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9c1bc911-def1-4326-ab01-a83866c486d0"}},"8bitscript":{"exports":{"./menubar":"./src/menubar.8bs"}},"repository":{"url":"https://github.com/8BitScript/8bitscript.git","type":"git","directory":"packages/ui"},"description":"Reusable interface components for 8BitScript programs: a menu bar today, drawn on the character grid through @8bitscript/text, so one component works on every target.","directories":{},"dependencies":{"@8bitscript/text":"0.2.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ui_0.2.1_1789081749369_0.4806779947119959","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@8bitscript/ui","version":"0.2.2","license":"MIT","_id":"@8bitscript/ui@0.2.2","maintainers":[{"name":"muncherelli","email":"james.muncherelli@gmail.com"}],"dist":{"shasum":"e8cef5f84f7d6dcebfb53b493e6054d43640533b","tarball":"https://registry.npmjs.org/@8bitscript/ui/-/ui-0.2.2.tgz","fileCount":4,"integrity":"sha512-rbsiGEG4CcUpIib+8RZaUxJed5jQ1K+L2p8kgKA6Rp0xbYsf24PQppuOv3P1yFKAQv2078yh40Du8y8XuKP4ow==","signatures":[{"sig":"MEUCIQC/7bHjeziju+gm0xc44UHu8syPXzvwxxONXDGXYBwI9AIgHHxyd7GSpwrdwHgYIS4JqR/Nx8kM4SSmjgE2ZtplEbI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCICX1ej0ilLRXMMmsn6tOkfw7BGOK50ycPOr2fCtqb0jDAiEAhA9iKs9KDqt5f+vgX7gSJLamgRlN6OMThR+pmn+1QhY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@8bitscript%2fui@0.2.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":30132},"type":"module","scripts":{"test":"node --test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9c1bc911-def1-4326-ab01-a83866c486d0"}},"8bitscript":{"exports":{"./menubar":"./src/menubar.8bs"}},"repository":{"url":"https://github.com/8BitScript/8bitscript.git","type":"git","directory":"packages/ui"},"description":"Reusable interface components for 8BitScript programs: a menu bar today, drawn on the character grid through @8bitscript/text, so one component works on every target.","directories":{},"dependencies":{"@8bitscript/text":"0.2.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ui_0.2.2_1789092839040_0.7428354506022663","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"@8bitscript/ui","version":"0.2.3","license":"MIT","_id":"@8bitscript/ui@0.2.3","maintainers":[{"name":"muncherelli","email":"james.muncherelli@gmail.com"}],"dist":{"shasum":"1ae50083ff7b69599618c2c1ba5063845fe8d593","tarball":"https://registry.npmjs.org/@8bitscript/ui/-/ui-0.2.3.tgz","fileCount":4,"integrity":"sha512-q+W8swIFYN9cEg1uBBVu0BO1OWdld0YuiEudI7h2vdJpdYhMKO7L8gMeNvxoWmDAH3vQMkrykByiNLMU3O3z7g==","signatures":[{"sig":"MEUCICILh8Y9i1nKk4LOyRWWCo+0UwrsDAyTaBuNFQOu25ZdAiEA5ElrlbQoUlKIgF/krU/ul3PIpWaKNkHMcZjv5osicgI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIH9ng5flWz1UNWqekoAqeU/gsbJ6nryjIswq2FbBavRDAiEAhCoD9lwiLq8cFEw08q9UvG4l8xR45jQ7ohwKQZhKtyQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@8bitscript%2fui@0.2.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":30132},"type":"module","scripts":{"test":"node --test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9c1bc911-def1-4326-ab01-a83866c486d0"}},"8bitscript":{"exports":{"./menubar":"./src/menubar.8bs"}},"repository":{"url":"https://github.com/8BitScript/8bitscript.git","type":"git","directory":"packages/ui"},"description":"Reusable interface components for 8BitScript programs: a menu bar today, drawn on the character grid through @8bitscript/text, so one component works on every target.","directories":{},"dependencies":{"@8bitscript/text":"0.2.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ui_0.2.3_1789102099612_0.8855144264706123","host":"s3://npm-registry-packages-npm-production"}},"0.2.4":{"name":"@8bitscript/ui","version":"0.2.4","license":"MIT","_id":"@8bitscript/ui@0.2.4","maintainers":[{"name":"muncherelli","email":"james.muncherelli@gmail.com"}],"dist":{"shasum":"856fc6b8859f1bfe4ccf494b7e661a30bb900310","tarball":"https://registry.npmjs.org/@8bitscript/ui/-/ui-0.2.4.tgz","fileCount":4,"integrity":"sha512-DgkHyQ1Qs4syZ2mGf52j5EUEgtfKi+eQkZXpRtJ6X/ptujbjNI5/71Lvte5OyPaiW3dNTh3jjQojOXwa/9ne2w==","signatures":[{"sig":"MEQCIDt/CiEC5ob9nAVgWHRkEE2gCQei2gmhLzyuTvMRtZYeAiAp/5/1wfbC+5hYQ/YoOHQNixMFGxvdD1BHF1b7iWWK1g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCXZMRmVslxV/ieSDbDaXZtDP3gbrgGwzf0WqFKgpwHdgIgI3Yam3ozfMezX5Mve3O0sbr0E2okA0fg42FyFwvnyFE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@8bitscript%2fui@0.2.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":30132},"type":"module","scripts":{"test":"node --test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9c1bc911-def1-4326-ab01-a83866c486d0"}},"8bitscript":{"exports":{"./menubar":"./src/menubar.8bs"}},"repository":{"url":"https://github.com/8BitScript/8bitscript.git","type":"git","directory":"packages/ui"},"description":"Reusable interface components for 8BitScript programs: a menu bar today, drawn on the character grid through @8bitscript/text, so one component works on every target.","directories":{},"dependencies":{"@8bitscript/text":"0.2.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ui_0.2.4_1789130911675_0.9548478191052217","host":"s3://npm-registry-packages-npm-production"}},"0.2.5":{"name":"@8bitscript/ui","version":"0.2.5","license":"MIT","_id":"@8bitscript/ui@0.2.5","maintainers":[{"name":"muncherelli","email":"james.muncherelli@gmail.com"}],"dist":{"shasum":"ab9f2038b7d48dc019225ba69d2a2f96f86c3eae","tarball":"https://registry.npmjs.org/@8bitscript/ui/-/ui-0.2.5.tgz","fileCount":4,"integrity":"sha512-9QzjPruDjfv9HTqNMO6PpLQ/N8tgzL7NbdIsD5VaEPe+jrxfoRvmTtaNqYNkgYY67OfJTkOTmvwTwJW+MuyGDA==","signatures":[{"sig":"MEQCIEyvp3h04jbnveVliTzPvvpFUFzKJO55N3K1FrWtfl8SAiBQ22fNjiJUmMnmu4i1RAdjGRokrmd1DW30UsvtUMmvrw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIB3MopUj72axVxQcVuD0rem35k4qy47dn3YvgW0V94E/AiBMPpEhN2jSDca0Dx7xtXX6MeW7oms2fp0dMzyAphu5JQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@8bitscript%2fui@0.2.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":30132},"type":"module","scripts":{"test":"node --test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9c1bc911-def1-4326-ab01-a83866c486d0"}},"8bitscript":{"exports":{"./menubar":"./src/menubar.8bs"}},"repository":{"url":"https://github.com/8BitScript/8bitscript.git","type":"git","directory":"packages/ui"},"description":"Reusable interface components for 8BitScript programs: a menu bar today, drawn on the character grid through @8bitscript/text, so one component works on every target.","directories":{},"dependencies":{"@8bitscript/text":"0.2.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ui_0.2.5_1789132226864_0.49669949045623185","host":"s3://npm-registry-packages-npm-production"}},"0.2.6":{"name":"@8bitscript/ui","version":"0.2.6","license":"MIT","_id":"@8bitscript/ui@0.2.6","maintainers":[{"name":"muncherelli","email":"james.muncherelli@gmail.com"}],"dist":{"shasum":"c799c5176539c4d7873c3efe3e192d494fc45192","tarball":"https://registry.npmjs.org/@8bitscript/ui/-/ui-0.2.6.tgz","fileCount":4,"integrity":"sha512-Tm6rQlX89PBSx1Nbcwab4IfiBzyUSwsqfbf9lZ41Mvq9jeErsQm7Kv3fQOQ6XTLr3QxqYw/BOJwde/mgZesN9Q==","signatures":[{"sig":"MEUCIAK4igdsNU/6IPTLYlSnLV67YnsVNjpOmwDPIxdZNNd8AiEApjvXwonznzOV4CgEmn1QvextI0lCzKkFNaGnJivgtKg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIDjp6Cy/rs9AINe1ocqUFesDTMLMVdwycMSR4NCQ7o+hAiEAuwHiWa0C5XUvB6YvtTd5aQmv0PYKc3I2f0fus4yN1pY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@8bitscript%2fui@0.2.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":30132},"type":"module","scripts":{"test":"node --test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9c1bc911-def1-4326-ab01-a83866c486d0"}},"8bitscript":{"exports":{"./menubar":"./src/menubar.8bs"}},"repository":{"url":"https://github.com/8BitScript/8bitscript.git","type":"git","directory":"packages/ui"},"description":"Reusable interface components for 8BitScript programs: a menu bar today, drawn on the character grid through @8bitscript/text, so one component works on every target.","directories":{},"dependencies":{"@8bitscript/text":"0.2.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ui_0.2.6_1789139020339_0.483456655440369","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@8bitscript/ui","version":"0.3.0","license":"MIT","_id":"@8bitscript/ui@0.3.0","maintainers":[{"name":"muncherelli","email":"james.muncherelli@gmail.com"}],"dist":{"shasum":"b7575e7b5cb8d58a1eeaf2a375169f11ceaa15bc","tarball":"https://registry.npmjs.org/@8bitscript/ui/-/ui-0.3.0.tgz","fileCount":4,"integrity":"sha512-Gb3rhO52aw+c1g16QV8oEkm12rvcmc+k+GleLNEtYJ0O/48m7s/vCcyJ6FB/TjQrhQykbQC4pQjPd6aW6nTI1A==","signatures":[{"sig":"MEYCIQCrePdAu2DNk202q9egRpgKa7CfsqeDYG9CHZwL2yZ2fwIhAKf0ZKKYbZb1cgSYpjFGYhZW+Zy3TtmesdFXhStmkS+3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDt7w1S72VLl2xjG2p0JkXHbXA3G7tI8U8RGGyzzPWjWgIhALMPpyCtiPO4c/MLCsPfsi4rmfX8ahuNdirSgZJMkcGX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@8bitscript%2fui@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":30132},"type":"module","scripts":{"test":"node --test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9c1bc911-def1-4326-ab01-a83866c486d0"}},"8bitscript":{"exports":{"./menubar":"./src/menubar.8bs"}},"repository":{"url":"https://github.com/8BitScript/8bitscript.git","type":"git","directory":"packages/ui"},"description":"Reusable interface components for 8BitScript programs: a menu bar today, drawn on the character grid through @8bitscript/text, so one component works on every target.","directories":{},"dependencies":{"@8bitscript/text":"0.3.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ui_0.3.0_1789153467346_0.6485186220316799","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@8bitscript/ui","version":"0.4.0","license":"MIT","_id":"@8bitscript/ui@0.4.0","maintainers":[{"name":"muncherelli","email":"james.muncherelli@gmail.com"}],"dist":{"shasum":"4a8838608781b9ed9ce4b1154a4b37382243b946","tarball":"https://registry.npmjs.org/@8bitscript/ui/-/ui-0.4.0.tgz","fileCount":4,"integrity":"sha512-RSeaGHbuFTr1HO4T727SVlDIZHQksSFdtE1RrgiRPs5/c4z74LyAXkuLy9pP5XQft1FpBAlXrYwOfAZEUhPwSA==","signatures":[{"sig":"MEUCIQCVdy0n+mSmk6bE0ya1P4Dw/hQVY3lUzrA1htUHjRRvVAIgbfnG73mzAI/15XBYlgKjEDWvqA7Gafy8MrRAwQwFzgo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDcWhP+Og4FBXTfNN0tdjezinTWl2xrmEWtysBuDxbh2QIgJ8R+RSPXr3bF8e59JdU7ZJPIhHOW9RCG660B0Bvzf1Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@8bitscript%2fui@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":30132},"type":"module","scripts":{"test":"node --test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9c1bc911-def1-4326-ab01-a83866c486d0"}},"8bitscript":{"exports":{"./menubar":"./src/menubar.8bs"}},"repository":{"url":"https://github.com/8BitScript/8bitscript.git","type":"git","directory":"packages/ui"},"description":"Reusable interface components for 8BitScript programs: a menu bar today, drawn on the character grid through @8bitscript/text, so one component works on every target.","directories":{},"dependencies":{"@8bitscript/text":"0.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ui_0.4.0_1789163010657_0.5136058391511718","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@8bitscript/ui","version":"0.4.1","license":"MIT","_id":"@8bitscript/ui@0.4.1","maintainers":[{"name":"muncherelli","email":"james.muncherelli@gmail.com"}],"dist":{"shasum":"27688e7d39e16cdfdb70da26089f685bcdc4baf9","tarball":"https://registry.npmjs.org/@8bitscript/ui/-/ui-0.4.1.tgz","fileCount":4,"integrity":"sha512-oDdr5z1DKZ7r3x76SuII2CmZH1SWBlKBPvCTWddbFYshk91e4gRyblmDYS9Q+QgLNpJ8ZHu5Qwo2fdsZxsEFIQ==","signatures":[{"sig":"MEUCIQDiXPAjWPhG6S4tXKc8h37iLTB3kOXcnAKE7Uc8xE0GIQIgbNJ+Tx5ktfLlAyb5c0Rwk7ZvxRwCjnYfKjVKodr5ukQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIFgUs93F4sg2NhUy2yRBai1X/ehvisv5ToIIfOKd19jOAiEAtoH7FdEa3zx613Nzrb4QkFxoHQTWUH3G37IlYZQnigo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@8bitscript%2fui@0.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":30132},"type":"module","scripts":{"test":"node --test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9c1bc911-def1-4326-ab01-a83866c486d0"}},"8bitscript":{"exports":{"./menubar":"./src/menubar.8bs"}},"repository":{"url":"https://github.com/8BitScript/8bitscript.git","type":"git","directory":"packages/ui"},"description":"Reusable interface components for 8BitScript programs: a menu bar today, drawn on the character grid through @8bitscript/text, so one component works on every target.","directories":{},"dependencies":{"@8bitscript/text":"0.4.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ui_0.4.1_1789165364515_0.6391208319036554","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@8bitscript/ui","version":"0.5.0","license":"MIT","_id":"@8bitscript/ui@0.5.0","maintainers":[{"name":"muncherelli","email":"james.muncherelli@gmail.com"}],"dist":{"shasum":"b4bc6c9ee74d72f846fe171b0267863d16a9c5a7","tarball":"https://registry.npmjs.org/@8bitscript/ui/-/ui-0.5.0.tgz","fileCount":4,"integrity":"sha512-6x4ot0oce/HghSyDjVqljcuJBdR1K4hTjv88vMJay5e0sP4Ayjei0/2hHUkifcwjaPfDrxf8vs3rgIhhwUjOsw==","signatures":[{"sig":"MEUCIQDv+gB+IEjSEil6ZZ4V8y52LAUmipd+c5XYHe+ifaJONgIgZe6T16YAEStWvwn2zE3fnOakf/yPg6l2QK+vC+nQz/8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQC74a65XbIIfIj1YwtEq1Oq9C32lFi8UCX7XVTnf4251QIgbaeNFN+0S5WE6Cwp3few1flBO8RVKZUaJYZE/eNuN2o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@8bitscript%2fui@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":30132},"type":"module","scripts":{"test":"node --test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9c1bc911-def1-4326-ab01-a83866c486d0"}},"8bitscript":{"exports":{"./menubar":"./src/menubar.8bs"}},"repository":{"url":"https://github.com/8BitScript/8bitscript.git","type":"git","directory":"packages/ui"},"description":"Reusable interface components for 8BitScript programs: a menu bar today, drawn on the character grid through @8bitscript/text, so one component works on every target.","directories":{},"dependencies":{"@8bitscript/text":"0.5.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ui_0.5.0_1789177689124_0.2707399852375014","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@8bitscript/ui","version":"0.6.0","license":"MIT","_id":"@8bitscript/ui@0.6.0","maintainers":[{"name":"muncherelli","email":"james.muncherelli@gmail.com"}],"dist":{"shasum":"51c5d14deba7bca716bd62eb32f4b5c8c58180fd","tarball":"https://registry.npmjs.org/@8bitscript/ui/-/ui-0.6.0.tgz","fileCount":4,"integrity":"sha512-eEXUl9HYb2s3wzsfGYr6dznp3Bo/OqRqXWTzrpwQcEtn31xYF62zAKtcxZhP6PW6lWvL6QOP7nK8JHraxbWLdg==","signatures":[{"sig":"MEUCICYMdB2IahvyVG99nUygMi2fOB8jQFyCGYcPHvijkE28AiEAmkH+eTAyMuEQUk7xpOprb4kXsIlK6HcZ9YyV3wMg9Vg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDeFkUVvqj0ItdjSAjwNhRdi7j9l0/Q4h3nrwKVtuavgwIhAN6jkCw+ThP+r93KxFzXODCGNGgZF93FGyCx8B5R0Exm","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@8bitscript%2fui@0.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":30132},"type":"module","scripts":{"test":"node --test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9c1bc911-def1-4326-ab01-a83866c486d0"}},"8bitscript":{"exports":{"./menubar":"./src/menubar.8bs"}},"repository":{"url":"https://github.com/8BitScript/8bitscript.git","type":"git","directory":"packages/ui"},"description":"Reusable interface components for 8BitScript programs: a menu bar today, drawn on the character grid through @8bitscript/text, so one component works on every target.","directories":{},"dependencies":{"@8bitscript/text":"0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ui_0.6.0_1789261105580_0.07689653775060212","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"@8bitscript/ui","version":"0.6.1","license":"MIT","_id":"@8bitscript/ui@0.6.1","maintainers":[{"name":"muncherelli","email":"james.muncherelli@gmail.com"}],"dist":{"shasum":"83c9508c81596667fbe2cb95c2dfdea311c35adb","tarball":"https://registry.npmjs.org/@8bitscript/ui/-/ui-0.6.1.tgz","fileCount":4,"integrity":"sha512-ZRsm4kZls4lJJFnVsv/9J+BQQbT/lMnlzuudkQ4aAEcXJGgoJfWjttQASFz5ggf8fMPEZ4GMo8DSefXlDg4K4g==","signatures":[{"sig":"MEUCIQCSpFP8xR3lSe2FNdu+a3w4cFH3lVu94Vizv4YGTPX+hwIgBox6mlV/s80zTuaCOYpQeOPt+yrlGbZ5UmiRBoCqF1A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIDNUcna3D4VFXrRghHIuLjUbB77ueU2gothqMIe8UxQuAiA/26Cposx+h4pGVp+gOkeJUjhKEMBg0s9K6BqnDDG1LQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@8bitscript%2fui@0.6.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":30132},"type":"module","scripts":{"test":"node --test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9c1bc911-def1-4326-ab01-a83866c486d0"}},"8bitscript":{"exports":{"./menubar":"./src/menubar.8bs"}},"repository":{"url":"https://github.com/8BitScript/8bitscript.git","type":"git","directory":"packages/ui"},"description":"Reusable interface components for 8BitScript programs: a menu bar today, drawn on the character grid through @8bitscript/text, so one component works on every target.","directories":{},"dependencies":{"@8bitscript/text":"0.6.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ui_0.6.1_1789262189818_0.8881583841609741","host":"s3://npm-registry-packages-npm-production"}},"0.6.2":{"name":"@8bitscript/ui","version":"0.6.2","license":"MIT","_id":"@8bitscript/ui@0.6.2","maintainers":[{"name":"muncherelli","email":"james.muncherelli@gmail.com"}],"dist":{"shasum":"901d0fe4fc3a4d1afe7b44038e81e3fbf13e48cb","tarball":"https://registry.npmjs.org/@8bitscript/ui/-/ui-0.6.2.tgz","fileCount":4,"integrity":"sha512-c0UkgaO/lPPyfK+ntmLvYUXmXPND9ws/T7UZurhJL2e1+vIYdW5TztEnvWX6/T9tl26999eF28kJodSt5VCJ0Q==","signatures":[{"sig":"MEUCIQClBwAx7W2Uluf22fovaj+4X5KwtoAEP9f7QfWNjQBBRgIgFfaKuyMVTbJg0EWdk8IS4qDkJQTJQhpChQEYkSUo3rw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQC/hd5zErsEZwQMlz2ZFYRJjTk/AH5nZAmdQPETcU8qxwIgESvsLdqcQ7fv8DJ78JFhwUmb1jG8cxXEMW3nZAXxFcw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@8bitscript%2fui@0.6.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":30132},"type":"module","scripts":{"test":"node --test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9c1bc911-def1-4326-ab01-a83866c486d0"}},"8bitscript":{"exports":{"./menubar":"./src/menubar.8bs"}},"repository":{"url":"https://github.com/8BitScript/8bitscript.git","type":"git","directory":"packages/ui"},"description":"Reusable interface components for 8BitScript programs: a menu bar today, drawn on the character grid through @8bitscript/text, so one component works on every target.","directories":{},"dependencies":{"@8bitscript/text":"0.6.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ui_0.6.2_1789307740039_0.4190900829627615","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"_id":"@8bitscript/ui@0.7.0","dist":{"shasum":"ac892d5fbf53de6db3a3fb4844a9c439ef351fec","tarball":"https://registry.npmjs.org/@8bitscript/ui/-/ui-0.7.0.tgz","fileCount":4,"integrity":"sha512-VBxc/Y02rpz5gWWVo4jSBx7aUrHzUI1yJAIEHhj0SnvKgqc26nOVlfiGyKn2sO8RIO3up7nO1gvNHkSPhreyzA==","signatures":[{"sig":"MEQCIHOg0n86t7810+W5PTLP/gS5WyL34zmTOsXhk3xhAf3DAiB5LZYj+2XCoxHFF5yTqyrIS5ExKe7bpkyczIgF6GECjg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIGpypf7o1OGKXVcx62Qsgm5hKbGpB8UpuqdJVtoqpEotAiEA/N43nPrVs7fofC64AnppW+3OgoXkcyJfxTfZtR+yv5c="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@8bitscript%2fui@0.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":30132},"name":"@8bitscript/ui","type":"module","license":"MIT","scripts":{"test":"node --test"},"version":"0.7.0","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9c1bc911-def1-4326-ab01-a83866c486d0"}},"8bitscript":{"exports":{"./menubar":"./src/menubar.8bs"}},"repository":{"url":"https://github.com/8BitScript/8bitscript.git","type":"git","directory":"packages/ui"},"description":"Reusable interface components for 8BitScript programs: a menu bar today, drawn on the character grid through @8bitscript/text, so one component works on every target.","directories":{},"maintainers":[{"name":"muncherelli","email":"james.muncherelli@gmail.com"}],"dependencies":{"@8bitscript/text":"0.7.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ui_0.7.0_1789333830145_0.8944205167154684"}}},"time":{"created":"2026-09-08T13:00:23.518Z","modified":"2026-09-13T21:10:30.579Z","0.1.0":"2026-09-08T13:00:23.820Z","0.1.1":"2026-09-08T16:54:28.823Z","0.1.2":"2026-09-08T18:15:55.476Z","0.1.3":"2026-09-09T01:13:40.672Z","0.2.0":"2026-09-10T19:14:01.085Z","0.2.1":"2026-09-10T23:09:09.459Z","0.2.2":"2026-09-11T02:13:59.177Z","0.2.3":"2026-09-11T04:48:19.702Z","0.2.4":"2026-09-11T12:48:31.754Z","0.2.5":"2026-09-11T13:10:26.958Z","0.2.6":"2026-09-11T15:03:40.430Z","0.3.0":"2026-09-11T19:04:27.428Z","0.4.0":"2026-09-11T21:43:30.749Z","0.4.1":"2026-09-11T22:22:44.584Z","0.5.0":"2026-09-12T01:48:09.260Z","0.6.0":"2026-09-13T00:58:25.664Z","0.6.1":"2026-09-13T01:16:29.887Z","0.6.2":"2026-09-13T13:55:40.127Z","0.7.0":"2026-09-13T21:10:30.227Z"},"license":"MIT","repository":{"url":"https://github.com/8BitScript/8bitscript.git","type":"git","directory":"packages/ui"},"description":"Reusable interface components for 8BitScript programs: a menu bar today, drawn on the character grid through @8bitscript/text, so one component works on every target.","maintainers":[{"name":"muncherelli","email":"james.muncherelli@gmail.com"}],"readme":"# @8bitscript/ui\n\nReusable interface components for 8BitScript programs. A component draws on\nthe character grid through [`@8bitscript/text`](../text), so the same code\nputs the same thing on a PET's 40 columns, a VIC-20's 22, and a Commander\nX16's 76 — there is one menu bar, not nine.\n\nToday there is one component.\n\n```bash\npnpm add @8bitscript/ui\n```\n\n```\nimport { text, TextColor } from \"@8bitscript/text\";\nimport { menubar } from \"@8bitscript/ui/menubar\";\n\nexport function main(): void {\n    menubar.setColors(TextColor.WHITE, TextColor.YELLOW);\n    menubar.select(1);\n\n    menubar.begin(0, text.COLUMNS);\n    menubar.item(\"FILE\");\n    if (menubar.item(\"EDIT\")) {\n        text.print(text.COLUMNS, \"EDIT MENU\");\n    }\n    menubar.item(\"VIEW\");\n    menubar.end();\n}\n```\n\n```\n FILE -EDIT- VIEW\n```\n\nEvery component is its own subpath, so a program links the ones it names\nand nothing else — there is no `import ... from \"@8bitscript/ui\"`.\n\n## The menu bar\n\n`@8bitscript/ui/menubar` draws one row of items with the selected one\ninverted — reverse video in the item color, a filled bar rather than a\nrecolored word.\n\n| Call | What it does |\n| --- | --- |\n| `begin(at, cells)` | Open a bar at cell `at`, using `cells` cells and never one more |\n| `item(name)` | Draw the next item; returns whether it is the highlighted one |\n| `end()` | Close the bar, blanking whatever is left of it |\n| `select(i)` / `selected()` | Which item is highlighted; 0 is the first |\n| `count()` | How many items the last run offered, drawn or not |\n| `clipped()` | Whether an item had to be dropped for want of room |\n| `setColors(item, highlight)` | Item color; invert uses it, `highlight` is unused |\n| `setPadding(cells)` | Space either side of each label; 1 by default |\n| `setMarker(s)` | The bracket, a one-character string; `\"-\"` by default, `\"\"` for none |\n| `HEIGHT` | Rows a bar occupies, so a program can lay out under it |\n\n**The bar is a run of calls, not an object.** There is no list of items\nkept anywhere: `begin()` opens the bar, each `item()` draws one and moves\nthe cursor along, and `end()` closes it. Redrawing means running the calls\nagain. Nothing allocates, and no RAM is spent remembering what the program\nalready knows — which matters on a machine with 3583 bytes for the whole\nprogram.\n\n**`item()` returns whether that item is the highlighted one**, so\n\n```\nif (menubar.item(\"FILE\")) { drawFileMenu(); }\n```\n\nis how a program hangs behavior off the selection. Nothing moves the\nhighlight on its own: this component never reads input, so a program\ncalls `select()`, `next()`, `previous()` or `deselect()` itself, driving\nthem from `@8bitscript/input` or from anything else it likes.\n\n**The selected item is inverted, not recolored.** Reverse video fills the\nlabel and its padding in the item color; a reverse space is a solid\nblock, so the item reads as a button. That works on all nine, including\nthe three with no per-cell color: the NES ships inverted copies of its\nfont at ASCII+128, and the PET and Atari invert with bit 7 of the screen\ncode.\n\n**Drawing goes through `text.print`, and that is worth 423 bytes.**\n`print` does a machine's per-run video setup once and then walks the string;\n`putChar` is self-sufficient, so it redoes that setup — and an ASCII\nconversion, and a sixteen-bit pointer build — for every cell, inlined into\nwherever it was called. So the bar prints everything: `begin()` blanks the\nrow in one pass, `item()` prints its label and a padding space either side\n(reverse spaces are the filled ends of a selected item), and reverse rides\nalong on `print` rather than a second pass over the cells. Built the obvious\nway instead — runs of\n`putChar` for padding, marker, label, marker, padding — `item()` compiled to\n743 bytes on a C64 rather than 285. Adding the bar to Studio costs 423 bytes\non a C64 and 396 on a VIC-20;\n[AGENTS.md](AGENTS.md#what-it-costs) has the table for every machine, the\nfour shapes measured on the way, and the `@8bitscript/text` primitive that\nwould take another bite out of it.\n\n**Drawing a bar leaves the text color set to the bar's.** That is how the\ncolor gets on without a second pass, and there is no `text.getColor` to put\nyour setting back with. Draw the bar, *then* set your own color:\n\n```\nmenubar.setColors(TextColor.CYAN, TextColor.WHITE);\ndrawBar();\ntext.setColor(TextColor.WHITE);   // the rest of the screen is yours\n```\n\n**A bar never writes past the cells it was given.** An item with no room\nleft is not drawn — it still takes its index, so which item is selected\ndoes not depend on the width of the screen — and `clipped()` says so\nafterwards. `FILE EDIT VIEW HELP` needs 24 cells and a VIC-20's row has 22,\nso on that machine `HELP` is dropped and `clipped()` is true. What to do\nabout it is the program's decision: shorter labels, less padding, or a\nsecond row.\n\n## See it run\n\n[8BitScript Studio](../studio) uses a four-item bar across the top of its\nfront door. The VIC-20 is parked — `8bs build --target vic20` still\nrefuses, since that machine's own backend doesn't exist yet — so that\npicture is the pre-0.2.0 layout, not something trunk emits today. It's the\nmachine where `FILE EDIT VIEW HELP` does not fit a 22-column row: `HELP` is\ndropped and `clipped()` is true.\n\n## Adding a component\n\nSee [AGENTS.md](AGENTS.md): what belongs here rather than in a machine\npackage, what the character grid does and does not give you on each target,\nand the rule that every component links for all nine.\n","readmeFilename":""}