Welcome to Baklava! We're excited that you're interested in contributing. This guide will help you get started with making contributions to our design system.
There are several ways you can contribute to Baklava:
- 🐛 Fix Bugs: Help us squash bugs in the codebase
- ✨ Add Features: Implement new components or enhance existing ones
- 📝 Improve Docs: Make our documentation clearer and more helpful
- 💡 Share Ideas: Suggest improvements to our design system
Found a bug or have a suggestion? Create an issue!
Tips for a great issue:
- Clearly describe what you observed
- Include steps to reproduce (for bugs)
- Add screenshots if relevant
- Use our issue templates
- Share any relevant context or examples
💬 For questions about using Baklava, please use our discussion board.
If you notice a problem in our repository (whether it's in the code or docs) and are able to fix it, follow these steps:
- Fork the repository
- Create your feature branch
- Make your changes
- Submit a pull request
Need help? Check out the GitHub documentation on creating PRs.
We maintain strict code quality standards:
- Run
npm run lint
before submitting your changes - Follow our code style guidelines
- Ensure your code syncs with our current codebase style
- Fix any linting errors before submitting
We maintain 100% code coverage:
- Write unit tests for all new code
- Run
npm test
to check coverage - Review the
coverage
folder for detailed reports - Tests run automatically on commit
- PRs will fail if coverage drops below 100%
Our release process is automated:
- Release versions are generated from commit messages
- Release notes are automatically created
- Follow our specific commit message format
- Each commit should be meaningful and descriptive
We protect our visual consistency:
- Automated visual regression tests run on each PR
- Changes affecting component visuals require design review
- Design team must approve visual changes
- Approved changes become reference for future work
- Non-visual changes skip design review automatically
All components must support Right-to-Left (RTL) languages:
- Use
--bl-text-x-direction
CSS property for transformations - Implement CSS logical properties:
/* ✅ Do this */
margin-inline-start: 1rem;
padding-inline-end: 1rem;
/* ❌ Not this */
margin-left: 1rem;
padding-right: 1rem;
- Use
inset
with logical values for positioning
Every PR must meet these criteria:
- At least one core contributor approval
- Detailed PR description
- All automated checks passing
- Documentation updates if needed
- Test coverage requirements met
- Check our documentation
- Join our discussion board
- Reach out to core team members
Thank you for contributing to Baklava! 🙏