Prism Docs

Switch

A selector component for switching between two states (On/Off).

Basic Usage

import { Component, signal } from '@angular/core';
import { PrismSwitchComponent } from '@devynelogic/prism-core';

@Component({
  selector: 'app-switch-example',
  imports: [PrismSwitchComponent],
  template: '<prism-switch [(checked)]="checked" />'
})
export class SwitchExampleComponent {
  checked = signal(false);
}

Sizes

<prism-switch [(checked)]="checked" />
<prism-switch [(checked)]="checked" size="small" />

Text & Icons

<prism-switch 
  [(checked)]="checked" 
  checkedChildren="ON" 
  unCheckedChildren="OFF" 
/>

<prism-switch 
  [(checked)]="checked" 
  [checkedChildren]="checkIcon" 
  [unCheckedChildren]="closeIcon" 
/>

<ng-template #checkIcon><i class="ri-check-line"></i></ng-template>
<ng-template #closeIcon><i class="ri-close-line"></i></ng-template>

Interactive Loading

User Status: Deactivated

Click the switch to simulate a 2s API call.

export class MyComponent {
  isLoading = signal(false);
  isAccountActive = signal(false);

  onAccountToggle() {
    this.isLoading.set(true);
    // Simulate API call
    setTimeout(() => {
      this.isAccountActive.update(v => !v);
      this.isLoading.set(false);
    }, 2000);
  }
}

States

<prism-switch [loading]="true" [checked]="true" />
<prism-switch [disabled]="true" [checked]="false" />
NameTypeDefaultDescription
checkedmodel<boolean>falseTwo-way binding for state.
checkedChildrenstring | TemplateRefnullContent when ON.
unCheckedChildrenstring | TemplateRefnullContent when OFF.
loadingbooleanfalseShow loading spinner.
disabledbooleanfalseDisable interaction.
size'default' | 'small''default'Size of the switch.