@kubit-ui-web/react-components
Version:
Kubit React Components is a customizable, accessible library of React web components, designed to enhance your application's user experience
275 lines (189 loc) • 7.68 kB
Markdown
<p align="center">
<a href="https://kubit-ui.com">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="./assets/banner_kubit_readme.png">
<img src="./assets/banner_kubit_readme.png" width="70%">
</picture>
</a>
</p>
<div align='center'>
<a href='#'>
<img src='./assets/version.png' width="150px">
</a>
<a href='#'>
<img src='./assets/license.png' width="230px">
</a>
</div>
<br />
---
<br />
# 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 (
<KubitProvider>
<Button variant="PRIMARY" size="MEDIUM">
Click me
</Button>
</KubitProvider>
);
};
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 <branch-type>/<branch-name>
```
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 <branch-name>
```
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!