{"id":15146617,"url":"https://github.com/retchut/aframe-mesh-ui-components","last_synced_at":"2026-06-12T11:01:26.475Z","repository":{"id":186327821,"uuid":"674951500","full_name":"Retchut/aframe-mesh-ui-components","owner":"Retchut","description":"A simple port of felixmariotto's three-mesh-ui package for use in A-Frame's environment","archived":false,"fork":false,"pushed_at":"2024-04-03T09:15:08.000Z","size":718,"stargazers_count":2,"open_issues_count":1,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-22T23:34:31.778Z","etag":null,"topics":["aframe","aframe-component","threejs","vr","webxr"],"latest_commit_sha":null,"homepage":"https://www.npmjs.com/package/aframe-mesh-ui-components","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Retchut.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-08-05T09:22:38.000Z","updated_at":"2024-07-19T08:31:17.000Z","dependencies_parsed_at":null,"dependency_job_id":"09b1efd7-4af6-4a2a-8956-728e4dc422a1","html_url":"https://github.com/Retchut/aframe-mesh-ui-components","commit_stats":{"total_commits":10,"total_committers":1,"mean_commits":10.0,"dds":0.0,"last_synced_commit":"71c5007cc34bf2007e7bf9dc84445a811d9de6ec"},"previous_names":["retchut/aframe-mesh-ui","retchut/aframe-mesh-ui-components"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Retchut/aframe-mesh-ui-components","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Retchut%2Faframe-mesh-ui-components","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Retchut%2Faframe-mesh-ui-components/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Retchut%2Faframe-mesh-ui-components/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Retchut%2Faframe-mesh-ui-components/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Retchut","download_url":"https://codeload.github.com/Retchut/aframe-mesh-ui-components/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Retchut%2Faframe-mesh-ui-components/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34240817,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-12T02:00:06.859Z","response_time":109,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aframe","aframe-component","threejs","vr","webxr"],"created_at":"2024-09-26T12:03:19.351Z","updated_at":"2026-06-12T11:01:26.319Z","avatar_url":"https://github.com/Retchut.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# aframe-mesh-ui-components\n\n**aframe-mesh-ui-components** is a set of A-Frame components which aid in creating VR UIs for building VR user interfaces.\n\nThese components utilize [Felix Mariotto](https://github.com/felixmariotto/)'s [three-mesh-ui](https://github.com/felixmariotto/three-mesh-ui) library under the hood, adapting it to components fit for use with A-Frame.\n\n# Import\n\n## Module\n\nYou can install the module by installing its corresponding npm package:\n\n`npm install aframe-mesh-ui-components`\n\nYou can then import it as an ES6 module or CommonJS:\n\n```javascript\n// ES6\nimport ThreeMeshUI from \"aframe-mesh-ui-components\";\n\n// CommonJS\nconst ThreeMeshUI = require(\"aframe-mesh-ui-components\");\n```\n\n## HTML \u0026lt;script\u0026gt; tag\n\nAlternatively, you can include a minified or development version of the package via a `\u003cscript\u003e` tag in your html:\n\n```html\n\u003c!-- Make sure to also include a-frame's latest build ! --\u003e\n\u003cscript src=\"https://aframe.io/releases/1.4.0/aframe.min.js\"\u003e\u003c/script\u003e\n\n\u003c!-- minified --\u003e\n\u003cscript src=\"https://unpkg.com/aframe-mesh-ui-components@0.5.0/dist/aframe-mesh-ui.min.js\"\u003e\u003c/script\u003e\n\n\u003c!-- development --\u003e\n\u003cscript src=\"https://unpkg.com/aframe-mesh-ui-components@0.5.0/dist/aframe-mesh-ui.js\"\u003e\u003c/script\u003e\n```\n\n# Usage\n\n## Font files\n\nIn order to display text from within the mesh-text component, a parent component must provide a fontFamily file and a fontTexture file.\n\nThe two font files used in the examples were taken from Felix Mariotto's [example assets](https://github.com/felixmariotto/three-mesh-ui/tree/master/examples/assets), and you can find their tutorial on how to create new fonts [here](https://github.com/felixmariotto/three-mesh-ui/wiki/Creating-your-own-fonts)\n\n## Simple use case\n\nWhat follows is a very rudimentary and simple use case. More examples can be found inside the [examples folder](https://github.com/Retchut/aframe-mesh-ui-components/tree/main/examples).\n\nYou can run these by cloning the repository and running the local development server.\n\n### Code\n\n```html\n\u003c!-- You can mix and match the UI components and any other A-Frame component! --\u003e\n\u003ca-scene\u003e\n\t\u003ca-entity\n\t\tposition=\"0 1.5 -1\"\n\t\tmesh-container\n\t\tmesh-block=\"\n\t\t\twidth: 1;\n\t\t\theight: 1;\n\t\t\tfontFamily: ./fonts/Roboto/Roboto-msdf.json;\n\t\t\tfontTexture: ./fonts/Roboto/Roboto-msdf.png;\n\t\t\"\n\t\u003e\n\t\t\u003ca-entity\n\t\t\tmesh-text=\"\n\t\t\t\tcontent: This is some text;\n\t\t\t\tfontSize: 0.1\n\t\t\t\"\n\t\t\u003e\u003c/a-entity\u003e\n\t\u003c/a-entity\u003e\n\u003c/a-scene\u003e\n```\n\n#### End result\n\n![Basic example](./examples/images/basic.png)\n\n### Components\n\n#### mesh-container\n\nThe parent of a UI element must contain both a `mesh-container` and a `mesh-block` component.\n\nThe `mesh-container` component handles the recursive loading of all the `mesh-block` and `mesh-text` components contained in its entity, and all of its children.\n\n#### mesh-block\n\nA `mesh-block` component is equivalent to a `ThreeMeshUI.Block` object.\n\nIt receives the exact same properties a ThreeMeshUI Block would.\n\n#### mesh-text\n\nA `mesh-text` component is equivalent to a `ThreeMeshUI.Text` object.\n\nIt receives the exact same properties a ThreeMeshUI Text would.\n\n# Scripts\n\n## Development server\n\nYou can run a local development server by running the `npm start` command in the root of this project.\n\n## Build generation\n\n`npm run dist:min` - generates a minified build and its corresponding source map\n\n`npm run dist:max` - generates a development build and its corresponding source map\n\n`npm run dist` - generates both a minified and a development build and their corresponding source maps\n\n# TODO\n\nThere are still some components which are missing implementation:\n\n- Image blocks\n- Buttons (also including keyboard utilities)\n- Runtime UI modification utilities\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fretchut%2Faframe-mesh-ui-components","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fretchut%2Faframe-mesh-ui-components","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fretchut%2Faframe-mesh-ui-components/lists"}