{"version":3,"file":"mayvio-ui-angular-toast.mjs","sources":["../../src/toast/toast.service.ts","../../src/toast/toast.component.ts","../../src/toast/mayvio-ui-angular-toast.ts"],"sourcesContent":["import { Injectable, signal } from '@angular/core';\n\nexport interface ToastItem {\n  id: string;\n  title?: string;\n  message: string;\n  type: 'success' | 'error' | 'warning' | 'info';\n  duration: number;\n}\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class ToastService {\n  readonly toasts = signal<ToastItem[]>([]);\n\n  show(message: string, title?: string, type: ToastItem['type'] = 'info', duration = 3000): string {\n    const id = Math.random().toString(36).substring(2, 9);\n    const newToast: ToastItem = { id, message, title, type, duration };\n\n    this.toasts.update((current) => [...current, newToast]);\n\n    if (duration > 0) {\n      setTimeout(() => {\n        this.dismiss(id);\n      }, duration);\n    }\n\n    return id;\n  }\n\n  success(message: string, title?: string, duration?: number): string {\n    return this.show(message, title, 'success', duration);\n  }\n\n  error(message: string, title?: string, duration?: number): string {\n    return this.show(message, title, 'error', duration);\n  }\n\n  warning(message: string, title?: string, duration?: number): string {\n    return this.show(message, title, 'warning', duration);\n  }\n\n  info(message: string, title?: string, duration?: number): string {\n    return this.show(message, title, 'info', duration);\n  }\n\n  dismiss(id: string): void {\n    this.toasts.update((current) => current.filter((t) => t.id !== id));\n  }\n}\n","import { Component, Input, ChangeDetectionStrategy, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ToastService } from './toast.service';\n\n@Component({\n  selector: 'mv-toast-container',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <div class=\"mv-toast-container\" [class]=\"containerClass()\">\n      <div\n        *ngFor=\"let item of service.toasts()\"\n        [class]=\"'mv-toast mv-toast--' + item.type\"\n        role=\"alert\"\n        aria-live=\"assertive\"\n        aria-atomic=\"true\"\n      >\n        <div class=\"mv-toast__content\">\n          <div *ngIf=\"item.title\" class=\"mv-toast__title\">{{ item.title }}</div>\n          <div class=\"mv-toast__message\">{{ item.message }}</div>\n        </div>\n        <button\n          type=\"button\"\n          class=\"mv-toast__close\"\n          (click)=\"service.dismiss(item.id)\"\n          aria-label=\"Dismiss toast\"\n        >\n          ✕\n        </button>\n      </div>\n    </div>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ToastComponent {\n  @Input() placement: 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left' = 'top-right';\n\n  readonly service = inject(ToastService);\n\n  containerClass(): string {\n    return `mv-toast-container--${this.placement}`;\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}