{"id":23974272,"url":"https://github.com/basssiiie/openrct2-flexui","last_synced_at":"2025-04-13T22:24:54.688Z","repository":{"id":40579812,"uuid":"396439593","full_name":"Basssiiie/OpenRCT2-FlexUI","owner":"Basssiiie","description":"Flexible library for creating user interfaces for OpenRCT2 plugins.","archived":false,"fork":false,"pushed_at":"2025-03-15T14:55:42.000Z","size":1726,"stargazers_count":10,"open_issues_count":2,"forks_count":3,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-13T06:42:25.975Z","etag":null,"topics":["flexible","framework","hacktoberfest","openrct2","openrct2-plugin","ui"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","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/Basssiiie.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":"2021-08-15T17:50:27.000Z","updated_at":"2025-03-15T14:55:45.000Z","dependencies_parsed_at":"2024-11-02T22:32:21.514Z","dependency_job_id":"584369a9-57c8-4798-aaa5-c20ecf0a0cb4","html_url":"https://github.com/Basssiiie/OpenRCT2-FlexUI","commit_stats":{"total_commits":247,"total_committers":6,"mean_commits":"41.166666666666664","dds":0.4898785425101214,"last_synced_commit":"4f1354aa05139ada494d0673542f0eedd73a7439"},"previous_names":["basssiiie/openrct2-fluentui"],"tags_count":20,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Basssiiie%2FOpenRCT2-FlexUI","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Basssiiie%2FOpenRCT2-FlexUI/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Basssiiie%2FOpenRCT2-FlexUI/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Basssiiie%2FOpenRCT2-FlexUI/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Basssiiie","download_url":"https://codeload.github.com/Basssiiie/OpenRCT2-FlexUI/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248790029,"owners_count":21161934,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["flexible","framework","hacktoberfest","openrct2","openrct2-plugin","ui"],"created_at":"2025-01-07T05:34:44.057Z","updated_at":"2025-04-13T22:24:54.650Z","avatar_url":"https://github.com/Basssiiie.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# FlexUI for OpenRCT2 plugins\n\nA flexible no-nonsense user interface library for creating windows for OpenRCT2 plugins.\n\n - Simple declarative approach to designing your windows;\n - Bind models to your interface components using reactive MVVM-like bindings;\n    - Your UI will automatically update when the values in your models change.\n - Automatically resize parts of your UI when users resize your window;\n - Percentile or weighted sizing of widgets;\n    - Put your widgets in columns or rows, sized to 10% or 2/3 of the size of the parent, or something like that.\n - Nested widgets, widgets in widgets, or widget-inception;\n - New widgets like toggle buttons, dropdown-spinners and dropdown-buttons;\n - Supports both tabbed and regular window.\n - Easily extendable by implementing your own `WidgetCreator`-implementations;\n - Tree-shakable and minifiable;\n    - If you use a tree-shaker then code from the library that you don't use will not be shipped with your plugin.\n - Fully unit-tested.\n\nDesigned with a focus on ease of use, performance, light-weighted and flexibility.\n\nFor examples see the [examples folder](https://github.com/Basssiiie/OpenRCT2-FlexUI/tree/main/examples).\n\n## Plugins using FlexUI\n\nVarious plugins have already adopted FlexUI as their UI-library:\n\n- **[RideVehicleEditor](https://openrct2plugins.org/plugin/MDEwOlJlcG9zaXRvcnkzMTI2MjQ1MjY=/OpenRCT2-RideVehicleEditor)**, by Basssiiie\n- **[ParkRatingInspector](https://openrct2plugins.org/plugin/MDEwOlJlcG9zaXRvcnkzOTY0NTM0NjA=/OpenRCT2-ParkRatingInspector)**, by Basssiiie\n- **[RCTris (Tetris)](https://openrct2plugins.org/plugin/R_kgDOLBRY8A/openrct2-rctris)**, by Sadret\n- **[Consistent Guest Stats](https://openrct2plugins.org/plugin/R_kgDOK8S5TQ/consistent-guest-stats)**, by ItsSmitty\n- **[Ride Painter](https://openrct2plugins.org/plugin/R_kgDOGuBtxQ/OpenRCT-Ride-Painter)**, by ItsSmitty\n- **[Wet Paint Plugin](https://openrct2plugins.org/plugin/R_kgDOIOX2DQ/Wet-Paint-Plugin)**, by ItsSmitty\n- **[Guest Teleporter](https://github.com/ltsSmitty/guest-teleporter)**, by ItsSmitty\n- **[Force Visualiser](https://openrct2plugins.org/plugin/R_kgDOLhm8Bg/OpenRCT2-Force-Visualiser)**, by Alfinch\n- **[Soft Guest Cap Inspector](https://openrct2plugins.org/plugin/R_kgDOJUjXiA/openrct2-soft-guest-cap-inspector)**, by Beam41\n- **[Maze Generator](https://openrct2plugins.org/plugin/R_kgDOJVzaYg/openrct2-maze-generator)**, by Beam41\n- **[RemoteHandymen](https://openrct2plugins.org/plugin/R_kgDOJeMV7Q/openrct2-remotehandymen)**, by mrmagic2020\n- **[Dynamic Dashboard](https://github.com/mrmagic2020/openrct2-dynamicdashboard)**, by mrmagic2020\n- **[Plugin Manager](https://openrct2plugins.org/plugin/R_kgDOLerpYQ/openrct2-plugin-manager)**, by Harry-Hopkinson\n- **[Variable Editor](https://github.com/Harry-Hopkinson/openrct2-variable-editor)**, by Harry-Hopkinson\n- **[OpenRCT2 Statistics](https://openrct2plugins.org/plugin/R_kgDOK7U8Bw/openrct2-statistics)**, by KatieZeldaKat\n\n---\n\n## Installing a pre-release\n\n\u003e **This library is still in development. It may contain bugs or missing features. There may be breaking changes.**\n\u003e\n\u003e If you find a bug or have a feature request, please report it under [Issues](https://github.com/Basssiiie/OpenRCT2-FlexUI/issues) or find me on Discord in the [OpenRCT2 server](https://github.com/OpenRCT2/OpenRCT2#chat).\n\nInstall the latest pre-release directly from the NPM registry with:\n```\nnpm install openrct2-flexui@next\n```\n\n---\n\n## Building the source code\n\nRequirements: [Node](https://nodejs.org/en/), NPM.\n\n1. Open command prompt, use `cd` to change your current directory to the root folder of this project and run `npm install`.\n2. Run `npm run build` (production build) or `npm run build:dev` (development build) to build the project.\n    - The output folder for the packaged library is `(project directory)/dist`.\n\n### Using a development build\n\nTo publish a local version of FlexUI for use in your own plugins;\n1. Make a local build using `npm run build` or `npm run build:dev`.\n2. Run `npm run publish:local` to install a local build into your global npm packages directory.\n3. In the main folder of your new plugin; run `npm link openrct2-flexui` to temporarily link the local FlexUI build to your new plugin.\n\n### Unit tests\n\nThe unit tests are written using AVA.js and can be run outside the game. First run `npm run install:test-setup` in the main folder to ensure the test dependencies are installed, and then `npm run build` to get a build for the included integration tests. Then simply run `npm test` to run all tests.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbasssiiie%2Fopenrct2-flexui","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbasssiiie%2Fopenrct2-flexui","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbasssiiie%2Fopenrct2-flexui/lists"}