Thank you for your interest in contributing to NXT ui components. Because NXT ui components is a shared library consumed by multiple applications, changes here can affect all of them — please read this document carefully before submitting changes.
git clone https://github.com/nxtgrid/nxt-ui-components.git
cd nxt-ui-components
nvm use
npm install
npm run storybook # explore and develop components in isolationNXT ui components provides components, composables, and libraries shared across all NXT front-end apps. When contributing:
- Components live in
shared/components/. They should be generic enough to be useful across apps without hard-coded app-specific logic. - Composables live in
shared/composables/. Keep them focused on a single concern. - Libraries (API repos, utilities, constants) live in
shared/libraries/. - Styles (SCSS variables, mixins, base rules) live in
shared/styles/.
When adding a new env var dependency (e.g. import.meta.env.VITE_*), document it in the .env.example of every consuming application.
- Fork the repository and create your branch from
main. - Name your branch using the following convention:
feat/short-description— new feature or componentfix/short-description— bug fixchore/short-description— tooling, dependencies, refactoringdocs/short-description— documentation only
- Make your changes and ensure the linter passes (
npm run lint). - Test in a consuming app by cloning it as a sibling and using the local path alias before submitting.
- Open a pull request against
mainwith a clear description of what changed and why — and which consuming apps are affected.
This project uses ESLint. All staged files are linted automatically on every commit via Husky and lint-staged.
- Run
npm run lintto check for issues. - Run
npm run lint:fixto auto-fix where possible. - The linter is configured with
--max-warnings=0— no warnings are allowed in a commit.
NXT ui components maintains a patch-package patch for @vueuse/core. If your change modifies how @vueuse/core is used, verify the patch in patches/ is still correct and update it if needed.
Use clear, imperative present-tense messages:
feat: add NxtDateRangePicker component
fix: correct MQTT reconnect logic on token expiry
chore: upgrade @vueuse/core and refresh patch
docs: add usage example to NxtModal README section
Please open an issue and include:
- A clear description of the problem or suggestion
- Which consuming app(s) are affected
- Steps to reproduce (for bugs)
- Your Node.js version and operating system
For questions about the project, reach out to studio.innua@gmail.com.