{"_id":"@aperture-engine/ui","name":"@aperture-engine/ui","dist-tags":{"latest":"0.3.0"},"versions":{"0.3.0":{"name":"@aperture-engine/ui","version":"0.3.0","description":"Flexbox UI for Aperture: Yoga layout, SDF panels, text input, scrollbars, conditional/responsive styling, and prebuilt kits.","author":{"name":"Felix Zhang"},"repository":{"type":"git","url":"git+https://github.com/felixtrz/aperture.git","directory":"packages/ui"},"homepage":"https://github.com/felixtrz/aperture/tree/main/packages/ui#readme","bugs":{"url":"https://github.com/felixtrz/aperture/issues"},"keywords":["aperture","ecs","ui","flexbox","yoga","webgpu","game-engine","typescript"],"type":"module","license":"MIT","sideEffects":false,"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./app":{"types":"./dist/app.d.ts","import":"./dist/app.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js"},"./test-support":{"types":"./dist/test-support.d.ts","import":"./dist/test-support.js"},"./package.json":"./package.json"},"main":"./dist/index.js","types":"./dist/index.d.ts","publishConfig":{"access":"public"},"dependencies":{"yoga-layout":"^3.2.1","@aperture-engine/render":"^0.3.0","@aperture-engine/simulation":"^0.3.0","@aperture-engine/runtime":"^0.3.0"},"scripts":{"build":"tsc -p tsconfig.json","typecheck":"tsc --noEmit -p tsconfig.json"},"_id":"@aperture-engine/ui@0.3.0","_integrity":"sha512-5ukrmKgipX/hw0NjqJbL6ZvOfnSPyYvG7wCa3Sh4Fh5fW/LNE0NpZqjpnsa4PsdpYAkD5LZxt8EwBHnlGoBmIw==","_resolved":"/private/var/folders/xc/nttyc9pj3xngmbjsfbgdbddc0000gn/T/6bd7503dd9130d5f1938cfdccd01071b/aperture-engine-ui-0.3.0.tgz","_from":"file:aperture-engine-ui-0.3.0.tgz","_nodeVersion":"26.0.0","_npmVersion":"11.12.1","dist":{"integrity":"sha512-5ukrmKgipX/hw0NjqJbL6ZvOfnSPyYvG7wCa3Sh4Fh5fW/LNE0NpZqjpnsa4PsdpYAkD5LZxt8EwBHnlGoBmIw==","shasum":"e262caa7c467d6e5b1bc832bf8407aaec3b695fa","tarball":"https://registry.npmjs.org/@aperture-engine/ui/-/ui-0.3.0.tgz","fileCount":135,"unpackedSize":362179,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIC5ANqpj6BTbIy37hAjFpaEz8vqzHzwrgYLFaGKO7OXRAiAWC1DcO1QvVg2f7686ld0pxUpjCuyM2DL1Th3TXXCq7Q=="}]},"_npmUser":{"name":"felixtrz","email":"felixtrz96@gmail.com"},"directories":{},"maintainers":[{"name":"felixtrz","email":"felixtrz96@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ui_0.3.0_1783122762849_0.4464227910554892"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-03T23:52:42.672Z","0.3.0":"2026-07-03T23:52:42.991Z","modified":"2026-07-03T23:52:43.179Z"},"maintainers":[{"name":"felixtrz","email":"felixtrz96@gmail.com"}],"description":"Flexbox UI for Aperture: Yoga layout, SDF panels, text input, scrollbars, conditional/responsive styling, and prebuilt kits.","homepage":"https://github.com/felixtrz/aperture/tree/main/packages/ui#readme","keywords":["aperture","ecs","ui","flexbox","yoga","webgpu","game-engine","typescript"],"repository":{"type":"git","url":"git+https://github.com/felixtrz/aperture.git","directory":"packages/ui"},"author":{"name":"Felix Zhang"},"bugs":{"url":"https://github.com/felixtrz/aperture/issues"},"license":"MIT","readme":"# @aperture-engine/ui\n\nFlexbox UI for the Aperture engine.\n\nThis package brings Aperture's UI to feature parity with in-scene UI libraries\nsuch as `pmndrs/uikit`, while keeping Aperture's structural advantages\n(WebGPU-native rendering, ECS authoring, worker-safe + deterministic layout, and\na renderer-independent snapshot boundary).\n\nIt provides:\n\n- A **Yoga**-backed flexbox `LayoutEngine` with a retained, entity-keyed node\n  tree, dirty-gated incremental relayout, and a `freeze` capability for static\n  UI (a game-oriented feature in-scene UI libraries lack).\n- A renderer-independent **layout style** model (the full flexbox property set:\n  grow/shrink/basis, wrap, justify/align, gap, per-side padding/margin, inset,\n  min/max sizing, percentages, aspect ratio, overflow).\n- A bridge from Yoga measure functions to Aperture's deterministic MSDF text\n  layout, so content-driven sizing (`width: auto`, wrapping, `aspectRatio`)\n  works for text leaves.\n\nSee `docs/UI_PACKAGE_PLAN.md` for the full design and roadmap.\n\n## Entry Points\n\n- `@aperture-engine/ui` - worker-safe UI layout, components, extraction, input\n  state, and style contracts.\n- `@aperture-engine/ui/app` - structural app feature descriptor for\n  feature-based composition.\n- `@aperture-engine/ui/browser` - DOM-backed hidden input and IME bridge APIs.\n\n## Status\n\nUnder active development. The layout engine and style model are available; SDF\nborders, text input, scrollbars, conditional/responsive styling, and prebuilt\nkits land in subsequent milestones.\n\n## Determinism\n\nYoga's layout is deterministic for a single pinned WASM build. UI layout is\ndownstream of the simulation (it does not feed the deterministic sim hash), so\nreplays on the same build are exact.\n","readmeFilename":"README.md","_rev":"1-1272676a28005400dce5e535313240ec"}