dga-ui-lib
Version:
A dga/ui-inspired Angular component library with full developer ownership
116 lines (83 loc) • 2.94 kB
Markdown
# DGA UI Library
A modern, accessible Angular component library inspired by dga/ui philosophy. Built with developer ownership, customizability, and zero vendor lock-in in mind.
## Philosophy
Unlike traditional component libraries, DGA UI Library gives you **ownership** of your components:
- 🎯 **Copy-paste friendly** - Components are added directly to your project
- 🎨 **Fully customizable** - Modify styles, behavior, and structure as needed
- ♿ **Accessibility-first** - WCAG 2.1 AA compliant primitives
- 🚀 **Zero vendor lock-in** - No runtime dependencies on our library
- 📦 **Bootstrap utilities** - Leverages Bootstrap's utility system
- 🔧 **TypeScript** - Full type safety and IntelliSense support
## Installation
Install the library and its peer dependencies:
```bash
npm install dga-ui-lib bootstrap clsx class-variance-authority
```
Or use the automatic setup:
```bash
ng add dga-ui-lib
```
## Adding Components
Add individual components to your project:
```bash
npx dga-ui-lib add button
```
This copies the component files directly to your project at `src/app/components/` (configurable).
## Usage
After adding a component, use it in your templates:
```html
<!-- Basic usage -->
<app-button>Click me</app-button>
<!-- With variants -->
<app-button variant="secondary" size="lg">
Large secondary button
</app-button>
<!-- With custom classes -->
<app-button additionalClasses="my-custom-class">
Custom styled button
</app-button>
```
## Customization
Since components are copied to your project, you can:
1. **Modify styles** - Edit the `.scss` files directly
2. **Add new variants** - Extend the `buttonVariants` configuration
3. **Change behavior** - Modify the component logic
4. **Add features** - Extend components with your own functionality
### Example: Custom Button Variant
```typescript
// In your copied button.component.ts
const buttonVariants = cva(
// ... base classes
{
variants: {
variant: {
default: '...',
secondary: '...',
// Add your custom variant
gradient: 'bg-gradient-to-r from-purple-500 to-pink-500 text-white'
}
}
}
);
```
## Available Components
- [x] **Button** - Flexible button component with multiple variants
- [ ] **Input** - Coming soon
- [ ] **Card** - Coming soon
- [ ] **Dialog** - Coming soon
## Development
This library follows modern Angular practices:
- ✅ Standalone components
- ✅ Signal-based reactivity (when available)
- ✅ OnPush change detection
- ✅ Strict TypeScript configuration
- ✅ Accessibility testing
- ✅ Unit tests included
## Contributing
1. Fork the repository
2. Create your feature branch
3. Add tests for your changes
4. Ensure accessibility compliance
5. Submit a pull request
## License
MIT License - see LICENSE file for details.