dioxus-motion 0.3.3

Animations library for Dioxus.
Documentation
# Contributing to Dioxus Motion

Thank you for your interest in contributing to Dioxus Motion! This document provides guidelines and information for contributors.

## Development Setup

### Prerequisites

- Rust (latest stable version)
- Cargo
- Git

### Local Development

1. Clone the repository:
   ```bash
   git clone https://github.com/wheregmis/dioxus-motion.git
   cd dioxus-motion
   ```

2. Install dependencies:
   ```bash
   cargo build
   ```

3. Run tests:
   ```bash
   cargo test
   ```

4. Run clippy checks:
   ```bash
   cargo clippy --all-features -- -D warnings
   ```

## CI/CD Pipeline

We use GitHub Actions for continuous integration. The CI pipeline runs on every pull request to the main branch and includes:

### Comprehensive CI Checks
- **Compilation Check**: Ensures code compiles with all features
- **Clippy Check**: Enforces Rust coding standards and catches common issues
- **Test Suite**: Runs all unit and integration tests
- **Formatting Check**: Ensures code follows rustfmt standards
- **Security Audit**: Scans for known vulnerabilities
- **Multi-platform Testing**: Tests on Ubuntu, Windows, and macOS
- **Feature Matrix**: Tests all feature combinations (web, desktop, transitions)
- **Documentation Build**: Validates documentation generation

## Code Quality Standards

### Rust Standards
- All code must compile without warnings
- Clippy warnings are treated as errors
- Code must be formatted with `rustfmt`
- All tests must pass

### Commit Guidelines
- Use conventional commit messages
- Keep commits focused and atomic
- Include tests for new features
- Update documentation as needed

### Pull Request Process
1. Fork the repository
2. Create a feature branch
3. Make your changes
4. Add tests for new functionality
5. Ensure all CI checks pass
6. Submit a pull request

## Testing

### Running Tests Locally
```bash
# Run all tests
cargo test

# Run tests with specific features
cargo test --features web
cargo test --features desktop
cargo test --features transitions

# Run tests with all features
cargo test --all-features
```

### Running Clippy
```bash
# Run clippy with all features
cargo clippy --all-features -- -D warnings

# Run clippy on workspace
cargo clippy --workspace --all-features -- -D warnings
```

## Feature Development

### Adding New Features
1. Create a new branch for your feature
2. Implement the feature with appropriate tests
3. Update documentation
4. Ensure all CI checks pass
5. Submit a pull request

### Feature Flags
The project uses feature flags to control functionality:
- `web`: Web platform support (default)
- `desktop`: Desktop platform support
- `transitions`: Page transition support

## Documentation

### Code Documentation
- All public APIs must be documented
- Use Rust doc comments (`///`)
- Include examples in documentation
- Update README.md for user-facing changes

### Testing Documentation
- Write clear test descriptions
- Include edge case tests
- Test both success and failure scenarios

## Release Process

Releases are automated using `release-plz`:
1. Changes are merged to main
2. `release-plz` creates a PR with version bumps
3. After review and merge, `release-plz` publishes to crates.io

## Getting Help

- Open an issue for bugs or feature requests
- Join discussions in GitHub issues
- Check existing documentation

## License

By contributing to Dioxus Motion, you agree that your contributions will be licensed under the MIT License.