A collection of lightweight, reactive Angular utilities built with modern practices. Each library is independently versioned and published to npm for easy integration into your Angular projects.
Track user visits with reactive signals, milestone detection, and localStorage persistence.
npm install @su-labs/visit-trackerFeatures:
- π Track visit counts automatically
- π― Milestone detection (10th, 100th visit)
- πΎ localStorage persistence
- β‘ Reactive signals API
π¨ @su-labs/theme
Comprehensive theme management with dark mode, system preferences, and CSS variables.
npm install @su-labs/themeFeatures:
- π Light, dark, contrast themes
- π₯οΈ System preference detection
- π¨ CSS custom properties
- πΎ Persistent user preference
Beautiful toast notifications with multiple positions, icons, and auto-dismiss.
npm install @su-labs/notificationsFeatures:
- π― 6 position options
- π¨ Multiple notification types
- πΌοΈ Custom icons support
- β±οΈ Auto-dismiss timer
π @su-labs/scroll-spy
Track active sections on scroll with IntersectionObserver for smooth navigation highlighting.
npm install @su-labs/scroll-spyFeatures:
- π IntersectionObserver API
- β‘ Reactive signals
- π― Active section tracking
- π± Mobile-optimized
π @su-labs/font-size
Accessible font size controls with WCAG compliance and user preference persistence.
npm install @su-labs/font-sizeFeatures:
- βΏ WCAG 2.1 AA compliant
- π¨ CSS variables integration
- πΎ Persistent preferences
- π Multiple size presets
- β Angular 21+ - Latest features and optimizations
- β Signals - Reactive, performant state management
- β Standalone - No NgModules required
- β TypeScript - Full type safety
- π¦ Zero Dependencies - Lightweight bundles
- π§ͺ Well Tested - Comprehensive test coverage
- π Great Docs - Clear examples and API references
- π§ Easy to Use - Simple, intuitive APIs
- π― Battle Tested - Used in real-world applications
- π Type Safe - Full TypeScript support
- β‘ Performant - Optimized for speed
- π Cross-Browser - Works everywhere
npm install @su-labs/theme// app.config.ts
import { provideAppInitializer, inject } from '@angular/core';
import { SuThemeService } from '@su-labs/theme';
export const appConfig = {
providers: [
provideAppInitializer(() => {
inject(SuThemeService).init();
}),
],
};import { Component, inject } from '@angular/core';
import { SuThemeService } from '@su-labs/theme';
@Component({
template: `<button (click)="themeService.setTheme('dark')">Dark Mode</button>`
})
export class AppComponent {
themeService = inject(SuThemeService);
}Each library has comprehensive documentation including:
- π― Quick Start - Get up and running in minutes
- π API Reference - Complete method and type documentation
- π‘ Examples - Real-world usage examples
- π§ Troubleshooting - Common issues and solutions
- βΏ Accessibility - WCAG compliance guidelines
Visit individual library READMEs for detailed documentation.
This is a monorepo workspace managed with Angular CLI.
settings-utils-lib/
βββ projects/
β βββ su-labs/
β βββ visit-tracker/
β βββ theme/
β βββ notifications/
β βββ scroll-spy/
β βββ font-size/
βββ dist/ # Build output
βββ package.json # Root dependencies
βββ angular.json # Workspace configuration
npm run build:allnpm run build:visit-tracker
npm run build:theme
npm run build:notifications
npm run build:scroll-spy
npm run build:font-sizenpm testContributions are welcome! Here's how you can help:
Found a bug or have a feature request?
- Check existing issues
- Create a new issue with a clear description
- Include code examples and reproduction steps
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes
- Write/update tests
- Commit your changes (
git commit -m 'Add amazing feature') - Push to your branch (
git push origin feature/amazing-feature) - Open a Pull Request
- β Write TypeScript with strict mode
- β Follow Angular style guide
- β Include unit tests
- β Update documentation
- β Use conventional commits
Each library is independently versioned and published to npm.
All libraries follow Angular's versioning:
- Major version matches Angular major version (e.g., v21.x.x for Angular 21)
- Minor version for new features
- Patch version for bug fixes
# 1. Update version in package.json
cd projects/su-labs/library-name
# 2. Update CHANGELOG.md
# 3. Build from root
cd ../../..
npm run build:library-name
# 4. Publish
cd dist/su-labs/library-name
npm publish --access publicAll libraries support modern browsers:
| Browser | Version |
|---|---|
| Chrome | β₯ 90 |
| Firefox | β₯ 88 |
| Safari | β₯ 14 |
| Edge | β₯ 90 |
MIT License Β© 2025 Yevheniy Alekseyev
See LICENSE file for details.
Yevheniy Alekseyev
- π§ Email: [email protected]
- π GitHub: @Greezaaa
- π¦ NPM: @su-labs
- π Bug Reports: GitHub Issues
- π‘ Feature Requests: GitHub Discussions
- β Show Support: Star on GitHub
- π§ Contact: [email protected]
Thanks to:
- The Angular team for the amazing framework
- The open-source community for inspiration
- All contributors and users of these libraries
Built with β€οΈ using Angular