https://github.com/kubit-ui/kubit-react-components
Kubit React Components is a customizable, accessible library of React web components, designed to enhance your application's user experience.
https://github.com/kubit-ui/kubit-react-components
accesibility components components-library components-react design-pattern design-system javascript react storybook typescript wcag
Last synced: 2 months ago
JSON representation
Kubit React Components is a customizable, accessible library of React web components, designed to enhance your application's user experience.
- Host: GitHub
- URL: https://github.com/kubit-ui/kubit-react-components
- Owner: kubit-ui
- License: apache-2.0
- Created: 2024-03-20T15:12:02.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2026-01-11T08:59:49.000Z (3 months ago)
- Last Synced: 2026-01-11T14:27:36.718Z (3 months ago)
- Topics: accesibility, components, components-library, components-react, design-pattern, design-system, javascript, react, storybook, typescript, wcag
- Language: TypeScript
- Homepage: https://www.kubit-ui.com/
- Size: 8.78 MB
- Stars: 31
- Watchers: 3
- Forks: 2
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
- Security: SECURITY.md
Awesome Lists containing this project
README
---
# Getting Started
## Installation
To install the package, run the following command:
### npm
```bash
npm install @kubit-ui-web/react-components
```
### yarn
```bash
yarn add @kubit-ui-web/react-components
```
This will install the package and its dependencies. Now you can import the components and use them in your application.
## Usage
To use the components, import them from the package and use them in your application.
```tsx
import { Button, KubitProvider } from '@kubit-ui-web/react-components';
import React from 'react';
const App = () => {
return (
Click me
);
};
export default App;
```
This will render the button with the default styles and functionality.
> Note: The `KubitProvider` is required to use the components. It provides the theme and other context to the components.
You can foud more information about change the theme and other options in the [Customize theme](https://kubit-ui.com)
## Documentation
You can find the documentation for the web components in the [Kubit UI website](https://kubit-ui.com)
## Storybook
To run the storybook, first of all clone the repository and install the dependencies. Then run the following command:
```bash
npm run storybook
yarn storybook
```
This will start the storybook server and you can see the components in action.
## Tests
To run the tests, you can use the following command:
```bash
npm run test
yarn test
```
This will run the tests and show the results in the terminal.
## Contributing
We are open to contributions. If you want to contribute to the project, please follow the steps below:
### Development Workflow
1. **Fork the Repository**: Click the "Fork" button in the upper right corner of the repository's page on GitHub. This will create a copy of the repository in your account.
2. **Clone the Repository**: Use `git clone` to clone the repository to your local machine.
```sh
git clone https://github.com/your-username/kubit-react-components.git
```
3. **Create a Branch**: Use proper branch naming conventions for automatic version detection.
```sh
git checkout -b /
```
4. **Make Changes**: Make any necessary changes to the codebase and **test** the changes thoroughly.
5. **Commit Changes**: Use conventional commit messages when possible.
```sh
git commit -m "feat: add new component feature"
```
6. **Push Changes**: Use `git push` to push your changes to your forked repository.
```sh
git push origin
```
7. **Open a Pull Request**: Go to the original repository on GitHub and click the "New pull request" button. Fill out the form with details about your changes and submit the pull request.
### Branch Naming & Automatic Publishing
This repository uses an **automatic publishing system** that determines the version bump based on your branch name and PR content. When your PR is merged, the package will be automatically published to NPM.
#### Branch Naming Patterns
Use these branch prefixes to ensure automatic publishing works correctly:
| Branch Pattern | Version Bump | Example | Description |
|----------------|--------------|---------|-------------|
| `feat/` or `feature/` | **MINOR** | `feat/add-tooltip` | New features or enhancements |
| `fix/` or `bugfix/` | **PATCH** | `fix/button-hover-state` | Bug fixes |
| `break/` or `breaking/` | **MAJOR** | `break/remove-old-api` | Breaking changes |
| `hotfix/` | **PATCH** | `hotfix/critical-security-fix` | Urgent fixes |
| `chore/` | **PATCH** | `chore/update-dependencies` | Maintenance tasks |
#### Advanced Version Detection
The system also analyzes your **PR title** and **description** for more precise version detection:
##### MAJOR (Breaking Changes)
- `BREAKING CHANGE:` in PR description
- `!` in PR title (e.g., `feat!: redesign button API`)
- `[breaking]` tag in PR title
- Conventional commits with `!` (e.g., `feat(api)!: change interface`)
##### MINOR (New Features)
- PR titles starting with `feat:` or `feature:`
- `[feature]` tag in PR title
- Conventional commits like `feat(ui): add dark mode`
##### PATCH (Bug Fixes & Others)
- PR titles starting with `fix:` or `bugfix:`
- All other changes (default behavior)
- Conventional commits like `fix(button): hover state`
#### Examples
**Adding a new feature:**
```sh
git checkout -b feat/dark-mode-support
# Make your changes
git commit -m "feat(theme): add dark mode support for all components"
# Create PR with title: "feat(theme): add dark mode support"
# Result: MINOR version bump (e.g., 1.0.0 → 1.1.0)
```
**Fixing a bug:**
```sh
git checkout -b fix/button-accessibility
# Make your changes
git commit -m "fix(button): improve keyboard navigation"
# Create PR with title: "fix(button): improve keyboard navigation"
# Result: PATCH version bump (e.g., 1.0.0 → 1.0.1)
```
**Breaking changes:**
```sh
git checkout -b break/remove-deprecated-props
# Make your changes
git commit -m "feat!: remove deprecated size prop from Button"
# Create PR with title: "feat!: remove deprecated size prop"
# PR description: "BREAKING CHANGE: The 'size' prop has been removed..."
# Result: MAJOR version bump (e.g., 1.0.0 → 2.0.0)
```
### Quality Assurance
Before publishing, the system automatically runs:
- ✅ **Linting** - Code style validation
- ✅ **Type Checking** - TypeScript validation
- ✅ **Tests** - Full test suite execution
- ✅ **Build** - Package compilation
- ✅ **Integration Tests** - Component functionality validation
### Publishing Process
When your PR is merged:
1. **Automatic Analysis** - System analyzes branch name, PR title, and description
2. **Version Calculation** - Determines MAJOR/MINOR/PATCH version bump
3. **Quality Checks** - Runs all tests and validations
4. **NPM Publication** - Publishes to NPM with appropriate version
5. **GitHub Release** - Creates GitHub release with changelog
6. **Notifications** - Posts success/failure status in PR comments
### Manual Override
If you need to override the automatic version detection, you can:
1. Use explicit markers in your PR description:
```
BREAKING CHANGE: This removes the old authentication API
```
2. Use conventional commit format in PR title:
```
feat!: redesign component API structure
```
3. Add tags to PR title:
```
[breaking] Update component props interface
```
### Testing Your Changes
Before submitting a PR, make sure to:
```bash
# Install dependencies
yarn install
# Run linter
yarn lint
# Run type checking
yarn type-check
# Run tests
yarn test
# Build the package
yarn build
```
### Getting Help
If you have questions about contributing or the automatic publishing system:
- Check existing [GitHub Issues](https://github.com/kubit-ui/kubit-react-components/issues)
- Review [GitHub Discussions](https://github.com/kubit-ui/kubit-react-components/discussions)
- Read the full `CONTRIBUTING.md` file
Once your pull request has been submitted, a maintainer will review your changes and provide feedback. If everything looks good, your pull request will be merged and your changes will be automatically published to NPM!