sonner
zard/sonnerFreeComponent
@zard publishes no description for this item.
Live preview
live · rendered by the registry
Rendered by @zard on their own page — this is the component running, not a screenshot of it.Install it
npx shadcn@latest add https://www.zardui.com/r/sonner.jsonSource
1import { ChangeDetectionStrategy, Component, computed, input, ViewEncapsulation } from '@angular/core';23import { NgIcon, provideIcons } from '@ng-icons/core';4import { lucideCircleCheck, lucideInfo, lucideLoader2, lucideOctagonX, lucideTriangleAlert } from '@ng-icons/lucide';5import type { ClassValue } from 'clsx';6import { NgxSonnerToaster, type ToasterProps } from 'ngx-sonner';78import { mergeClasses } from '@/shared/utils/merge-classes';910import { sonnerVariants } from './sonner.variants';1112export type ZardSonnerPosition =13 | 'top-left'14 | 'top-center'15 | 'top-right'16 | 'bottom-left'17 | 'bottom-center'18 | 'bottom-right';1920const DEFAULT_STYLE: Record<string, string> = {21 '--normal-bg': 'var(--popover)',22 '--normal-text': 'var(--popover-foreground)',23 '--normal-border': 'var(--border)',24 '--border-radius': 'var(--radius)',25};2627const DEFAULT_TOAST_OPTIONS: ToasterProps['toastOptions'] = {28 classes: {29 toast: 'cn-toast',30 },31};3233@Component({34 selector: 'z-sonner',35 imports: [NgIcon, NgxSonnerToaster],36 template: `37 <ngx-sonner-toaster38 [theme]="theme()"39 [class]="classes()"40 [style]="resolvedStyle()"41 [position]="position()"42 [richColors]="richColors()"43 [expand]="expand()"44 [duration]="duration()"45 [visibleToasts]="visibleToasts()"46 [closeButton]="closeButton()"47 [toastOptions]="resolvedToastOptions()"48 [dir]="dir()"49 >50 <ng-icon loading-icon name="lucideLoader2" class="size-4 [&>svg]:animate-spin" />51 <ng-icon success-icon name="lucideCircleCheck" class="size-4" />52 <ng-icon error-icon name="lucideOctagonX" class="size-4" />53 <ng-icon warning-icon name="lucideTriangleAlert" class="size-4" />54 <ng-icon info-icon name="lucideInfo" class="size-4" />55 </ngx-sonner-toaster>56 `,57 changeDetection: ChangeDetectionStrategy.OnPush,58 encapsulation: ViewEncapsulation.None,59 viewProviders: [provideIcons({ lucideCircleCheck, lucideInfo, lucideLoader2, lucideOctagonX, lucideTriangleAlert })],60 exportAs: 'zSonner',61})62export class ZardSonnerComponent {63 readonly class = input<ClassValue>('');64 readonly theme = input<'light' | 'dark' | 'system'>('system');65 readonly position = input<ZardSonnerPosition>('top-center');66 readonly richColors = input<boolean>(false);67 readonly expand = input<boolean>(false);68 readonly duration = input<number>(4000);69 readonly visibleToasts = input<number>(3);70 readonly closeButton = input<boolean>(false);71// … truncated
What it pulls in
npm packages
Files it writes
More from @zard
All 49 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| accordionaccordion | @zard | Components | Free | no deps · 5 files | |
| alertalert | @zard | Components | Free | no deps · 3 files | |
| alert-dialogalert-dialog | @zard | Components | Free | no deps · 5 files | |
| avataravatar | @zard | Components | Free | no deps · 4 files | |
| badgebadge | @zard | Components | Free | no deps · 3 files | |
| breadcrumbbreadcrumb | @zard | Components | Free | no deps · 4 files | |
| buttonbutton | @zard | Components | Free | no deps · 3 files | |
| button-groupbutton-group | @zard | Components | Free | no deps · 3 files |
