Skip to content
Angular Components

Angular Components

Angular Components

PrimitiveKit for Angular provides 39 production-ready standalone components with complete TypeScript support.

Installation

npm install @primitivekit/angular

Quick Start

import { Component } from '@angular/core';
import { CardComponent, ButtonComponent, BadgeComponent } from '@primitivekit/angular';
import '@primitivekit/angular/tokens/tokens.css';

@Component({
  selector: 'app-root',
  standalone: true,
  imports: [CardComponent, ButtonComponent, BadgeComponent],
  template: `
    <pk-card variant="elevated">
      <h2>Welcome to PrimitiveKit</h2>
      <pk-badge variant="solid" color="primary">New</pk-badge>
      <pk-button (click)="handleClick()">
        Click Me
      </pk-button>
    </pk-card>
  `
})
export class AppComponent {
  handleClick() {
    alert('Hello!');
  }
}

Features

  • 39 Components - Complete component library
  • Standalone Components - No NgModule required
  • TypeScript - Full type definitions included
  • 600+ Design Tokens - Comprehensive customization
  • Zero Hardcoded Values - Everything customizable via CSS variables
  • Accessible - WCAG 2.1 AA compliant
  • Tree Shakeable - Import only what you need

Component Categories

Layout Components

  • CardComponent - Flexible container with variants
  • ContainerComponent - Responsive content wrapper
  • GridComponent - Flexible grid system
  • StackComponent - Vertical/horizontal stacking
  • SpaceComponent - Spacing between elements
  • DividerComponent - Visual separator

Form Components

  • ButtonComponent - Interactive button
  • InputComponent - Text input field
  • SelectComponent - Dropdown selection
  • CheckboxComponent - Checkbox input
  • RadioComponent - Radio button
  • SwitchComponent - Toggle switch
  • TextareaComponent - Multi-line text input
  • SliderComponent - Range slider
  • FormComponent - Form wrapper
  • UploadComponent - File upload

Feedback Components

  • AlertComponent - Alert messages
  • BadgeComponent - Status indicators
  • SpinnerComponent - Loading spinner
  • ProgressComponent - Progress bar
  • SkeletonComponent - Loading placeholder

Navigation Components

  • LinkComponent - Navigation link
  • BreadcrumbComponent - Breadcrumb navigation
  • TabsComponent - Tab navigation
  • MenuComponent - Navigation menu
  • StepsComponent - Step indicator
  • PaginationComponent - Page navigation

Overlay Components

  • ModalComponent - Modal dialog
  • DrawerComponent - Side drawer
  • TooltipComponent - Tooltip overlay
  • PopoverComponent - Popover overlay
  • DropdownComponent - Dropdown menu

Data Display Components

  • AvatarComponent - User avatar
  • TagComponent - Tag label
  • TableComponent - Data table
  • CollapseComponent - Collapsible content
  • ImageComponent - Image component
  • EmptyComponent - Empty state
  • TypographyComponent - Text styling

Implementation Status

✅ Production Ready (6 components)

These components have complete feature parity and are production-ready:

  • CardComponent - All variants, hoverable, clickable
  • BadgeComponent - All color schemes, sizes, variants
  • TagComponent - Closable, icons, events
  • AvatarComponent - Image fallback, sizes, shapes
  • DividerComponent - Orientations, variants, labels
  • SpaceComponent - Directions, sizes, alignment, wrap

🚧 In Development (33 components)

These components have structure in place and are being actively developed:

  • All other components listed above

Version

Current version: 0.1.0

Repository

GitHubNPM

Angular-Specific Features

Standalone Components

All components are standalone and don’t require NgModule:

import { Component } from '@angular/core';
import { CardComponent } from '@primitivekit/angular';

@Component({
  selector: 'app-example',
  standalone: true,
  imports: [CardComponent],
  template: `<pk-card>Content</pk-card>`
})
export class ExampleComponent {}

Input Properties

Use Angular’s @Input() decorator pattern:

<pk-card 
  [variant]="'elevated'" 
  [hoverable]="true"
  [clickable]="false">
  Content
</pk-card>

Event Handling

Standard Angular event binding:

<pk-button (click)="handleClick()" (focus)="handleFocus()">
  Click Me
</pk-button>

Template Syntax

Use Angular’s template syntax:

<pk-card *ngIf="showCard" [variant]="cardVariant">
  <ng-content></ng-content>
</pk-card>