Architecturally opinionated. Visually unlimited.
A new kind of Angular UI library: enforced accessibility, signal-native architecture, and absolute visual freedom through a modern token system.
Frakton NG is a next-generation Angular UI library that separates what matters: enforced accessibility and modern architecture, with complete visual freedom. Built with Angular 21+ signals, standalone components, and a comprehensive design token system.
- 📦 Bundle Size: < 1mb unpacked and < 150kb gzipped
- 🧩 Components: 25+ production-ready
- 🚀 Zero Dependencies: Only Angular required
See the docs & interactive demos →
Unlike traditional UI libraries, Frakton NG is opinionated about the right things:
- ✅ Accessibility-first: Runtime ARIA validation, semantic color descriptions, WCAG compliance
- ✅ Signal-native: Built entirely with Angular signals for optimal reactivity
- ✅ Modern patterns: Standalone components, typed forms, new control flow syntax
- ✅ Type safety: Comprehensive TypeScript coverage with intelligent inference
- Visual design: All components use design tokens so you can customize every aspect of your product.
- Color system: Semantic colors OR custom hex values with automatic contrast
- Theming: Multi-theme support with runtime token inheritance
- Layout: No imposed spacing, sizing, or visual constraints
See the docs & interactive demos →
| Frakton NG | Angular Material |
|---|---|
| ✅ Complete visual freedom - Comprehensive design tokens | ❌ Google's visual opinions - Limited customization |
| ✅ No CSS resets - Plays nice with existing styles | ❌ Global CSS resets - Can conflict with other libraries |
| ✅ Signal-native - Built for Angular's future | |
| ✅ TypeScript inference - Overlay data automatically typed | ❌ Manual typing - No automatic type inference |
| ✅ Modern patterns - Standalone components, new control flow |
| Frakton NG | PrimeNG |
|---|---|
| ✅ Accessibility-first - Runtime validation, semantic descriptions | |
| ✅ Lightweight - Import only what you need | ❌ Heavyweight bundle - Large bundle sizes |
| ✅ Token-based theming - Granular control | |
| ✅ Advanced overlays - Type-safe, theme-inheriting | ❌ Basic overlays - Limited positioning options |
| Frakton NG | Ng-Bootstrap |
|---|---|
| ✅ Complete UI system - Forms, overlays, design tokens | ❌ Bootstrap wrapper - Limited to Bootstrap components |
| ✅ Enterprise features - Advanced positioning, validation | ❌ Basic functionality - Simple Bootstrap ports |
| ✅ No external dependencies - Self-contained | ❌ External dependency - Requires Bootstrap CSS |
| ✅ Modern Angular - Signals, standalone, latest patterns |
npm install frakton-ngAdd to your angular.json:
{
"styles": [
"node_modules/frakton-ng/assets/styles.css",
"node_modules/frakton-ng/assets/themes/light.css"
]
}Available themes:
light.css- Clean, modern light themedark.css- Elegant dark theme- Custom themes - Build your own with design tokens
import {FktButtonComponent} from 'frakton-ng/button';
@Component({
template: `
<fkt-button
text="Save Changes"
color="#FF6B35" <!-- Custom hex color -->
theme="raised"
icon="check"
[loading]="isSaving()"
(click)="save()">
</fkt-button>
`,
imports: [FktButtonComponent],
standalone: true
})
export class AppComponent {
isSaving = signal(false);
}Automatic TypeScript inference for overlay component data - no other Angular UI library offers this:
// Your overlay component uses signals
@Component({...})
export class UserEditDialog {
userId = input.required<string>();
onSave = output<{ name: string, email: string }>();
}
// Overlay service automatically infers ALL types
const ref = overlay.open({
component: UserEditDialog,
data: {
userId: user.id, // ✅ Auto-typed as string
onSave: (userData) => { // ✅ userData auto-typed as {name: string, email: string}
this.updateUser(userData); // TypeScript knows the exact shape
}
}
});No CSS resets means perfect compatibility with existing projects:
<!-- Mix and match with ANY other UI library -->
<mat-toolbar>Angular Material</mat-toolbar>
<p-button>PrimeNG</p-button>
<fkt-button>Frakton NG</fkt-button>
<!-- All work together perfectly - no style conflicts -->Most libraries document accessibility - Frakton NG enforces it:
<!--Throws actual errors for accessibility violations-->
<fkt-button icon="save"/>
<!--❌ Error: "When no text is provided, ariaLabel is required"-->
<fkt-color-picker value="#FF5733"/>
<!--✅ Automatically announces "Bright red-orange" to screen readers-->Built entirely on Angular signals for optimal reactivity:
// Traditional approach (heavy change detection)
export class TraditionalComponent {
@Input() loading = false;
get classes() {
return `btn-${this.loading ? 'loading' : ''}`;
}
}
// Frakton approach (signal-optimized)
export class FraktonComponent {
loading = input(false);
classes = computed(() => `btn-${this.loading() ? 'loading' : ''}`);
// Only recomputes when inputs actually change
}- Design token architecture: Three-tier fallback system (component → global → default)
- Custom color intelligence: Accepts hex colors with automatic contrast calculation
- Theme inheritance: Overlays automatically inherit design tokens from anchor elements
- Zero visual opinions: Every visual aspect is controlled via tokens
- Intelligent positioning: 16 anchor positions with smart viewport-aware repositioning
- Z-index management: Automatic stacking without conflicts
- Focus management: Proper focus trapping and restoration
- Theme inheritance: Child overlays automatically match parent themes
- Memory efficient: Proper cleanup prevents memory leaks
Interactive documentation that goes beyond traditional UI libraries:
- Live Control Playground: Real-time component property editing with instant visual feedback
- Design Token Playground: Interactive token editing to see styling changes immediately
- Code Examples: Auto-generated code snippets for every component configuration
- Angular-Native Documentation: Custom documentation system DX-inspired by Storybook but fully Angular
- Button - Multi-theme with icon support and loading states
- Buttons List - Grouped action buttons with consistent styling
- Badge - Status indicators and labels
- Icon - Complete HeroIcons integration (600+ icons)
- Table - Advanced data tables with sorting and actions
- No Results - Empty state messaging
- Spinner - Loading indicators with size variants
- Autocomplete - Smart search with auto-creation
- Badge Selector - Visual selection interface
- Checkbox - Enhanced checkboxes with validation
- Color Picker - Advanced color selection with semantic intelligence
- Date Picker - Calendar-based date selection
- Input - Enhanced text inputs with formatting
- Select - Dropdown selection with search
- Textarea - Multi-line text input with auto-resize
- Calendar - Standalone calendar with custom behaviors
- Calendar Navigator - Date navigation interface
- Navigator - Generic navigation primitive
- Side Menu - Collapsible navigation menus
- Dialog - Modal dialogs with type-safe data passing
- Drawer - Slide-out panels
- Overlay - Powerful positioning system primitive
- Tooltip - Contextual help and information
| Metric | Frakton NG | Angular Material | PrimeNG |
|---|---|---|---|
| Unpacked Size | <1 mb | ~8.5MB | ~11.4 MB |
| Tree Shaking | ✅ Component-level |
Frakton NG is built for production applications:
- Zero Dependencies: Only Angular core required - no external libraries
- Tree-shakeable: Import only the components you use
- Signal-optimized: Minimal change detection overhead
- CSS-in-JS free: No runtime style generation
- Overlay-efficient: Reuses DOM nodes, proper cleanup
- Memory conscious: Automatic subscription management
- Bundle Efficient: 5x smaller than Material, 9x smaller than PrimeNG
- Custom design systems requiring full visual control
- Accessibility-critical applications (government, healthcare, finance)
- Multi-tenant SaaS with theme customization needs
- Applications adopting Angular's latest patterns (signals, standalone)
- Teams wanting type-safe, reactive UI components
- Projects requiring advanced overlay functionality (dashboards, complex forms)
- Organizations building custom component libraries
- Teams needing token-based theming architecture
- Projects requiring comprehensive documentation integration
Found a bug or want to suggest something?
Check CONTRIBUTING.md or open an issue.
MIT © Samuel Alejandro